アダムズ式による衆議院小選挙区制選挙区議員定数の配分

参考資料
https://ja.wikipedia.org/wiki/%E8%AD%B0%E5%93%A1%E5%AE%9A%E6%95%B0
https://ja.wikipedia.org/wiki/%E8%A1%86%E8%AD%B0%E9%99%A2%E5%B0%8F%E9%81%B8%E6%8C%99%E5%8C%BA%E5%88%B6%E9%81%B8%E6%8C%99%E5%8C%BA%E4%B8%80%E8%A6%A7
http://oku.edu.mie-u.ac.jp/~okumura/stat/adams.html

Result
>   cat("議員定数:",sum(seatsByadams))
議員定数: 295
>   result
   Prefecture SeatsByadams CurrentSeats Diff
1      北海道           12           12    0
2      青森県            3            4   -1
3      岩手県            3            4   -1
4      宮城県            6            6    0
5      秋田県            3            3    0
6      山形県            3            3    0
7      福島県            5            5    0
8      茨城県            7            7    0
9      栃木県            5            5    0
10     群馬県            5            5    0
11     埼玉県           16           15    1
12     千葉県           14           13    1
13     東京都           29           25    4
14   神奈川県           20           18    2
15     新潟県            5            6   -1
16     富山県            3            3    0
17     石川県            3            3    0
18     福井県            2            2    0
19     山梨県            2            2    0
20     長野県            5            5    0
21     岐阜県            5            5    0
22     静岡県            8            8    0
23     愛知県           16           15    1
24     三重県            4            5   -1
25     滋賀県            4            4    0
26     京都府            6            6    0
27     大阪府           19           19    0
28     兵庫県           12           12    0
29     奈良県            3            4   -1
30   和歌山県            3            3    0
31     鳥取県            2            2    0
32     島根県            2            2    0
33     岡山県            5            5    0
34     広島県            7            7    0
35     山口県            4            4    0
36     徳島県            2            2    0
37     香川県            3            3    0
38     愛媛県            3            4   -1
39     高知県            2            2    0
40     福岡県           11           11    0
41     佐賀県            2            2    0
42     長崎県            3            4   -1
43     熊本県            4            5   -1
44     大分県            3            3    0
45     宮崎県            3            3    0
46   鹿児島県            4            5   -1
47     沖縄県            4            4    0
>   subset(result,result[,4]>0)
   Prefecture SeatsByadams CurrentSeats Diff
11     埼玉県           16           15    1
12     千葉県           14           13    1
13     東京都           29           25    4
14   神奈川県           20           18    2
23     愛知県           16           15    1
>   subset(result,result[,4]<0)
   Prefecture SeatsByadams CurrentSeats Diff
2      青森県            3            4   -1
3      岩手県            3            4   -1
15     新潟県            5            6   -1
24     三重県            4            5   -1
29     奈良県            3            4   -1
38     愛媛県            3            4   -1
42     長崎県            3            4   -1
43     熊本県            4            5   -1
46   鹿児島県            4            5   -1




>   cat("議員定数:",sum(seatsByadams))
議員定数: 289
>   result
   Prefecture SeatsByadams CurrentSeats Diff
1      北海道           12           12    0
2      青森県            3            4   -1
3      岩手県            3            4   -1
4      宮城県            5            6   -1
5      秋田県            3            3    0
6      山形県            3            3    0
7      福島県            5            5    0
8      茨城県            7            7    0
9      栃木県            5            5    0
10     群馬県            5            5    0
11     埼玉県           16           15    1
12     千葉県           13           13    0
13     東京都           28           25    3
14   神奈川県           20           18    2
15     新潟県            5            6   -1
16     富山県            3            3    0
17     石川県            3            3    0
18     福井県            2            2    0
19     山梨県            2            2    0
20     長野県            5            5    0
21     岐阜県            5            5    0
22     静岡県            8            8    0
23     愛知県           16           15    1
24     三重県            4            5   -1
25     滋賀県            3            4   -1
26     京都府            6            6    0
27     大阪府           19           19    0
28     兵庫県           12           12    0
29     奈良県            3            4   -1
30   和歌山県            3            3    0
31     鳥取県            2            2    0
32     島根県            2            2    0
33     岡山県            5            5    0
34     広島県            6            7   -1
35     山口県            3            4   -1
36     徳島県            2            2    0
37     香川県            3            3    0
38     愛媛県            3            4   -1
39     高知県            2            2    0
40     福岡県           11           11    0
41     佐賀県            2            2    0
42     長崎県            3            4   -1
43     熊本県            4            5   -1
44     大分県            3            3    0
45     宮崎県            3            3    0
46   鹿児島県            4            5   -1
47     沖縄県            4            4    0
>   subset(result,result[,4]>0)
   Prefecture SeatsByadams CurrentSeats Diff
