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.
- checksums.yaml +7 -0
- data/Area Class Diagram.dia +0 -0
- data/Area Class Diagram.png +0 -0
- data/Class Diagram.dia +0 -0
- data/Class Diagram.png +0 -0
- data/Example-Catalonia.md +361 -0
- data/Example-Flanders.md +486 -0
- data/Example-Greece.md +25 -0
- data/Example-Oslo.md +678 -0
- data/Example-UnitedKingdom-Referendum.md +132 -0
- data/Examples.md +15 -0
- data/LICENSE +674 -0
- data/README.md +103 -0
- data/Rakefile +18 -0
- data/Technical Documentation.md +14 -0
- data/bin/create_installation_package.sh +49 -0
- data/bin/install.sh +45 -0
- data/bin/sapor.rb +24 -0
- data/bin/sapor.sh +106 -0
- data/data/hu/hungary-2014.txt +1680 -0
- data/data/hu/hungary_2014_screen_scraper.rb +48 -0
- data/data/hu/hungary_2014_to_psv.rb +80 -0
- data/data/hu/index-2014.txt +106 -0
- data/data/pl/2015-gl-lis-okr.csv +42 -0
- data/data/pl/poland_2015_to_psv.rb +79 -0
- data/data/pl/poland_2015_to_psv_with_ko_and_rsw.rb +94 -0
- data/data/pl/poland_2015_to_psv_with_ko_konf_kp_l_and_zp.rb +100 -0
- data/data/pl/poland_2015_to_psv_with_ko_sld_and_wi.rb +92 -0
- data/data/pl/poland_2015_to_psv_with_sld.rb +84 -0
- data/data/pl/poland_2015_to_psv_with_sld_and_wi.rb +85 -0
- data/data/uk/inject_ukip_2015_as_brexit_2019_in_2017.rb +54 -0
- data/data/uk/united_kingdom_2015.txt +651 -0
- data/data/uk/united_kingdom_2015_to_psv.rb +104 -0
- data/data/uk/united_kingdom_2017.txt +651 -0
- data/data/uk/united_kingdom_2017_to_psv.rb +104 -0
- data/data/uk/united_kingdom_2017_to_psv_with_brexit_and_chuk.rb +113 -0
- data/data/uk/united_kingdom_2017_to_psv_with_tig.rb +111 -0
- data/lib/sapor.rb +150 -0
- data/lib/sapor/binomials_cache.rb +45 -0
- data/lib/sapor/combinations_distribution.rb +222 -0
- data/lib/sapor/denominators.rb +67 -0
- data/lib/sapor/dichotomies.rb +138 -0
- data/lib/sapor/dichotomy.rb +164 -0
- data/lib/sapor/first_past_the_post.rb +82 -0
- data/lib/sapor/largest_remainder.rb +118 -0
- data/lib/sapor/log4r_logger.rb +49 -0
- data/lib/sapor/log_facade.rb +40 -0
- data/lib/sapor/multi_district_leveled_proportional.rb +64 -0
- data/lib/sapor/multi_district_proportional.rb +123 -0
- data/lib/sapor/multi_district_variable_threshold_proportional.rb +128 -0
- data/lib/sapor/number_formatter.rb +45 -0
- data/lib/sapor/options.rb +73 -0
- data/lib/sapor/poll.rb +286 -0
- data/lib/sapor/polychotomy.rb +200 -0
- data/lib/sapor/pseudorandom_multirange_enumerator.rb +87 -0
- data/lib/sapor/referendum_polychotomy.rb +165 -0
- data/lib/sapor/regional_data/area.rb +82 -0
- data/lib/sapor/regional_data/austria.rb +84 -0
- data/lib/sapor/regional_data/belgium-brussels-2014.psv +46 -0
- data/lib/sapor/regional_data/belgium-brussels-20190526.psv +33 -0
- data/lib/sapor/regional_data/belgium-flanders-2014.psv +80 -0
- data/lib/sapor/regional_data/belgium-flanders-20190526.psv +74 -0
- data/lib/sapor/regional_data/belgium-wallonia-2014.psv +114 -0
- data/lib/sapor/regional_data/belgium-wallonia-20190526.psv +93 -0
- data/lib/sapor/regional_data/belgium.rb +97 -0
- data/lib/sapor/regional_data/belgium_brussels.rb +62 -0
- data/lib/sapor/regional_data/belgium_flanders.rb +64 -0
- data/lib/sapor/regional_data/belgium_wallonia.rb +63 -0
- data/lib/sapor/regional_data/catalonia-2012-2015.psv +100 -0
- data/lib/sapor/regional_data/catalonia-2012.psv +87 -0
- data/lib/sapor/regional_data/catalonia-2015-jxcat.psv +68 -0
- data/lib/sapor/regional_data/catalonia-2015-no-jxsi.psv +68 -0
- data/lib/sapor/regional_data/catalonia-2015.psv +63 -0
- data/lib/sapor/regional_data/catalonia-jxcat.rb +109 -0
- data/lib/sapor/regional_data/catalonia-no-jxsi.rb +96 -0
- data/lib/sapor/regional_data/catalonia.rb +96 -0
- data/lib/sapor/regional_data/denmark-20150618-with-e-and-p.psv +164 -0
- data/lib/sapor/regional_data/denmark-20150618-with-e.psv +153 -0
- data/lib/sapor/regional_data/denmark-20150618-with-p.psv +153 -0
- data/lib/sapor/regional_data/denmark-20150618.psv +142 -0
- data/lib/sapor/regional_data/denmark.rb +128 -0
- data/lib/sapor/regional_data/denmark_with_e.rb +128 -0
- data/lib/sapor/regional_data/denmark_with_e_and_p.rb +128 -0
- data/lib/sapor/regional_data/denmark_with_p.rb +128 -0
- data/lib/sapor/regional_data/estonia.rb +88 -0
- data/lib/sapor/regional_data/european-union-great-britain-20140522-brexit-chuk.psv +172 -0
- data/lib/sapor/regional_data/european-union-great-britain-20140522.psv +146 -0
- data/lib/sapor/regional_data/european-union-great-britain-20190523.psv +141 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-ia-ri-sd.psv +64 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-ia-sd.psv +60 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-ia.psv +56 -0
- data/lib/sapor/regional_data/european-union-ireland-2014-sd.psv +56 -0
- data/lib/sapor/regional_data/european-union-ireland-2014.psv +50 -0
- data/lib/sapor/regional_data/european-union-ireland-20190524-ia.psv +58 -0
- data/lib/sapor/regional_data/european-union-ireland-20190524.psv +52 -0
- data/lib/sapor/regional_data/european_union_27_austria.rb +76 -0
- data/lib/sapor/regional_data/european_union_27_croatia.rb +81 -0
- data/lib/sapor/regional_data/european_union_27_denmark.rb +77 -0
- data/lib/sapor/regional_data/european_union_27_estonia.rb +74 -0
- data/lib/sapor/regional_data/european_union_27_finland.rb +74 -0
- data/lib/sapor/regional_data/european_union_27_ireland.rb +96 -0
- data/lib/sapor/regional_data/european_union_27_ireland_with_ia.rb +97 -0
- data/lib/sapor/regional_data/european_union_27_italy.rb +84 -0
- data/lib/sapor/regional_data/european_union_27_netherlands.rb +81 -0
- data/lib/sapor/regional_data/european_union_27_poland.rb +84 -0
- data/lib/sapor/regional_data/european_union_27_romania.rb +78 -0
- data/lib/sapor/regional_data/european_union_27_slovakia.rb +80 -0
- data/lib/sapor/regional_data/european_union_27_spain.rb +82 -0
- data/lib/sapor/regional_data/european_union_27_sweden.rb +76 -0
- data/lib/sapor/regional_data/european_union_austria.rb +76 -0
- data/lib/sapor/regional_data/european_union_bulgaria.rb +81 -0
- data/lib/sapor/regional_data/european_union_croatia.rb +81 -0
- data/lib/sapor/regional_data/european_union_cyprus.rb +72 -0
- data/lib/sapor/regional_data/european_union_czech_republic.rb +82 -0
- data/lib/sapor/regional_data/european_union_denmark.rb +77 -0
- data/lib/sapor/regional_data/european_union_estonia.rb +74 -0
- data/lib/sapor/regional_data/european_union_finland.rb +74 -0
- data/lib/sapor/regional_data/european_union_flanders.rb +74 -0
- data/lib/sapor/regional_data/european_union_france.rb +84 -0
- data/lib/sapor/regional_data/european_union_france_2019.rb +84 -0
- data/lib/sapor/regional_data/european_union_french_community_of_belgium.rb +73 -0
- data/lib/sapor/regional_data/european_union_germany.rb +86 -0
- data/lib/sapor/regional_data/european_union_great_britain.rb +98 -0
- data/lib/sapor/regional_data/european_union_greece.rb +77 -0
- data/lib/sapor/regional_data/european_union_hungary.rb +76 -0
- data/lib/sapor/regional_data/european_union_ireland.rb +96 -0
- data/lib/sapor/regional_data/european_union_ireland_with_ia.rb +97 -0
- data/lib/sapor/regional_data/european_union_italy.rb +84 -0
- data/lib/sapor/regional_data/european_union_latvia.rb +81 -0
- data/lib/sapor/regional_data/european_union_lithuania.rb +80 -0
- data/lib/sapor/regional_data/european_union_luxembourg.rb +75 -0
- data/lib/sapor/regional_data/european_union_malta.rb +71 -0
- data/lib/sapor/regional_data/european_union_netherlands.rb +81 -0
- data/lib/sapor/regional_data/european_union_northern_ireland.rb +75 -0
- data/lib/sapor/regional_data/european_union_poland.rb +84 -0
- data/lib/sapor/regional_data/european_union_portugal.rb +75 -0
- data/lib/sapor/regional_data/european_union_romania.rb +78 -0
- data/lib/sapor/regional_data/european_union_slovakia.rb +81 -0
- data/lib/sapor/regional_data/european_union_slovenia.rb +85 -0
- data/lib/sapor/regional_data/european_union_spain.rb +82 -0
- data/lib/sapor/regional_data/european_union_sweden.rb +76 -0
- data/lib/sapor/regional_data/finland-20150419-with-sin.psv +224 -0
- data/lib/sapor/regional_data/finland-20150419.psv +212 -0
- data/lib/sapor/regional_data/finland.rb +107 -0
- data/lib/sapor/regional_data/finland_with_sin.rb +107 -0
- data/lib/sapor/regional_data/flanders-2014.psv +96 -0
- data/lib/sapor/regional_data/flanders-20190526.psv +87 -0
- data/lib/sapor/regional_data/flanders.rb +115 -0
- data/lib/sapor/regional_data/france.rb +38 -0
- data/lib/sapor/regional_data/greece.rb +92 -0
- data/lib/sapor/regional_data/hungary-2014.psv +2104 -0
- data/lib/sapor/regional_data/hungary.rb +116 -0
- data/lib/sapor/regional_data/iceland-20161029-midflokkurinn.psv +94 -0
- data/lib/sapor/regional_data/iceland-20161029.psv +88 -0
- data/lib/sapor/regional_data/iceland-20171028.psv +85 -0
- data/lib/sapor/regional_data/iceland.rb +133 -0
- data/lib/sapor/regional_data/latvia-20141004-kpv-p-par.psv +109 -0
- data/lib/sapor/regional_data/latvia-20141004-kpv-par.psv +103 -0
- data/lib/sapor/regional_data/latvia-20141004-kpv.psv +97 -0
- data/lib/sapor/regional_data/latvia-20141004.psv +89 -0
- data/lib/sapor/regional_data/latvia.rb +112 -0
- data/lib/sapor/regional_data/latvia_kpv.rb +112 -0
- data/lib/sapor/regional_data/latvia_kpv_p_par.rb +112 -0
- data/lib/sapor/regional_data/latvia_kpv_par.rb +112 -0
- data/lib/sapor/regional_data/luxembourg-20131020.psv +76 -0
- data/lib/sapor/regional_data/luxembourg.rb +82 -0
- data/lib/sapor/regional_data/netherlands.rb +108 -0
- data/lib/sapor/regional_data/norway.rb +425 -0
- data/lib/sapor/regional_data/norwegian_municipality.rb +68 -0
- data/lib/sapor/regional_data/poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv +321 -0
- 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
- data/lib/sapor/regional_data/poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv +403 -0
- data/lib/sapor/regional_data/poland-20151025-with-sld-and-wi-without-zl.psv +444 -0
- data/lib/sapor/regional_data/poland-20151025-with-sld-without-zl.psv +403 -0
- data/lib/sapor/regional_data/poland-20151025.psv +403 -0
- data/lib/sapor/regional_data/poland.rb +125 -0
- data/lib/sapor/regional_data/poland_with_ko_and_l_without_n_po_r_and_zl.rb +122 -0
- 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
- data/lib/sapor/regional_data/poland_with_ko_sld_and_wi_without_n_po_and_zl.rb +125 -0
- data/lib/sapor/regional_data/poland_with_sld_and_wi_without_zl.rb +126 -0
- data/lib/sapor/regional_data/poland_with_sld_without_zl.rb +126 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-and-ch-without-paf.psv +438 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-and-il-without-paf.psv +438 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-ch-and-il-without-paf.psv +461 -0
- data/lib/sapor/regional_data/portugal-20151004-with-a-without-paf.psv +415 -0
- data/lib/sapor/regional_data/portugal-20151004-with-ch-and-il-without-paf.psv +438 -0
- data/lib/sapor/regional_data/portugal-20151004-without-paf.psv +392 -0
- data/lib/sapor/regional_data/portugal-20151004.psv +370 -0
- data/lib/sapor/regional_data/portugal.rb +101 -0
- data/lib/sapor/regional_data/portugal_with_a_and_ch_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_a_and_il_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_a_ch_and_il_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_a_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_with_ch_and_il_without_paf.rb +92 -0
- data/lib/sapor/regional_data/portugal_without_paf.rb +92 -0
- data/lib/sapor/regional_data/slovakia.rb +81 -0
- data/lib/sapor/regional_data/slovenia.rb +114 -0
- data/lib/sapor/regional_data/spain-20160626.psv +619 -0
- data/lib/sapor/regional_data/spain.rb +136 -0
- data/lib/sapor/regional_data/sweden.rb +92 -0
- data/lib/sapor/regional_data/sweden_20140914.rb +89 -0
- data/lib/sapor/regional_data/united_kingdom-2015.psv +4358 -0
- data/lib/sapor/regional_data/united_kingdom-20170608-brexit-chuk.psv +5154 -0
- data/lib/sapor/regional_data/united_kingdom-20170608-brexit.psv +4521 -0
- data/lib/sapor/regional_data/united_kingdom-20170608-tig.psv +4529 -0
- data/lib/sapor/regional_data/united_kingdom-20170608.psv +3894 -0
- data/lib/sapor/regional_data/united_kingdom.rb +94 -0
- data/lib/sapor/regional_data/united_kingdom_with_brexit.rb +110 -0
- data/lib/sapor/regional_data/united_kingdom_with_brexit_and_chuk.rb +111 -0
- data/lib/sapor/regional_data/united_kingdom_with_tig.rb +111 -0
- data/lib/sapor/regional_data/utopia.rb +66 -0
- data/lib/sapor/regional_data/wallonia-2014.psv +101 -0
- data/lib/sapor/regional_data/wallonia-20190526.psv +88 -0
- data/lib/sapor/regional_data/wallonia.rb +112 -0
- data/lib/sapor/representatives_polychotomy.rb +338 -0
- data/lib/sapor/single_district_proportional.rb +75 -0
- data/sapor.gemspec +35 -0
- data/spec/integration/area_spec.rb +28 -0
- data/spec/integration/poll_spec.rb +112 -0
- data/spec/integration/sample.poll +8 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/unit/area_spec.rb +115 -0
- data/spec/unit/austria_spec.rb +76 -0
- data/spec/unit/belgium_brussels_spec.rb +58 -0
- data/spec/unit/belgium_flanders_spec.rb +62 -0
- data/spec/unit/belgium_spec.rb +26 -0
- data/spec/unit/belgium_wallonia_spec.rb +65 -0
- data/spec/unit/binomials_cache_spec.rb +34 -0
- data/spec/unit/catalonia_spec.rb +74 -0
- data/spec/unit/combinations_distribution_spec.rb +241 -0
- data/spec/unit/denmark_spec.rb +56 -0
- data/spec/unit/denmark_with_e_and_p_spec.rb +58 -0
- data/spec/unit/denmark_with_e_spec.rb +57 -0
- data/spec/unit/denmark_with_p_spec.rb +57 -0
- data/spec/unit/denominators_spec.rb +40 -0
- data/spec/unit/dichotomies_spec.rb +154 -0
- data/spec/unit/dichotomy_spec.rb +320 -0
- data/spec/unit/estonia_spec.rb +65 -0
- data/spec/unit/european_union_27_austria_spec.rb +61 -0
- data/spec/unit/european_union_27_croatia_spec.rb +60 -0
- data/spec/unit/european_union_27_denmark_spec.rb +62 -0
- data/spec/unit/european_union_27_estonia_spec.rb +94 -0
- data/spec/unit/european_union_27_finland_spec.rb +75 -0
- data/spec/unit/european_union_27_ireland_spec.rb +72 -0
- data/spec/unit/european_union_27_ireland_with_ia_spec.rb +74 -0
- data/spec/unit/european_union_27_italy_spec.rb +69 -0
- data/spec/unit/european_union_27_netherlands_spec.rb +81 -0
- data/spec/unit/european_union_27_poland_spec.rb +69 -0
- data/spec/unit/european_union_27_romania_spec.rb +67 -0
- data/spec/unit/european_union_27_slovakia_spec.rb +111 -0
- data/spec/unit/european_union_27_spain_spec.rb +130 -0
- data/spec/unit/european_union_27_sweden_spec.rb +89 -0
- data/spec/unit/european_union_austria_spec.rb +61 -0
- data/spec/unit/european_union_bulgaria_spec.rb +97 -0
- data/spec/unit/european_union_croatia_spec.rb +59 -0
- data/spec/unit/european_union_cyprus_spec.rb +65 -0
- data/spec/unit/european_union_czech_republic_spec.rb +125 -0
- data/spec/unit/european_union_denmark_spec.rb +61 -0
- data/spec/unit/european_union_estonia_spec.rb +93 -0
- data/spec/unit/european_union_finland_spec.rb +75 -0
- data/spec/unit/european_union_flanders_spec.rb +56 -0
- data/spec/unit/european_union_france_2019_spec.rb +73 -0
- data/spec/unit/european_union_france_spec.rb +73 -0
- data/spec/unit/european_union_french_community_of_belgium_spec.rb +61 -0
- data/spec/unit/european_union_germany_spec.rb +90 -0
- data/spec/unit/european_union_great_britain_spec.rb +87 -0
- data/spec/unit/european_union_greece_spec.rb +148 -0
- data/spec/unit/european_union_hungary_spec.rb +57 -0
- data/spec/unit/european_union_ireland_spec.rb +72 -0
- data/spec/unit/european_union_ireland_with_ia_spec.rb +74 -0
- data/spec/unit/european_union_italy_spec.rb +69 -0
- data/spec/unit/european_union_latvia_spec.rb +76 -0
- data/spec/unit/european_union_lithuania_spec.rb +68 -0
- data/spec/unit/european_union_luxembourg_spec.rb +63 -0
- data/spec/unit/european_union_malta_spec.rb +60 -0
- data/spec/unit/european_union_netherlands_spec.rb +81 -0
- data/spec/unit/european_union_northern_ireland_spec.rb +66 -0
- data/spec/unit/european_union_poland_spec.rb +69 -0
- data/spec/unit/european_union_portugal_spec.rb +77 -0
- data/spec/unit/european_union_romania_spec.rb +67 -0
- data/spec/unit/european_union_slovakia_spec.rb +111 -0
- data/spec/unit/european_union_slovenia_spec.rb +77 -0
- data/spec/unit/european_union_spain_spec.rb +129 -0
- data/spec/unit/european_union_sweden_spec.rb +89 -0
- data/spec/unit/finland_spec.rb +65 -0
- data/spec/unit/finland_with_sin_spec.rb +67 -0
- data/spec/unit/first_past_the_post_spec.rb +54 -0
- data/spec/unit/flanders_spec.rb +70 -0
- data/spec/unit/france_spec.rb +32 -0
- data/spec/unit/greece_spec.rb +118 -0
- data/spec/unit/hungary_spec.rb +132 -0
- data/spec/unit/iceland_spec.rb +57 -0
- data/spec/unit/largest_remainder_spec.rb +79 -0
- data/spec/unit/latvia_kpv_p_par_spec.rb +38 -0
- data/spec/unit/latvia_kpv_par_spec.rb +38 -0
- data/spec/unit/latvia_kpv_spec.rb +38 -0
- data/spec/unit/latvia_spec.rb +60 -0
- data/spec/unit/luxembourg_spec.rb +54 -0
- data/spec/unit/multi_district_leveled_proportional_spec.rb +49 -0
- data/spec/unit/multi_district_proportional_spec.rb +81 -0
- data/spec/unit/netherlands_spec.rb +107 -0
- data/spec/unit/norway_spec.rb +64 -0
- data/spec/unit/norwegian_municipality_spec.rb +89 -0
- data/spec/unit/number_formatter_spec.rb +173 -0
- data/spec/unit/poland_spec.rb +62 -0
- data/spec/unit/poland_with_ko_and_l_without_n_po_r_and_zl_spec.rb +60 -0
- 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
- data/spec/unit/poland_with_ko_sld_and_wi_without_n_po_and_zl_spec.rb +62 -0
- data/spec/unit/poland_with_sld_and_wi_without_zl_spec.rb +63 -0
- data/spec/unit/poland_with_sld_without_zl_spec.rb +62 -0
- data/spec/unit/poll_spec.rb +110 -0
- data/spec/unit/portugal_spec.rb +66 -0
- data/spec/unit/portugal_with_a_and_ch_without_paf_spec.rb +68 -0
- data/spec/unit/portugal_with_a_and_il_without_paf_spec.rb +68 -0
- data/spec/unit/portugal_with_a_ch_and_il_without_paf_spec.rb +69 -0
- data/spec/unit/portugal_with_a_without_paf_spec.rb +67 -0
- data/spec/unit/portugal_with_ch_and_il_without_paf_spec.rb +68 -0
- data/spec/unit/portugal_without_paf_spec.rb +66 -0
- data/spec/unit/pseudorandom_multirange_enumerator_spec.rb +82 -0
- data/spec/unit/referendum_polychotomy_spec.rb +289 -0
- data/spec/unit/representatives_polychotomy_spec.rb +332 -0
- data/spec/unit/slovakia_spec.rb +99 -0
- data/spec/unit/slovenia_spec.rb +80 -0
- data/spec/unit/spain_spec.rb +101 -0
- data/spec/unit/sweden_20140914_spec.rb +112 -0
- data/spec/unit/sweden_spec.rb +113 -0
- data/spec/unit/united_kingdom_spec.rb +65 -0
- data/spec/unit/united_kingdom_with_brexit_and_chuk_spec.rb +67 -0
- data/spec/unit/united_kingdom_with_brexit_spec.rb +66 -0
- data/spec/unit/united_kingdom_with_tig_spec.rb +66 -0
- data/spec/unit/wallonia_spec.rb +70 -0
- metadata +490 -0
|
@@ -0,0 +1,142 @@
|
|
|
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: "Resultater - Hele landet - Folketingsvalg torsdag 18. juni 2015 -
|
|
19
|
+
# Danmarks Statistik". Retrieved on 28 December 2018.
|
|
20
|
+
# URL: http://www.dst.dk/valg/Valg1487635/valgopg/valgopgHL.htm
|
|
21
|
+
|
|
22
|
+
# Extended with Nye Borgerlige equal to Det Konservative Folkeparti
|
|
23
|
+
|
|
24
|
+
Københavns Storkreds | Socialdemokraterne | 96,753
|
|
25
|
+
Københavns Storkreds | Radikale Venstre | 40578
|
|
26
|
+
Københavns Storkreds | Det Konservative Folkeparti | 13471
|
|
27
|
+
Københavns Storkreds | Nye Borgerlige | 13471
|
|
28
|
+
Københavns Storkreds | Socialistisk Folkeparti | 28260
|
|
29
|
+
Københavns Storkreds | Liberal Alliance | 37935
|
|
30
|
+
Københavns Storkreds | Kristendemokraterne | 1599
|
|
31
|
+
Københavns Storkreds | Dansk Folkeparti | 49575
|
|
32
|
+
Københavns Storkreds | Venstre | 44721
|
|
33
|
+
Københavns Storkreds | Enhedslisten–De Rød-Grønne | 71140
|
|
34
|
+
Københavns Storkreds | Alternativet | 48475
|
|
35
|
+
|
|
36
|
+
Københavns Omegns Storkreds | Socialdemokraterne | 90361
|
|
37
|
+
Københavns Omegns Storkreds | Radikale Venstre | 16710
|
|
38
|
+
Københavns Omegns Storkreds | Det Konservative Folkeparti | 13840
|
|
39
|
+
Københavns Omegns Storkreds | Nye Borgerlige | 13840
|
|
40
|
+
Københavns Omegns Storkreds | Socialistisk Folkeparti | 14619
|
|
41
|
+
Københavns Omegns Storkreds | Liberal Alliance | 25982
|
|
42
|
+
Københavns Omegns Storkreds | Kristendemokraterne | 1365
|
|
43
|
+
Københavns Omegns Storkreds | Dansk Folkeparti | 62419
|
|
44
|
+
Københavns Omegns Storkreds | Venstre | 46092
|
|
45
|
+
Københavns Omegns Storkreds | Enhedslisten–De Rød-Grønne | 25364
|
|
46
|
+
Københavns Omegns Storkreds | Alternativet | 13575
|
|
47
|
+
|
|
48
|
+
Nordsjællands Storkreds | Socialdemokraterne | 64822
|
|
49
|
+
Nordsjællands Storkreds | Radikale Venstre | 17515
|
|
50
|
+
Nordsjællands Storkreds | Det Konservative Folkeparti | 15123
|
|
51
|
+
Nordsjællands Storkreds | Nye Borgerlige | 15123
|
|
52
|
+
Nordsjællands Storkreds | Socialistisk Folkeparti | 11182
|
|
53
|
+
Nordsjællands Storkreds | Liberal Alliance | 32744
|
|
54
|
+
Nordsjællands Storkreds | Kristendemokraterne | 1680
|
|
55
|
+
Nordsjællands Storkreds | Dansk Folkeparti | 53980
|
|
56
|
+
Nordsjællands Storkreds | Venstre | 59155
|
|
57
|
+
Nordsjællands Storkreds | Enhedslisten–De Rød-Grønne | 18171
|
|
58
|
+
Nordsjællands Storkreds | Alternativet | 12957
|
|
59
|
+
|
|
60
|
+
Bornholms Storkreds | Socialdemokraterne | 8683
|
|
61
|
+
Bornholms Storkreds | Radikale Venstre | 427
|
|
62
|
+
Bornholms Storkreds | Det Konservative Folkeparti | 441
|
|
63
|
+
Bornholms Storkreds | Nye Borgerlige | 441
|
|
64
|
+
Bornholms Storkreds | Socialistisk Folkeparti | 716
|
|
65
|
+
Bornholms Storkreds | Liberal Alliance | 1037
|
|
66
|
+
Bornholms Storkreds | Kristendemokraterne | 749
|
|
67
|
+
Bornholms Storkreds | Dansk Folkeparti | 5168
|
|
68
|
+
Bornholms Storkreds | Venstre | 5257
|
|
69
|
+
Bornholms Storkreds | Enhedslisten–De Rød-Grønne | 2175
|
|
70
|
+
Bornholms Storkreds | Alternativet | 1299
|
|
71
|
+
|
|
72
|
+
Sjællands Storkreds | Socialdemokraterne | 146464
|
|
73
|
+
Sjællands Storkreds | Radikale Venstre | 16906
|
|
74
|
+
Sjællands Storkreds | Det Konservative Folkeparti | 15083
|
|
75
|
+
Sjællands Storkreds | Nye Borgerlige | 15083
|
|
76
|
+
Sjællands Storkreds | Socialistisk Folkeparti | 20575
|
|
77
|
+
Sjællands Storkreds | Liberal Alliance | 32598
|
|
78
|
+
Sjællands Storkreds | Kristendemokraterne | 1996
|
|
79
|
+
Sjællands Storkreds | Dansk Folkeparti | 134195
|
|
80
|
+
Sjællands Storkreds | Venstre | 102818
|
|
81
|
+
Sjællands Storkreds | Enhedslisten–De Rød-Grønne | 35374
|
|
82
|
+
Sjællands Storkreds | Alternativet | 18202
|
|
83
|
+
|
|
84
|
+
Fyns Storkreds | Socialdemokraterne | 90061
|
|
85
|
+
Fyns Storkreds | Radikale Venstre | 10513
|
|
86
|
+
Fyns Storkreds | Det Konservative Folkeparti | 10849
|
|
87
|
+
Fyns Storkreds | Nye Borgerlige | 10849
|
|
88
|
+
Fyns Storkreds | Socialistisk Folkeparti | 13790
|
|
89
|
+
Fyns Storkreds | Liberal Alliance | 20271
|
|
90
|
+
Fyns Storkreds | Kristendemokraterne | 1293
|
|
91
|
+
Fyns Storkreds | Dansk Folkeparti | 67913
|
|
92
|
+
Fyns Storkreds | Venstre | 56673
|
|
93
|
+
Fyns Storkreds | Enhedslisten–De Rød-Grønne | 26575
|
|
94
|
+
Fyns Storkreds | Alternativet | 14165
|
|
95
|
+
|
|
96
|
+
Sydjyllands Storkreds | Socialdemokraterne | 104391
|
|
97
|
+
Sydjyllands Storkreds | Radikale Venstre | 13962
|
|
98
|
+
Sydjyllands Storkreds | Det Konservative Folkeparti | 9625
|
|
99
|
+
Sydjyllands Storkreds | Nye Borgerlige | 9625
|
|
100
|
+
Sydjyllands Storkreds | Socialistisk Folkeparti | 13508
|
|
101
|
+
Sydjyllands Storkreds | Liberal Alliance | 33277
|
|
102
|
+
Sydjyllands Storkreds | Kristendemokraterne | 4792
|
|
103
|
+
Sydjyllands Storkreds | Dansk Folkeparti | 126058
|
|
104
|
+
Sydjyllands Storkreds | Venstre | 104483
|
|
105
|
+
Sydjyllands Storkreds | Enhedslisten–De Rød-Grønne | 22614
|
|
106
|
+
Sydjyllands Storkreds | Alternativet | 11551
|
|
107
|
+
|
|
108
|
+
Østjyllands Storkreds | Socialdemokraterne | 132320
|
|
109
|
+
Østjyllands Storkreds | Radikale Venstre | 23876
|
|
110
|
+
Østjyllands Storkreds | Det Konservative Folkeparti | 13490
|
|
111
|
+
Østjyllands Storkreds | Nye Borgerlige | 13490
|
|
112
|
+
Østjyllands Storkreds | Socialistisk Folkeparti | 21100
|
|
113
|
+
Østjyllands Storkreds | Liberal Alliance | 40101
|
|
114
|
+
Østjyllands Storkreds | Kristendemokraterne | 4627
|
|
115
|
+
Østjyllands Storkreds | Dansk Folkeparti | 91621
|
|
116
|
+
Østjyllands Storkreds | Venstre | 90528
|
|
117
|
+
Østjyllands Storkreds | Enhedslisten–De Rød-Grønne | 35960
|
|
118
|
+
Østjyllands Storkreds | Alternativet | 29587
|
|
119
|
+
|
|
120
|
+
Vestjyllands Storkreds | Socialdemokraterne | 80122
|
|
121
|
+
Vestjyllands Storkreds | Radikale Venstre | 9183
|
|
122
|
+
Vestjyllands Storkreds | Det Konservative Folkeparti | 15928
|
|
123
|
+
Vestjyllands Storkreds | Nye Borgerlige | 15928
|
|
124
|
+
Vestjyllands Storkreds | Socialistisk Folkeparti | 11720
|
|
125
|
+
Vestjyllands Storkreds | Liberal Alliance | 19377
|
|
126
|
+
Vestjyllands Storkreds | Kristendemokraterne | 7646
|
|
127
|
+
Vestjyllands Storkreds | Dansk Folkeparti | 69657
|
|
128
|
+
Vestjyllands Storkreds | Venstre | 89537
|
|
129
|
+
Vestjyllands Storkreds | Enhedslisten–De Rød-Grønne | 14531
|
|
130
|
+
Vestjyllands Storkreds | Alternativet | 8642
|
|
131
|
+
|
|
132
|
+
Nordjyllands Storkreds | Socialdemokraterne | 110963
|
|
133
|
+
Nordjyllands Storkreds | Radikale Venstre | 11339
|
|
134
|
+
Nordjyllands Storkreds | Det Konservative Folkeparti | 10153
|
|
135
|
+
Nordjyllands Storkreds | Nye Borgerlige | 10153
|
|
136
|
+
Nordjyllands Storkreds | Socialistisk Folkeparti | 12108
|
|
137
|
+
Nordjyllands Storkreds | Liberal Alliance | 21807
|
|
138
|
+
Nordjyllands Storkreds | Kristendemokraterne | 3330
|
|
139
|
+
Nordjyllands Storkreds | Dansk Folkeparti | 81160
|
|
140
|
+
Nordjyllands Storkreds | Venstre | 85924
|
|
141
|
+
Nordjyllands Storkreds | Enhedslisten–De Rød-Grønne | 22559
|
|
142
|
+
Nordjyllands Storkreds | Alternativet | 10335
|
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
module Sapor
|
|
19
|
+
#
|
|
20
|
+
# The regional data for Denmark.
|
|
21
|
+
#
|
|
22
|
+
class Denmark < Area
|
|
23
|
+
include Singleton
|
|
24
|
+
|
|
25
|
+
def area_code
|
|
26
|
+
'DK'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def coalitions
|
|
30
|
+
COALITIONS
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def no_of_seats
|
|
34
|
+
NO_OF_SEATS
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def overall_election_results_of_2015
|
|
38
|
+
if @overall_election_results_of_2015.nil?
|
|
39
|
+
@overall_election_results_of_2015 = \
|
|
40
|
+
summarize_election_results(election_results_of_2015)
|
|
41
|
+
end
|
|
42
|
+
@overall_election_results_of_2015
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def population_size
|
|
46
|
+
POPULATION_SIZE
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def seats(simulation)
|
|
50
|
+
electoral_system.project(simulation)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
A_PARTY = 'Socialdemokraterne'.freeze
|
|
56
|
+
B_PARTY = 'Radikale Venstre'.freeze
|
|
57
|
+
C_PARTY = 'Det Konservative Folkeparti'.freeze
|
|
58
|
+
D_PARTY = 'Nye Borgerlige'.freeze
|
|
59
|
+
E_PARTY = 'Klaus Riskær Pedersen'.freeze
|
|
60
|
+
F_PARTY = 'Socialistisk Folkeparti'.freeze
|
|
61
|
+
I_PARTY = 'Liberal Alliance'.freeze
|
|
62
|
+
K_PARTY = 'Kristendemokraterne'.freeze
|
|
63
|
+
O_PARTY = 'Dansk Folkeparti'.freeze
|
|
64
|
+
P_PARTY = 'Stram Kurs'.freeze
|
|
65
|
+
V_PARTY = 'Venstre'.freeze
|
|
66
|
+
OE_PARTY = 'Enhedslisten–De Rød-Grønne'.freeze
|
|
67
|
+
AA_PARTY = 'Alternativet'.freeze
|
|
68
|
+
|
|
69
|
+
COALITIONS = [[A_PARTY, B_PARTY],
|
|
70
|
+
[A_PARTY, B_PARTY, F_PARTY],
|
|
71
|
+
[A_PARTY, B_PARTY, F_PARTY, OE_PARTY],
|
|
72
|
+
[A_PARTY, B_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
|
|
73
|
+
[A_PARTY, F_PARTY, OE_PARTY],
|
|
74
|
+
[A_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
|
|
75
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
|
|
76
|
+
P_PARTY, V_PARTY],
|
|
77
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
|
|
78
|
+
V_PARTY],
|
|
79
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
80
|
+
[C_PARTY, D_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
|
|
81
|
+
[C_PARTY, D_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
82
|
+
[C_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
|
|
83
|
+
[C_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
84
|
+
[C_PARTY, I_PARTY, V_PARTY],
|
|
85
|
+
[C_PARTY, V_PARTY],
|
|
86
|
+
[V_PARTY]].freeze
|
|
87
|
+
|
|
88
|
+
# Voter turnout on 18 June 2015
|
|
89
|
+
# http://www.dst.dk/valg/Valg1487635/valgopg/valgopgHL.htm
|
|
90
|
+
POPULATION_SIZE = 3_518_987
|
|
91
|
+
|
|
92
|
+
DIRECT_SEAT_DISTRIBUTION = { 'Københavns Storkreds' => 16,
|
|
93
|
+
'Københavns Omegns Storkreds' => 11,
|
|
94
|
+
'Nordsjællands Storkreds' => 10,
|
|
95
|
+
'Bornholms Storkreds' => 2,
|
|
96
|
+
'Sjællands Storkreds' => 20,
|
|
97
|
+
'Fyns Storkreds' => 12,
|
|
98
|
+
'Sydjyllands Storkreds' => 18,
|
|
99
|
+
'Østjyllands Storkreds' => 18,
|
|
100
|
+
'Vestjyllands Storkreds' => 13,
|
|
101
|
+
'Nordjyllands Storkreds' => 15 }.freeze
|
|
102
|
+
|
|
103
|
+
LEVELING_THRESHOLD = 0.02
|
|
104
|
+
|
|
105
|
+
NO_OF_LEVELING_SEATS = 40
|
|
106
|
+
|
|
107
|
+
NO_OF_SEATS = NO_OF_LEVELING_SEATS + \
|
|
108
|
+
DIRECT_SEAT_DISTRIBUTION.values.inject(:+)
|
|
109
|
+
|
|
110
|
+
def election_results_of_2015
|
|
111
|
+
if @election_results_of_2015.nil?
|
|
112
|
+
@election_results_of_2015 = load_election_results(
|
|
113
|
+
'denmark-20150618.psv'
|
|
114
|
+
)
|
|
115
|
+
end
|
|
116
|
+
@election_results_of_2015
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def electoral_system
|
|
120
|
+
if @electoral_system.nil?
|
|
121
|
+
@electoral_system = LargestRemainder.new(NO_OF_SEATS, HareQuota,
|
|
122
|
+
LEVELING_THRESHOLD)
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
@electoral_system
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
module Sapor
|
|
19
|
+
#
|
|
20
|
+
# The regional data for Denmark, extended with E.
|
|
21
|
+
#
|
|
22
|
+
class DenmarkWithE < Area
|
|
23
|
+
include Singleton
|
|
24
|
+
|
|
25
|
+
def area_code
|
|
26
|
+
'DK∪{E}'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def coalitions
|
|
30
|
+
COALITIONS
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def no_of_seats
|
|
34
|
+
NO_OF_SEATS
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def overall_election_results_of_2015
|
|
38
|
+
if @overall_election_results_of_2015.nil?
|
|
39
|
+
@overall_election_results_of_2015 = \
|
|
40
|
+
summarize_election_results(election_results_of_2015)
|
|
41
|
+
end
|
|
42
|
+
@overall_election_results_of_2015
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def population_size
|
|
46
|
+
POPULATION_SIZE
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def seats(simulation)
|
|
50
|
+
electoral_system.project(simulation)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
A_PARTY = 'Socialdemokraterne'.freeze
|
|
56
|
+
B_PARTY = 'Radikale Venstre'.freeze
|
|
57
|
+
C_PARTY = 'Det Konservative Folkeparti'.freeze
|
|
58
|
+
D_PARTY = 'Nye Borgerlige'.freeze
|
|
59
|
+
E_PARTY = 'Klaus Riskær Pedersen'.freeze
|
|
60
|
+
F_PARTY = 'Socialistisk Folkeparti'.freeze
|
|
61
|
+
I_PARTY = 'Liberal Alliance'.freeze
|
|
62
|
+
K_PARTY = 'Kristendemokraterne'.freeze
|
|
63
|
+
O_PARTY = 'Dansk Folkeparti'.freeze
|
|
64
|
+
P_PARTY = 'Stram Kurs'.freeze
|
|
65
|
+
V_PARTY = 'Venstre'.freeze
|
|
66
|
+
OE_PARTY = 'Enhedslisten–De Rød-Grønne'.freeze
|
|
67
|
+
AA_PARTY = 'Alternativet'.freeze
|
|
68
|
+
|
|
69
|
+
COALITIONS = [[A_PARTY, B_PARTY],
|
|
70
|
+
[A_PARTY, B_PARTY, F_PARTY],
|
|
71
|
+
[A_PARTY, B_PARTY, F_PARTY, OE_PARTY],
|
|
72
|
+
[A_PARTY, B_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
|
|
73
|
+
[A_PARTY, F_PARTY, OE_PARTY],
|
|
74
|
+
[A_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
|
|
75
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
|
|
76
|
+
P_PARTY, V_PARTY],
|
|
77
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
|
|
78
|
+
V_PARTY],
|
|
79
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
80
|
+
[C_PARTY, D_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
|
|
81
|
+
[C_PARTY, D_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
82
|
+
[C_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
|
|
83
|
+
[C_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
84
|
+
[C_PARTY, I_PARTY, V_PARTY],
|
|
85
|
+
[C_PARTY, V_PARTY],
|
|
86
|
+
[V_PARTY]].freeze
|
|
87
|
+
|
|
88
|
+
# Voter turnout on 18 June 2015
|
|
89
|
+
# http://www.dst.dk/valg/Valg1487635/valgopg/valgopgHL.htm
|
|
90
|
+
POPULATION_SIZE = 3_518_987
|
|
91
|
+
|
|
92
|
+
DIRECT_SEAT_DISTRIBUTION = { 'Københavns Storkreds' => 16,
|
|
93
|
+
'Københavns Omegns Storkreds' => 11,
|
|
94
|
+
'Nordsjællands Storkreds' => 10,
|
|
95
|
+
'Bornholms Storkreds' => 2,
|
|
96
|
+
'Sjællands Storkreds' => 20,
|
|
97
|
+
'Fyns Storkreds' => 12,
|
|
98
|
+
'Sydjyllands Storkreds' => 18,
|
|
99
|
+
'Østjyllands Storkreds' => 18,
|
|
100
|
+
'Vestjyllands Storkreds' => 13,
|
|
101
|
+
'Nordjyllands Storkreds' => 15 }.freeze
|
|
102
|
+
|
|
103
|
+
LEVELING_THRESHOLD = 0.02
|
|
104
|
+
|
|
105
|
+
NO_OF_LEVELING_SEATS = 40
|
|
106
|
+
|
|
107
|
+
NO_OF_SEATS = NO_OF_LEVELING_SEATS + \
|
|
108
|
+
DIRECT_SEAT_DISTRIBUTION.values.inject(:+)
|
|
109
|
+
|
|
110
|
+
def election_results_of_2015
|
|
111
|
+
if @election_results_of_2015.nil?
|
|
112
|
+
@election_results_of_2015 = load_election_results(
|
|
113
|
+
'denmark-20150618-with-e.psv'
|
|
114
|
+
)
|
|
115
|
+
end
|
|
116
|
+
@election_results_of_2015
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def electoral_system
|
|
120
|
+
if @electoral_system.nil?
|
|
121
|
+
@electoral_system = LargestRemainder.new(NO_OF_SEATS, HareQuota,
|
|
122
|
+
LEVELING_THRESHOLD)
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
@electoral_system
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
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
|
+
module Sapor
|
|
19
|
+
#
|
|
20
|
+
# The regional data for Denmark, extended with E and P.
|
|
21
|
+
#
|
|
22
|
+
class DenmarkWithEAndP < Area
|
|
23
|
+
include Singleton
|
|
24
|
+
|
|
25
|
+
def area_code
|
|
26
|
+
'DK∪{E,P}'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def coalitions
|
|
30
|
+
COALITIONS
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def no_of_seats
|
|
34
|
+
NO_OF_SEATS
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def overall_election_results_of_2015
|
|
38
|
+
if @overall_election_results_of_2015.nil?
|
|
39
|
+
@overall_election_results_of_2015 = \
|
|
40
|
+
summarize_election_results(election_results_of_2015)
|
|
41
|
+
end
|
|
42
|
+
@overall_election_results_of_2015
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def population_size
|
|
46
|
+
POPULATION_SIZE
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def seats(simulation)
|
|
50
|
+
electoral_system.project(simulation)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
A_PARTY = 'Socialdemokraterne'.freeze
|
|
56
|
+
B_PARTY = 'Radikale Venstre'.freeze
|
|
57
|
+
C_PARTY = 'Det Konservative Folkeparti'.freeze
|
|
58
|
+
D_PARTY = 'Nye Borgerlige'.freeze
|
|
59
|
+
E_PARTY = 'Klaus Riskær Pedersen'.freeze
|
|
60
|
+
F_PARTY = 'Socialistisk Folkeparti'.freeze
|
|
61
|
+
I_PARTY = 'Liberal Alliance'.freeze
|
|
62
|
+
K_PARTY = 'Kristendemokraterne'.freeze
|
|
63
|
+
O_PARTY = 'Dansk Folkeparti'.freeze
|
|
64
|
+
P_PARTY = 'Stram Kurs'.freeze
|
|
65
|
+
V_PARTY = 'Venstre'.freeze
|
|
66
|
+
OE_PARTY = 'Enhedslisten–De Rød-Grønne'.freeze
|
|
67
|
+
AA_PARTY = 'Alternativet'.freeze
|
|
68
|
+
|
|
69
|
+
COALITIONS = [[A_PARTY, B_PARTY],
|
|
70
|
+
[A_PARTY, B_PARTY, F_PARTY],
|
|
71
|
+
[A_PARTY, B_PARTY, F_PARTY, OE_PARTY],
|
|
72
|
+
[A_PARTY, B_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
|
|
73
|
+
[A_PARTY, F_PARTY, OE_PARTY],
|
|
74
|
+
[A_PARTY, F_PARTY, OE_PARTY, AA_PARTY],
|
|
75
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
|
|
76
|
+
P_PARTY, V_PARTY],
|
|
77
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, K_PARTY, O_PARTY,
|
|
78
|
+
V_PARTY],
|
|
79
|
+
[C_PARTY, D_PARTY, E_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
80
|
+
[C_PARTY, D_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
|
|
81
|
+
[C_PARTY, D_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
82
|
+
[C_PARTY, I_PARTY, K_PARTY, O_PARTY, V_PARTY],
|
|
83
|
+
[C_PARTY, I_PARTY, O_PARTY, V_PARTY],
|
|
84
|
+
[C_PARTY, I_PARTY, V_PARTY],
|
|
85
|
+
[C_PARTY, V_PARTY],
|
|
86
|
+
[V_PARTY]].freeze
|
|
87
|
+
|
|
88
|
+
# Voter turnout on 18 June 2015
|
|
89
|
+
# http://www.dst.dk/valg/Valg1487635/valgopg/valgopgHL.htm
|
|
90
|
+
POPULATION_SIZE = 3_518_987
|
|
91
|
+
|
|
92
|
+
DIRECT_SEAT_DISTRIBUTION = { 'Københavns Storkreds' => 16,
|
|
93
|
+
'Københavns Omegns Storkreds' => 11,
|
|
94
|
+
'Nordsjællands Storkreds' => 10,
|
|
95
|
+
'Bornholms Storkreds' => 2,
|
|
96
|
+
'Sjællands Storkreds' => 20,
|
|
97
|
+
'Fyns Storkreds' => 12,
|
|
98
|
+
'Sydjyllands Storkreds' => 18,
|
|
99
|
+
'Østjyllands Storkreds' => 18,
|
|
100
|
+
'Vestjyllands Storkreds' => 13,
|
|
101
|
+
'Nordjyllands Storkreds' => 15 }.freeze
|
|
102
|
+
|
|
103
|
+
LEVELING_THRESHOLD = 0.02
|
|
104
|
+
|
|
105
|
+
NO_OF_LEVELING_SEATS = 40
|
|
106
|
+
|
|
107
|
+
NO_OF_SEATS = NO_OF_LEVELING_SEATS + \
|
|
108
|
+
DIRECT_SEAT_DISTRIBUTION.values.inject(:+)
|
|
109
|
+
|
|
110
|
+
def election_results_of_2015
|
|
111
|
+
if @election_results_of_2015.nil?
|
|
112
|
+
@election_results_of_2015 = load_election_results(
|
|
113
|
+
'denmark-20150618-with-e-and-p.psv'
|
|
114
|
+
)
|
|
115
|
+
end
|
|
116
|
+
@election_results_of_2015
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def electoral_system
|
|
120
|
+
if @electoral_system.nil?
|
|
121
|
+
@electoral_system = LargestRemainder.new(NO_OF_SEATS, HareQuota,
|
|
122
|
+
LEVELING_THRESHOLD)
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
@electoral_system
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|