sapor 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. checksums.yaml +7 -0
  2. data/Area Class Diagram.dia +0 -0
  3. data/Area Class Diagram.png +0 -0
  4. data/Class Diagram.dia +0 -0
  5. data/Class Diagram.png +0 -0
  6. data/Example-Catalonia.md +361 -0
  7. data/Example-Flanders.md +486 -0
  8. data/Example-Greece.md +25 -0
  9. data/Example-Oslo.md +678 -0
  10. data/Example-UnitedKingdom-Referendum.md +132 -0
  11. data/Examples.md +15 -0
  12. data/LICENSE +674 -0
  13. data/README.md +103 -0
  14. data/Rakefile +18 -0
  15. data/Technical Documentation.md +14 -0
  16. data/bin/create_installation_package.sh +49 -0
  17. data/bin/install.sh +45 -0
  18. data/bin/sapor.rb +24 -0
  19. data/bin/sapor.sh +106 -0
  20. data/data/hu/hungary-2014.txt +1680 -0
  21. data/data/hu/hungary_2014_screen_scraper.rb +48 -0
  22. data/data/hu/hungary_2014_to_psv.rb +80 -0
  23. data/data/hu/index-2014.txt +106 -0
  24. data/data/pl/2015-gl-lis-okr.csv +42 -0
  25. data/data/pl/poland_2015_to_psv.rb +79 -0
  26. data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
  27. data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
  28. data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
  29. data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
  30. data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
  31. data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
  32. data/data/uk/united_kingdom_2015.txt +651 -0
  33. data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
  34. data/data/uk/united_kingdom_2017.txt +651 -0
  35. data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
  36. data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
  37. data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
  38. data/lib/sapor.rb +150 -0
  39. data/lib/sapor/binomials_cache.rb +45 -0
  40. data/lib/sapor/combinations_distribution.rb +222 -0
  41. data/lib/sapor/denominators.rb +67 -0
  42. data/lib/sapor/dichotomies.rb +138 -0
  43. data/lib/sapor/dichotomy.rb +164 -0
  44. data/lib/sapor/first_past_the_post.rb +82 -0
  45. data/lib/sapor/largest_remainder.rb +118 -0
  46. data/lib/sapor/log4r_logger.rb +49 -0
  47. data/lib/sapor/log_facade.rb +40 -0
  48. data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
  49. data/lib/sapor/multi_district_proportional.rb +123 -0
  50. data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
  51. data/lib/sapor/number_formatter.rb +45 -0
  52. data/lib/sapor/options.rb +73 -0
  53. data/lib/sapor/poll.rb +286 -0
  54. data/lib/sapor/polychotomy.rb +200 -0
  55. data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
  56. data/lib/sapor/referendum_polychotomy.rb +165 -0
  57. data/lib/sapor/regional_data/area.rb +82 -0
  58. data/lib/sapor/regional_data/austria.rb +84 -0
  59. data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
  60. data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
  61. data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
  62. data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
  63. data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
  64. data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
  65. data/lib/sapor/regional_data/belgium.rb +97 -0
  66. data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
  67. data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
  68. data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
  69. data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
  70. data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
  71. data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
  72. data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
  73. data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
  74. data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
  75. data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
  76. data/lib/sapor/regional_data/catalonia.rb +96 -0
  77. data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
  78. data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
  79. data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
  80. data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
  81. data/lib/sapor/regional_data/denmark.rb +128 -0
  82. data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
  83. data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
  84. data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
  85. data/lib/sapor/regional_data/estonia.rb +88 -0
  86. data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
  87. data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
  88. data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
  89. data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
  90. data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
  91. data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
  92. data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
  93. data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
  94. data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
  95. data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
  96. data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
  97. data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
  98. data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
  99. data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
  100. data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
  101. data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
  102. data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
  103. data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
  104. data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
  105. data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
  106. data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
  107. data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
  108. data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
  109. data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
  110. data/lib/sapor/regional_data/european_union_austria.rb +76 -0
  111. data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
  112. data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
  113. data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
  114. data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
  115. data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
  116. data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
  117. data/lib/sapor/regional_data/european_union_finland.rb +74 -0
  118. data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
  119. data/lib/sapor/regional_data/european_union_france.rb +84 -0
  120. data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
  121. data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
  122. data/lib/sapor/regional_data/european_union_germany.rb +86 -0
  123. data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
  124. data/lib/sapor/regional_data/european_union_greece.rb +77 -0
  125. data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
  126. data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
  127. data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
  128. data/lib/sapor/regional_data/european_union_italy.rb +84 -0
  129. data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
  130. data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
  131. data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
  132. data/lib/sapor/regional_data/european_union_malta.rb +71 -0
  133. data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
  134. data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
  135. data/lib/sapor/regional_data/european_union_poland.rb +84 -0
  136. data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
  137. data/lib/sapor/regional_data/european_union_romania.rb +78 -0
  138. data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
  139. data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
  140. data/lib/sapor/regional_data/european_union_spain.rb +82 -0
  141. data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
  142. data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
  143. data/lib/sapor/regional_data/finland-20150419.psv +212 -0
  144. data/lib/sapor/regional_data/finland.rb +107 -0
  145. data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
  146. data/lib/sapor/regional_data/flanders-2014.psv +96 -0
  147. data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
  148. data/lib/sapor/regional_data/flanders.rb +115 -0
  149. data/lib/sapor/regional_data/france.rb +38 -0
  150. data/lib/sapor/regional_data/greece.rb +92 -0
  151. data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
  152. data/lib/sapor/regional_data/hungary.rb +116 -0
  153. data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
  154. data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
  155. data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
  156. data/lib/sapor/regional_data/iceland.rb +133 -0
  157. data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
  158. data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
  159. data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
  160. data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
  161. data/lib/sapor/regional_data/latvia.rb +112 -0
  162. data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
  163. data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
  164. data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
  165. data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
  166. data/lib/sapor/regional_data/luxembourg.rb +82 -0
  167. data/lib/sapor/regional_data/netherlands.rb +108 -0
  168. data/lib/sapor/regional_data/norway.rb +425 -0
  169. data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
  170. data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
  171. data/lib/sapor/regional_data/poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv +280 -0
  172. data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
  173. data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
  174. data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
  175. data/lib/sapor/regional_data/poland-20151025.psv +403 -0
  176. data/lib/sapor/regional_data/poland.rb +125 -0
  177. data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
  178. data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb +123 -0
  179. data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
  180. data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
  181. data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
  182. data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
  183. data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
  184. data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
  185. data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
  186. data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
  187. data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
  188. data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
  189. data/lib/sapor/regional_data/portugal.rb +101 -0
  190. data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
  191. data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
  192. data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
  193. data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
  194. data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
  195. data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
  196. data/lib/sapor/regional_data/slovakia.rb +81 -0
  197. data/lib/sapor/regional_data/slovenia.rb +114 -0
  198. data/lib/sapor/regional_data/spain-20160626.psv +619 -0
  199. data/lib/sapor/regional_data/spain.rb +136 -0
  200. data/lib/sapor/regional_data/sweden.rb +92 -0
  201. data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
  202. data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
  203. data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
  204. data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
  205. data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
  206. data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
  207. data/lib/sapor/regional_data/united_kingdom.rb +94 -0
  208. data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
  209. data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
  210. data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
  211. data/lib/sapor/regional_data/utopia.rb +66 -0
  212. data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
  213. data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
  214. data/lib/sapor/regional_data/wallonia.rb +112 -0
  215. data/lib/sapor/representatives_polychotomy.rb +338 -0
  216. data/lib/sapor/single_district_proportional.rb +75 -0
  217. data/sapor.gemspec +35 -0
  218. data/spec/integration/area_spec.rb +28 -0
  219. data/spec/integration/poll_spec.rb +112 -0
  220. data/spec/integration/sample.poll +8 -0
  221. data/spec/spec_helper.rb +31 -0
  222. data/spec/unit/area_spec.rb +115 -0
  223. data/spec/unit/austria_spec.rb +76 -0
  224. data/spec/unit/belgium_brussels_spec.rb +58 -0
  225. data/spec/unit/belgium_flanders_spec.rb +62 -0
  226. data/spec/unit/belgium_spec.rb +26 -0
  227. data/spec/unit/belgium_wallonia_spec.rb +65 -0
  228. data/spec/unit/binomials_cache_spec.rb +34 -0
  229. data/spec/unit/catalonia_spec.rb +74 -0
  230. data/spec/unit/combinations_distribution_spec.rb +241 -0
  231. data/spec/unit/denmark_spec.rb +56 -0
  232. data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
  233. data/spec/unit/denmark_with_e_spec.rb +57 -0
  234. data/spec/unit/denmark_with_p_spec.rb +57 -0
  235. data/spec/unit/denominators_spec.rb +40 -0
  236. data/spec/unit/dichotomies_spec.rb +154 -0
  237. data/spec/unit/dichotomy_spec.rb +320 -0
  238. data/spec/unit/estonia_spec.rb +65 -0
  239. data/spec/unit/european_union_27_austria_spec.rb +61 -0
  240. data/spec/unit/european_union_27_croatia_spec.rb +60 -0
  241. data/spec/unit/european_union_27_denmark_spec.rb +62 -0
  242. data/spec/unit/european_union_27_estonia_spec.rb +94 -0
  243. data/spec/unit/european_union_27_finland_spec.rb +75 -0
  244. data/spec/unit/european_union_27_ireland_spec.rb +72 -0
  245. data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
  246. data/spec/unit/european_union_27_italy_spec.rb +69 -0
  247. data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
  248. data/spec/unit/european_union_27_poland_spec.rb +69 -0
  249. data/spec/unit/european_union_27_romania_spec.rb +67 -0
  250. data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
  251. data/spec/unit/european_union_27_spain_spec.rb +130 -0
  252. data/spec/unit/european_union_27_sweden_spec.rb +89 -0
  253. data/spec/unit/european_union_austria_spec.rb +61 -0
  254. data/spec/unit/european_union_bulgaria_spec.rb +97 -0
  255. data/spec/unit/european_union_croatia_spec.rb +59 -0
  256. data/spec/unit/european_union_cyprus_spec.rb +65 -0
  257. data/spec/unit/european_union_czech_republic_spec.rb +125 -0
  258. data/spec/unit/european_union_denmark_spec.rb +61 -0
  259. data/spec/unit/european_union_estonia_spec.rb +93 -0
  260. data/spec/unit/european_union_finland_spec.rb +75 -0
  261. data/spec/unit/european_union_flanders_spec.rb +56 -0
  262. data/spec/unit/european_union_france_2019_spec.rb +73 -0
  263. data/spec/unit/european_union_france_spec.rb +73 -0
  264. data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
  265. data/spec/unit/european_union_germany_spec.rb +90 -0
  266. data/spec/unit/european_union_great_britain_spec.rb +87 -0
  267. data/spec/unit/european_union_greece_spec.rb +148 -0
  268. data/spec/unit/european_union_hungary_spec.rb +57 -0
  269. data/spec/unit/european_union_ireland_spec.rb +72 -0
  270. data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
  271. data/spec/unit/european_union_italy_spec.rb +69 -0
  272. data/spec/unit/european_union_latvia_spec.rb +76 -0
  273. data/spec/unit/european_union_lithuania_spec.rb +68 -0
  274. data/spec/unit/european_union_luxembourg_spec.rb +63 -0
  275. data/spec/unit/european_union_malta_spec.rb +60 -0
  276. data/spec/unit/european_union_netherlands_spec.rb +81 -0
  277. data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
  278. data/spec/unit/european_union_poland_spec.rb +69 -0
  279. data/spec/unit/european_union_portugal_spec.rb +77 -0
  280. data/spec/unit/european_union_romania_spec.rb +67 -0
  281. data/spec/unit/european_union_slovakia_spec.rb +111 -0
  282. data/spec/unit/european_union_slovenia_spec.rb +77 -0
  283. data/spec/unit/european_union_spain_spec.rb +129 -0
  284. data/spec/unit/european_union_sweden_spec.rb +89 -0
  285. data/spec/unit/finland_spec.rb +65 -0
  286. data/spec/unit/finland_with_sin_spec.rb +67 -0
  287. data/spec/unit/first_past_the_post_spec.rb +54 -0
  288. data/spec/unit/flanders_spec.rb +70 -0
  289. data/spec/unit/france_spec.rb +32 -0
  290. data/spec/unit/greece_spec.rb +118 -0
  291. data/spec/unit/hungary_spec.rb +132 -0
  292. data/spec/unit/iceland_spec.rb +57 -0
  293. data/spec/unit/largest_remainder_spec.rb +79 -0
  294. data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
  295. data/spec/unit/latvia_kpv_par_spec.rb +38 -0
  296. data/spec/unit/latvia_kpv_spec.rb +38 -0
  297. data/spec/unit/latvia_spec.rb +60 -0
  298. data/spec/unit/luxembourg_spec.rb +54 -0
  299. data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
  300. data/spec/unit/multi_district_proportional_spec.rb +81 -0
  301. data/spec/unit/netherlands_spec.rb +107 -0
  302. data/spec/unit/norway_spec.rb +64 -0
  303. data/spec/unit/norwegian_municipality_spec.rb +89 -0
  304. data/spec/unit/number_formatter_spec.rb +173 -0
  305. data/spec/unit/poland_spec.rb +62 -0
  306. data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
  307. data/spec/unit/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl_spec.rb +59 -0
  308. data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
  309. data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
  310. data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
  311. data/spec/unit/poll_spec.rb +110 -0
  312. data/spec/unit/portugal_spec.rb +66 -0
  313. data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
  314. data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
  315. data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
  316. data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
  317. data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
  318. data/spec/unit/portugal_without_paf_spec.rb +66 -0
  319. data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
  320. data/spec/unit/referendum_polychotomy_spec.rb +289 -0
  321. data/spec/unit/representatives_polychotomy_spec.rb +332 -0
  322. data/spec/unit/slovakia_spec.rb +99 -0
  323. data/spec/unit/slovenia_spec.rb +80 -0
  324. data/spec/unit/spain_spec.rb +101 -0
  325. data/spec/unit/sweden_20140914_spec.rb +112 -0
  326. data/spec/unit/sweden_spec.rb +113 -0
  327. data/spec/unit/united_kingdom_spec.rb +65 -0
  328. data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
  329. data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
  330. data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
  331. data/spec/unit/wallonia_spec.rb +70 -0
  332. metadata +490 -0
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ module Sapor
21
+ #
22
+ # The regional data for the European Union: Slovakia.
23
+ #
24
+ class EuropeanUnionSlovakia < Area
25
+ include Singleton
26
+
27
+ def area_code
28
+ 'EU[SK]'
29
+ end
30
+
31
+ def coalitions
32
+ COALITIONS
33
+ end
34
+
35
+ def no_of_seats
36
+ NO_OF_SEATS
37
+ end
38
+
39
+ def population_size
40
+ POPULATION_SIZE
41
+ end
42
+
43
+ def seats(simulation)
44
+ electoral_system.project(simulation)
45
+ end
46
+
47
+ private
48
+
49
+ COALITIONS = [['Dobrá voľba (*)', 'VLASŤ (*)'],
50
+ ['Kotleba–Ľudová strana Naše Slovensko (NI)'],
51
+ ['Kresťanskodemokratické hnutie (EPP)', 'MOST–HÍD (EPP)',
52
+ 'OBYČAJNÍ ĽUDIA a nezávislé osobnosti (EPP)',
53
+ 'Strana maďarskej koalície–Magyar Koalíció Pártja (EPP)',
54
+ 'Za ľudí (EPP)'],
55
+ ['NOVA (ECR)', 'Sloboda a Solidarita (ECR)',
56
+ 'Slovenská národná strana (ECR)'],
57
+ ['Progresívne Slovensko–SPOLU–Občianska Demokracia (RE)'],
58
+ ['SME RODINA (ID)'],
59
+ ['SMER–sociálna demokracia (S&D)']].freeze
60
+
61
+ NO_OF_SEATS = 13
62
+
63
+ # Voter turnout on 25 May 2019
64
+ # Source: Web page with the official results of the elections of 25 May
65
+ # 2019, downloaded on 24 June 2019,
66
+ # https://en.wikipedia.org/wiki/2019_European_Parliament_election_in_Slovakia
67
+ POPULATION_SIZE = 1_007_398
68
+
69
+ THRESHOLD = 0.05
70
+
71
+ def electoral_system
72
+ if @electoral_system.nil?
73
+ @electoral_system = LargestRemainder.new(NO_OF_SEATS,
74
+ HagenbachBischoffQuota,
75
+ THRESHOLD,
76
+ false, 0, false)
77
+ end
78
+ @electoral_system
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,85 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ module Sapor
21
+ #
22
+ # The regional data for the European Union: Slovenia.
23
+ #
24
+ class EuropeanUnionSlovenia < Area
25
+ include Singleton
26
+
27
+ def area_code
28
+ 'EU[SI]'
29
+ end
30
+
31
+ def coalitions
32
+ COALITIONS
33
+ end
34
+
35
+ def no_of_seats
36
+ NO_OF_SEATS
37
+ end
38
+
39
+ def population_size
40
+ POPULATION_SIZE
41
+ end
42
+
43
+ def seats(simulation)
44
+ electoral_system.project(simulation)
45
+ end
46
+
47
+ private
48
+
49
+ COALITIONS = [['Demokratična stranka upokojencev Slovenije (RE)',
50
+ 'Državljanska lista (RE)',
51
+ 'Lista Marjana Šarca (RE)',
52
+ 'Stranka Alenke Bratušek (RE)',
53
+ 'Stranka modernega centra (RE)'],
54
+ ['Glas za otroke in družine (*)',
55
+ 'Glas za otroke in družine–Nova ljudska stranka Slovenije' \
56
+ ' (*)',
57
+ 'Nova ljudska stranka Slovenije (*)',
58
+ 'Pozitivna Slovenija (*)'],
59
+ ['Levica (GUE/NGL)'],
60
+ ['Nova Slovenija–Krščanski demokrati (EPP)',
61
+ 'Slovenska demokratska stranka (EPP)',
62
+ 'Slovenska ljudska stranka (EPP)'],
63
+ ['Slovenska nacionalna stranka (NI)'],
64
+ ['Socialni demokrati (S&D)']].freeze
65
+
66
+ NO_OF_SEATS = 8
67
+
68
+ # Voter turnout on 26 May 2019
69
+ # Source: Web page with the official results of the elections of 26 May
70
+ # 2019, downloaded on 24 June 2019,
71
+ # https://en.wikipedia.org/wiki/2019_European_Parliament_election_in_Slovenia#Results
72
+ POPULATION_SIZE = 471_525
73
+
74
+ THRESHOLD = 0.05
75
+
76
+ def electoral_system
77
+ if @electoral_system.nil?
78
+ @electoral_system = SingleDistrictProportional.new(NO_OF_SEATS,
79
+ DhondtDenominators,
80
+ THRESHOLD)
81
+ end
82
+ @electoral_system
83
+ end
84
+ end
85
+ end
@@ -0,0 +1,82 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ module Sapor
21
+ #
22
+ # The regional data for the European Union: Spain.
23
+ #
24
+ class EuropeanUnionSpain < Area
25
+ include Singleton
26
+
27
+ def area_code
28
+ 'EU[ES]'
29
+ end
30
+
31
+ def coalitions
32
+ COALITIONS
33
+ end
34
+
35
+ def no_of_seats
36
+ NO_OF_SEATS
37
+ end
38
+
39
+ def population_size
40
+ POPULATION_SIZE
41
+ end
42
+
43
+ def seats(simulation)
44
+ electoral_system.project(simulation)
45
+ end
46
+
47
+ private
48
+
49
+ COALITIONS = [['Ahora Repúblicas (Greens/EFA)',
50
+ 'Bloque Nacionalista Galego–Nós Candidatura Galega (Greens/EFA)',
51
+ 'Coalició Compromís (Greens/EFA)',
52
+ 'Esquerra Republicana de Catalunya–Catalunya Sí (Greens/EFA)',
53
+ 'Primavera Europea (Greens/EFA)'],
54
+ ['Ciudadanos–Partido de la Ciudadanía (RE)',
55
+ 'Coalición Canaria–Partido Nacionalista Canario (RE)',
56
+ 'Coalición por Europa (RE)',
57
+ 'Euzko Alderdi Jeltzalea/Partido Nacionalista Vasco (RE)'],
58
+ ['Euskal Herria Bildu (GUE/NGL)',
59
+ 'Partido Animalista Contra el Maltrato Animal (GUE/NGL)',
60
+ 'Unidos Podemos (GUE/NGL)'],
61
+ ['Partido Popular (EPP)'],
62
+ ['Partido Socialista Obrero Español (S&D)'],
63
+ ['Partit Demòcrata Europeu Català (NI)'],
64
+ ['Vox (ECR)']].freeze
65
+
66
+ NO_OF_SEATS = 54
67
+
68
+ # Voter turnout on 26 May 2019
69
+ # Source: Web page with the official results of the elections of 26 May
70
+ # 2019, downloaded on 10 June 2019,
71
+ # https://en.wikipedia.org/wiki/2019_European_Parliament_election_in_Spain
72
+ POPULATION_SIZE = 22_410_049
73
+
74
+ def electoral_system
75
+ if @electoral_system.nil?
76
+ @electoral_system = SingleDistrictProportional.new(NO_OF_SEATS, \
77
+ DhondtDenominators)
78
+ end
79
+ @electoral_system
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,76 @@
1
+ # encoding: utf-8
2
+ #
3
+ # Statistical Analysis of Polling Results (SAPoR)
4
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
5
+ #
6
+ # This file is part of SAPoR.
7
+ #
8
+ # SAPoR is free software: you can redistribute it and/or modify it under the
9
+ # terms of the GNU General Public License as published by the Free Software
10
+ # Foundation, either version 3 of the License, or (at your option) any later
11
+ # version.
12
+ #
13
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
14
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
15
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16
+ #
17
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
18
+ #
19
+
20
+ module Sapor
21
+ #
22
+ # The regional data for the European Union: Sweden.
23
+ #
24
+ class EuropeanUnionSweden < Area
25
+ include Singleton
26
+
27
+ def area_code
28
+ 'EU[SE]'
29
+ end
30
+
31
+ def coalitions
32
+ COALITIONS
33
+ end
34
+
35
+ def no_of_seats
36
+ NO_OF_SEATS
37
+ end
38
+
39
+ def population_size
40
+ POPULATION_SIZE
41
+ end
42
+
43
+ def seats(simulation)
44
+ electoral_system.project(simulation)
45
+ end
46
+
47
+ private
48
+
49
+ COALITIONS = [['Centerpartiet (RE)', 'Liberalerna (RE)'],
50
+ ['Feministiskt initiativ (S&D)',
51
+ 'Sveriges socialdemokratiska arbetareparti (S&D)'],
52
+ ['Kristdemokraterna (EPP)', 'Moderata samlingspartiet (EPP)'],
53
+ ['Miljöpartiet de gröna (Greens/EFA)'],
54
+ ['Sverigedemokraterna (ECR)'],
55
+ ['Vänsterpartiet (GUE/NGL)']].freeze
56
+
57
+ NO_OF_SEATS = 20
58
+
59
+ # Voter turnout on 26 May 2019
60
+ # Source: Web page with the official results of the elections of 26 May
61
+ # 2019, downloaded on 15 June 2019,
62
+ # https://de.wikipedia.org/wiki/Europawahl_in_Schweden_2019
63
+ POPULATION_SIZE = 4_151_470
64
+
65
+ THRESHOLD = 0.04
66
+
67
+ def electoral_system
68
+ if @electoral_system.nil?
69
+ @electoral_system = SingleDistrictProportional.new(
70
+ NO_OF_SEATS, SainteLague14Denominators, THRESHOLD
71
+ )
72
+ end
73
+ @electoral_system
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,224 @@
1
+ # Statistical Analysis of Polling Results (SAPoR)
2
+ # Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
3
+ #
4
+ # This file is part of SAPoR.
5
+ #
6
+ # SAPoR is free software: you can redistribute it and/or modify it under the
7
+ # terms of the GNU General Public License as published by the Free Software
8
+ # Foundation, either version 3 of the License, or (at your option) any later
9
+ # version.
10
+ #
11
+ # SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
12
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
13
+ # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
14
+ #
15
+ # You can find a copy of the GNU General Public License in /doc/gpl.txt
16
+ #
17
+
18
+ # Source: "Eduskuntavaalit 2015". Retrieved on 30 October 2018.
19
+ # URL: https://tulospalvelu.vaalit.fi/E-2015/fi/lasktila.html
20
+
21
+ 01 Helsinki | Kansallinen Kokoomus | 93,392
22
+ 01 Helsinki | Vihreä liitto | 67,806
23
+ 01 Helsinki | Suomen Sosialidemokraattinen Puolue | 55,874
24
+ 01 Helsinki | Perussuomalaiset | 20,292
25
+ 01 Helsinki | Sininen tulevaisuus | 20,292
26
+ 01 Helsinki | Vasemmistoliitto | 35,435
27
+ 01 Helsinki | Suomen Keskusta | 25,947
28
+ 01 Helsinki | Svenska folkpartiet i Finland | 24,645
29
+ 01 Helsinki | Kristillisdemokraatit | 6,407
30
+ 01 Helsinki | Piraattipuolue | 5,119
31
+ 01 Helsinki | Suomen Kommunistinen Puolue | 1,485
32
+ 01 Helsinki | Itsenäisyyspuolue | 1,242
33
+ 01 Helsinki | Muutos 2011 | 480
34
+ 01 Helsinki | Köyhien Asialla | 328
35
+ 01 Helsinki | Kristiina Kreisler | 314
36
+ 01 Helsinki | Suomen Työväenpuolue | 244
37
+ 01 Helsinki | Jani Leinonen | 168
38
+ 01 Helsinki | Kim Sjöström | 114
39
+ 01 Helsinki | Yakup Yilmaz | 93
40
+ 01 Helsinki | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 76
41
+ 01 Helsinki | Ville Punto | 73
42
+ 01 Helsinki | Jyrki Helminen | 38
43
+ 01 Helsinki | Jaakko Katajisto | 12
44
+
45
+ 02 Uusimaa | Kansallinen Kokoomus | 124,754
46
+ 02 Uusimaa | Perussuomalaiset | 46,706
47
+ 02 Uusimaa | Sininen tulevaisuus | 46,706
48
+ 02 Uusimaa | Suomen Sosialidemokraattinen Puolue | 86,462
49
+ 02 Uusimaa | Suomen Keskusta | 59,749
50
+ 02 Uusimaa | Svenska folkpartiet i Finland | 53,232
51
+ 02 Uusimaa | Vihreä liitto | 52,034
52
+ 02 Uusimaa | Vasemmistoliitto | 22,698
53
+ 02 Uusimaa | Kristillisdemokraatit | 13,750
54
+ 02 Uusimaa | Piraattipuolue | 5,893
55
+ 02 Uusimaa | Muutos 2011 | 3,473
56
+ 02 Uusimaa | Itsenäisyyspuolue | 2,131
57
+ 02 Uusimaa | Suomen Kommunistinen Puolue | 1,189
58
+ 02 Uusimaa | Mika Vähäkangas | 522
59
+ 02 Uusimaa | Köyhien Asialla | 295
60
+ 02 Uusimaa | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 262
61
+ 02 Uusimaa | Suomen Työväenpuolue | 174
62
+ 02 Uusimaa | Joni Tikka | 90
63
+
64
+ 03 Varsinais-Suomi | Kansallinen Kokoomus | 55,355
65
+ 03 Varsinais-Suomi | Perussuomalaiset | 25,407
66
+ 03 Varsinais-Suomi | Sininen tulevaisuus | 25,407
67
+ 03 Varsinais-Suomi | Suomen Keskusta | 42,763
68
+ 03 Varsinais-Suomi | Suomen Sosialidemokraattinen Puolue | 40,835
69
+ 03 Varsinais-Suomi | Vasemmistoliitto | 27,001
70
+ 03 Varsinais-Suomi | Vihreä liitto | 22,875
71
+ 03 Varsinais-Suomi | Svenska folkpartiet i Finland | 13,111
72
+ 03 Varsinais-Suomi | Kristillisdemokraatit | 6,319
73
+ 03 Varsinais-Suomi | Piraattipuolue | 2,008
74
+ 03 Varsinais-Suomi | Itsenäisyyspuolue | 963
75
+ 03 Varsinais-Suomi | Suomen Kommunistinen Puolue | 664
76
+ 03 Varsinais-Suomi | Kari Leppäjoki | 268
77
+ 03 Varsinais-Suomi | Suomen Työväenpuolue | 184
78
+ 03 Varsinais-Suomi | Muutos 2011 | 172
79
+ 03 Varsinais-Suomi | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 63
80
+
81
+ 04 Satakunta | Perussuomalaiset | 15,300
82
+ 04 Satakunta | Sininen tulevaisuus | 15,300
83
+ 04 Satakunta | Suomen Sosialidemokraattinen Puolue | 27,631
84
+ 04 Satakunta | Suomen Keskusta | 25,247
85
+ 04 Satakunta | Kansallinen Kokoomus | 18,377
86
+ 04 Satakunta | Vasemmistoliitto | 11,730
87
+ 04 Satakunta | Kristillisdemokraatit | 3,525
88
+ 04 Satakunta | Vihreä liitto | 3,335
89
+ 04 Satakunta | Itsenäisyyspuolue | 436
90
+ 04 Satakunta | Svenska folkpartiet i Finland | 426
91
+ 04 Satakunta | Muutos 2011 | 393
92
+ 04 Satakunta | Piraattipuolue | 388
93
+ 04 Satakunta | Suomen Kommunistinen Puolue | 127
94
+ 04 Satakunta | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 80
95
+ 04 Satakunta | Suomen Työväenpuolue | 39
96
+
97
+ 05 Ahvenanmaa | Åländsk samling | 10,910
98
+ 05 Ahvenanmaa | Liberalerna på Åland | 1,277
99
+
100
+ 06 Häme | Suomen Sosialidemokraattinen Puolue | 44,737
101
+ 06 Häme | Kansallinen Kokoomus | 43,544
102
+ 06 Häme | Perussuomalaiset | 19,769
103
+ 06 Häme | Sininen tulevaisuus | 19,769
104
+ 06 Häme | Suomen Keskusta | 36,020
105
+ 06 Häme | Kristillisdemokraatit | 12,412
106
+ 06 Häme | Vasemmistoliitto | 12,182
107
+ 06 Häme | Vihreä liitto | 10,350
108
+ 06 Häme | Piraattipuolue | 1,658
109
+ 06 Häme | Itsenäisyyspuolue | 742
110
+ 06 Häme | Muutos 2011 | 632
111
+ 06 Häme | Suomen Kommunistinen Puolue | 489
112
+ 06 Häme | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 143
113
+
114
+ 07 Pirkanmaa | Kansallinen Kokoomus | 54,648
115
+ 07 Pirkanmaa | Suomen Sosialidemokraattinen Puolue | 54,220
116
+ 07 Pirkanmaa | Perussuomalaiset | 24,776
117
+ 07 Pirkanmaa | Sininen tulevaisuus | 24,776
118
+ 07 Pirkanmaa | Suomen Keskusta | 46,189
119
+ 07 Pirkanmaa | Vihreä liitto | 28,537
120
+ 07 Pirkanmaa | Vasemmistoliitto | 21,780
121
+ 07 Pirkanmaa | Kristillisdemokraatit | 13,553
122
+ 07 Pirkanmaa | Piraattipuolue | 3,037
123
+ 07 Pirkanmaa | Itsenäisyyspuolue | 2,289
124
+ 07 Pirkanmaa | Pirkanmaan Sitoutumattomat yhteislista | 2,469
125
+ 07 Pirkanmaa | Suomen Kommunistinen Puolue | 1,130
126
+ 07 Pirkanmaa | Muutos 2011 | 486
127
+ 07 Pirkanmaa | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 123
128
+ 07 Pirkanmaa | Suomen Työväenpuolue | 61
129
+
130
+ 08 Kaakkois-Suomi | Suomen Keskusta | 61,794
131
+ 08 Kaakkois-Suomi | Suomen Sosialidemokraattinen Puolue | 54,604
132
+ 08 Kaakkois-Suomi | Perussuomalaiset | 25,854
133
+ 08 Kaakkois-Suomi | Sininen tulevaisuus | 25,854
134
+ 08 Kaakkois-Suomi | Kansallinen Kokoomus | 38,947
135
+ 08 Kaakkois-Suomi | Vihreä liitto | 15,664
136
+ 08 Kaakkois-Suomi | Kristillisdemokraatit | 11,056
137
+ 08 Kaakkois-Suomi | Vasemmistoliitto | 7,336
138
+ 08 Kaakkois-Suomi | Itsenäisyyspuolue | 1,806
139
+ 08 Kaakkois-Suomi | Piraattipuolue | 1,085
140
+ 08 Kaakkois-Suomi | Svenska folkpartiet i Finland | 728
141
+ 08 Kaakkois-Suomi | Suomen Kommunistinen Puolue | 286
142
+ 08 Kaakkois-Suomi | Muutos 2011 | 199
143
+ 08 Kaakkois-Suomi | Valitsijayhdistys | 174
144
+ 08 Kaakkois-Suomi | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 106
145
+ 08 Kaakkois-Suomi | Suomen Työväenpuolue | 53
146
+
147
+ 09 Savo-Karjala | Suomen Keskusta | 70,573
148
+ 09 Savo-Karjala | Perussuomalaiset | 21,348
149
+ 09 Savo-Karjala | Sininen tulevaisuus | 21,348
150
+ 09 Savo-Karjala | Suomen Sosialidemokraattinen Puolue | 34,629
151
+ 09 Savo-Karjala | Kansallinen Kokoomus | 24,980
152
+ 09 Savo-Karjala | Vihreä liitto | 14,599
153
+ 09 Savo-Karjala | Kristillisdemokraatit | 13,578
154
+ 09 Savo-Karjala | Vasemmistoliitto | 12,750
155
+ 09 Savo-Karjala | Piraattipuolue | 1,269
156
+ 09 Savo-Karjala | Itsenäisyyspuolue | 705
157
+ 09 Savo-Karjala | Suomen Kommunistinen Puolue | 639
158
+ 09 Savo-Karjala | Muutos 2011 | 277
159
+ 09 Savo-Karjala | Suomen Työväenpuolue | 130
160
+ 09 Savo-Karjala | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 55
161
+
162
+ 10 Vaasa | Suomen Keskusta | 67,333
163
+ 10 Vaasa | Svenska folkpartiet i Finland | 50,777
164
+ 10 Vaasa | Perussuomalaiset | 19,482
165
+ 10 Vaasa | Sininen tulevaisuus | 19,482
166
+ 10 Vaasa | Kansallinen Kokoomus | 29,195
167
+ 10 Vaasa | Suomen Sosialidemokraattinen Puolue | 29,024
168
+ 10 Vaasa | Kristillisdemokraatit | 14,076
169
+ 10 Vaasa | Vasemmistoliitto | 7,238
170
+ 10 Vaasa | Vihreä liitto | 6,136
171
+ 10 Vaasa | Itsenäisyyspuolue | 1,461
172
+ 10 Vaasa | Piraattipuolue | 933
173
+ 10 Vaasa | Muutos 2011 | 228
174
+ 10 Vaasa | Suomen Kommunistinen Puolue | 200
175
+ 10 Vaasa | Jani Pontus Toivanen | 131
176
+ 10 Vaasa | Suomen Työväenpuolue | 64
177
+ 10 Vaasa | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 57
178
+
179
+ 11 Keski-Suomi | Suomen Keskusta | 40,729
180
+ 11 Keski-Suomi | Perussuomalaiset | 14,571
181
+ 11 Keski-Suomi | Sininen tulevaisuus | 14,571
182
+ 11 Keski-Suomi | Suomen Sosialidemokraattinen Puolue | 28,710
183
+ 11 Keski-Suomi | Kansallinen Kokoomus | 19,776
184
+ 11 Keski-Suomi | Vihreä liitto | 13,599
185
+ 11 Keski-Suomi | Vasemmistoliitto | 10,145
186
+ 11 Keski-Suomi | Kristillisdemokraatit | 6,656
187
+ 11 Keski-Suomi | Piraattipuolue | 1,264
188
+ 11 Keski-Suomi | Suomen Kommunistinen Puolue | 639
189
+ 11 Keski-Suomi | Itsenäisyyspuolue | 379
190
+ 11 Keski-Suomi | Muutos 2011 | 86
191
+ 11 Keski-Suomi | Tero Poikolainen | 61
192
+ 11 Keski-Suomi | Suomen Työväenpuolue STP | 35
193
+ 11 Keski-Suomi | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 31
194
+ 11 Keski-Suomi | Risto Hintikka | 17
195
+
196
+ 12 Oulu | Suomen Keskusta | 106,581
197
+ 12 Oulu | Perussuomalaiset | 20,215
198
+ 12 Oulu | Sininen tulevaisuus | 20,215
199
+ 12 Oulu | Vasemmistoliitto | 29,580
200
+ 12 Oulu | Kansallinen Kokoomus | 27,089
201
+ 12 Oulu | Suomen Sosialidemokraattinen Puolue | 22,433
202
+ 12 Oulu | Vihreä liitto | 15,524
203
+ 12 Oulu | Kristillisdemokraatit | 2,690
204
+ 12 Oulu | Piraattipuolue | 1,614
205
+ 12 Oulu | Svenska folkpartiet i Finland | 1,413
206
+ 12 Oulu | Itsenäisyyspuolue | 1,038
207
+ 12 Oulu | Muutos 2011 | 797
208
+ 12 Oulu | Suomen Kommunistinen Puolue | 396
209
+ 12 Oulu | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 68
210
+
211
+ 13 Lappi | Suomen Keskusta | 43,293
212
+ 13 Lappi | Perussuomalaiset | 8,311
213
+ 13 Lappi | Sininen tulevaisuus | 8,311
214
+ 13 Lappi | Vasemmistoliitto | 13,827
215
+ 13 Lappi | Suomen Sosialidemokraattinen Puolue | 10,943
216
+ 13 Lappi | Kansallinen Kokoomus | 10,155
217
+ 13 Lappi | Vihreä liitto | 2,643
218
+ 13 Lappi | Kristillisdemokraatit | 1,112
219
+ 13 Lappi | Piraattipuolue | 818
220
+ 13 Lappi | Svenska folkpartiet i Finland | 470
221
+ 13 Lappi | Itsenäisyyspuolue | 446
222
+ 13 Lappi | Suomen Kommunistinen Puolue | 285
223
+ 13 Lappi | Muutos 2011 | 219
224
+ 13 Lappi | Kommunistinen Työväenpuolue–Rauhan ja Sosialismin puolesta | 39