11     埼玉県           16           15    1
13     東京都           28           25    3
14   神奈川県           20           18    2
23     愛知県           16           15    1
>   subset(result,result[,4]<0)
   Prefecture SeatsByadams CurrentSeats Diff
2      青森県            3            4   -1
3      岩手県            3            4   -1
4      宮城県            5            6   -1
15     新潟県            5            6   -1
24     三重県            4            5   -1
25     滋賀県            3            4   -1
29     奈良県            3            4   -1
34     広島県            6            7   -1
35     山口県            3            4   -1
38     愛媛県            3            4   -1
42     長崎県            3            4   -1
43     熊本県            4            5   -1
46   鹿児島県            4            5   -1
Script
#データ出所:人口推計 平成26年10月1日現在人口推計(総務省)
#参考資料 https://ja.wikipedia.org/wiki/%E8%AD%B0%E5%93%A1%E5%AE%9A%E6%95%B0
#参考資料 https://ja.wikipedia.org/wiki/%E8%A1%86%E8%AD%B0%E9%99%A2%E5%B0%8F%E9%81%B8%E6%8C%99%E5%8C%BA%E5%88%B6%E9%81%B8%E6%8C%99%E5%8C%BA%E4%B8%80%E8%A6%A7
#『アダムズ式 ある数Xで各区域の人口を割り、商の小数点以下を切り上げて、合計が総定数に等しくなるようなXを見つける。具体的には、各区域人口を順に1/∞, 1, 2, 3,...で割り、得られた数の大きい順に配分して総定数に達するまで続ける。全ての区域に必ず1以上の配分が行われる。最初に1を配分した後、残りをドント式で配分すると言っても同じ結果になる。』(出典: https://ja.wikipedia.org/wiki/%E8%AD%B0%E5%93%A1%E5%AE%9A%E6%95%B0)
prefecture<-c("北海道",	"青森県",	"岩手県",	"宮城県",	"秋田県",	"山形県",	"福島県",	"茨城県",	"栃木県",	"群馬県",	"埼玉県",	"千葉県",	"東京都",	"神奈川県",	"新潟県",	"富山県",	"石川県",	"福井県",	"山梨県",	"長野県",	"岐阜県",	"静岡県",	"愛知県",	"三重県",	"滋賀県",	"京都府",	"大阪府",	"兵庫県",	"奈良県",	"和歌山県",	"鳥取県",	"島根県",	"岡山県",	"広島県",	"山口県",	"徳島県",	"香川県",	"愛媛県",	"高知県",	"福岡県",	"佐賀県",	"長崎県",	"熊本県",	"大分県",	"宮崎県",	"鹿児島県",	"沖縄県")

population<-c(5381,	1318,	1280,	2316,	1034,	1125,	1928,	2881,	1954,	1941,	7143,	6114,	13044,	8967,	2302,	1059,	1146,	780,	830,	2083,	2008,	3651,	7298,	1793,	1397,	2569,	8678,	5468,	1367,	967,	571,	692,	1907,	2801,	1397,	760,	974,	1388,	735,	5046,	831,	1380,	1785,	1163,	1110,	1662,	1411)

dietSeats<-c(	12,	4,	4,	6,	3,	3,	5,	7,	5,	5,	15,	13,	25,	18,	6,	3,	3,	2,	2,	5,	5,	8,	15,	5,	4,	6,	19,	12,	4,	3,	2,	2,	5,	7,	4,	2,	3,	4,	2,	11,	2,	4,	5,	3,	3,	5,	4)

#現行議員定数295人(衆議院小選挙区制選挙区)をアダムス方式で割り振った場合
  x<-sum(population)
  while (sum(ceiling(sum(dietSeats)*population/x)) > sum(dietSeats)) {  x <- x + 1  }
  seatsByadams=ceiling(sum(dietSeats)*population/x)
  result<-data.frame(Prefecture=prefecture ,  SeatsByadams=seatsByadams, CurrentSeats=dietSeats , Diff=seatsByadams-dietSeats)
  cat("議員定数:",sum(seatsByadams))
  result
  subset(result,result[,4]>0)
  subset(result,result[,4]<0)
#現行議員定数295人を6人(小選挙区7増13減)減じた上でアダムス方式で割り振った場合(参考:2016年2月19日衆院予算委員会における安倍首相発言)
  x<-sum(population)
  while (sum(ceiling((sum(dietSeats)-6)*population/x)) > sum(dietSeats)-6) {  x <- x + 1  }
  seatsByadams=ceiling((sum(dietSeats)-6)*population/x)
  result<-data.frame(Prefecture=prefecture ,  SeatsByadams=seatsByadams, CurrentSeats=dietSeats , Diff=seatsByadams-dietSeats)
  cat("議員定数:",sum(seatsByadams))
  result
  subset(result,result[,4]>0)
  subset(result,result[,4]<0)