sapor 0.3.4
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 +82 -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,125 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
3
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
4
|
+
#
|
|
5
|
+
# This file is part of SAPoR.
|
|
6
|
+
#
|
|
7
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
8
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
9
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
10
|
+
# version.
|
|
11
|
+
#
|
|
12
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
module Sapor
|
|
20
|
+
#
|
|
21
|
+
# The regional data for Poland.
|
|
22
|
+
#
|
|
23
|
+
class Poland < Area
|
|
24
|
+
include Singleton
|
|
25
|
+
|
|
26
|
+
def area_code
|
|
27
|
+
'PL'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def coalitions
|
|
31
|
+
COALITIONS
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def no_of_seats
|
|
35
|
+
SEAT_DISTRIBUTION.values.inject(:+)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def overall_election_results_of_2015
|
|
39
|
+
if @overall_election_results_of_2015.nil?
|
|
40
|
+
@overall_election_results_of_2015 = \
|
|
41
|
+
summarize_election_results(election_results_of_2015)
|
|
42
|
+
end
|
|
43
|
+
@overall_election_results_of_2015
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def population_size
|
|
47
|
+
POPULATION_SIZE
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def seats(simulation)
|
|
51
|
+
electoral_system.project(simulation)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def threshold
|
|
55
|
+
PARTY_LIST_THRESHOLD
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
private
|
|
59
|
+
|
|
60
|
+
MN_PARTY = 'Mniejszość Niemiecka'.freeze
|
|
61
|
+
N_PARTY = '.Nowoczesna'.freeze
|
|
62
|
+
PIS_PARTY = 'Prawo i Sprawiedliwość'.freeze
|
|
63
|
+
PO_PARTY = 'Platforma Obywatelska'.freeze
|
|
64
|
+
PSL_PARTY = 'Polskie Stronnictwo Ludowe'.freeze
|
|
65
|
+
R_PARTY = 'Lewica Razem'.freeze
|
|
66
|
+
SLD_PARTY = 'Sojusz Lewicy Demokratycznej'.freeze
|
|
67
|
+
ZL_PARTY = 'Zjednoczona Lewica'.freeze
|
|
68
|
+
|
|
69
|
+
COALITIONS = [[N_PARTY, PO_PARTY],
|
|
70
|
+
[N_PARTY, PO_PARTY, PSL_PARTY],
|
|
71
|
+
[N_PARTY, PO_PARTY, PSL_PARTY, R_PARTY, SLD_PARTY],
|
|
72
|
+
[N_PARTY, PO_PARTY, PSL_PARTY, SLD_PARTY],
|
|
73
|
+
[N_PARTY, PO_PARTY, SLD_PARTY],
|
|
74
|
+
[PIS_PARTY],
|
|
75
|
+
[PO_PARTY]].freeze
|
|
76
|
+
|
|
77
|
+
# Voter turnout on 25 October 2015
|
|
78
|
+
# Source: Web page with the official results of the elections of 25 October
|
|
79
|
+
# 2015, downloaded on 17 July 2019,
|
|
80
|
+
# https://en.wikipedia.org/wiki/2015_Polish_parliamentary_election
|
|
81
|
+
POPULATION_SIZE = 15_200_671
|
|
82
|
+
|
|
83
|
+
SEAT_DISTRIBUTION = { 'Legnica' => 12, 'Wałbrzych' => 8, 'Wrocław' => 14,
|
|
84
|
+
'Bydgoszcz' => 12, 'Toruń' => 13, 'Lublin' => 15,
|
|
85
|
+
'Chełm' => 12, 'Zielona Góra' => 12, 'Łódź' => 10,
|
|
86
|
+
'Piotrków Trybunalski' => 9, 'Sieradz' => 12,
|
|
87
|
+
'Kraków I (południe)' => 8,
|
|
88
|
+
'Kraków II (północ)' => 14, 'Nowy Sącz' => 10,
|
|
89
|
+
'Tarnów' => 9, 'Płock' => 10, 'Radom' => 9,
|
|
90
|
+
'Siedlce' => 12, 'Warszawa I (miasto)' => 20,
|
|
91
|
+
'Warszawa II (okręg)' => 12, 'Opole' => 12,
|
|
92
|
+
'Krosno' => 11, 'Rzeszów' => 15, 'Białystok' => 14,
|
|
93
|
+
'Gdańsk' => 12, 'Gdynia' => 14, 'Bielsko-Biała' => 9,
|
|
94
|
+
'Częstochowa' => 7, 'Gliwice' => 9, 'Rybnik' => 9,
|
|
95
|
+
'Katowice' => 12, 'Sosnowiec' => 9, 'Kielce' => 16,
|
|
96
|
+
'Elbląg' => 8, 'Olsztyn' => 10, 'Kalisz' => 12,
|
|
97
|
+
'Konin' => 9, 'Piła' => 9, 'Poznań' => 10,
|
|
98
|
+
'Koszalin' => 8, 'Szczecin' => 12 }.freeze
|
|
99
|
+
|
|
100
|
+
PARTY_LIST_THRESHOLD = 0.05
|
|
101
|
+
COALITION_LIST_THRESHOLD = 0.08
|
|
102
|
+
COALITION_LISTS = [ZL_PARTY].freeze
|
|
103
|
+
MINORITY_LISTS = [MN_PARTY].freeze
|
|
104
|
+
|
|
105
|
+
def election_results_of_2015
|
|
106
|
+
if @election_results_of_2015.nil?
|
|
107
|
+
@election_results_of_2015 = load_election_results(
|
|
108
|
+
'poland-20151025.psv'
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
@election_results_of_2015
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def electoral_system
|
|
115
|
+
if @electoral_system.nil?
|
|
116
|
+
@electoral_system = MultiDistrictVariableThresholdProportional.new( \
|
|
117
|
+
overall_election_results_of_2015, election_results_of_2015,
|
|
118
|
+
SEAT_DISTRIBUTION, DhondtDenominators, PARTY_LIST_THRESHOLD,
|
|
119
|
+
COALITION_LIST_THRESHOLD, COALITION_LISTS, MINORITY_LISTS
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
@electoral_system
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
3
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
4
|
+
#
|
|
5
|
+
# This file is part of SAPoR.
|
|
6
|
+
#
|
|
7
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
8
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
9
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
10
|
+
# version.
|
|
11
|
+
#
|
|
12
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
module Sapor
|
|
20
|
+
#
|
|
21
|
+
# The regional data for Poland, without .Nowoczesna, Platforma Obywatelska and
|
|
22
|
+
# Zjednoczona Lewica but with Koalicja Obywatelska and Lewica.
|
|
23
|
+
#
|
|
24
|
+
class PolandWithKoAndLWithoutNPoRAndZl < Area
|
|
25
|
+
include Singleton
|
|
26
|
+
|
|
27
|
+
def area_code
|
|
28
|
+
'PL∪{KO,L}\{N,PO,R,ZL}'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def coalitions
|
|
32
|
+
COALITIONS
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def no_of_seats
|
|
36
|
+
SEAT_DISTRIBUTION.values.inject(:+)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def overall_election_results_of_2015
|
|
40
|
+
if @overall_election_results_of_2015.nil?
|
|
41
|
+
@overall_election_results_of_2015 = \
|
|
42
|
+
summarize_election_results(election_results_of_2015)
|
|
43
|
+
end
|
|
44
|
+
@overall_election_results_of_2015
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def population_size
|
|
48
|
+
POPULATION_SIZE
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def seats(simulation)
|
|
52
|
+
electoral_system.project(simulation)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def threshold
|
|
56
|
+
PARTY_LIST_THRESHOLD
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
private
|
|
60
|
+
|
|
61
|
+
KO_PARTY = 'Koalicja Obywatelska'.freeze
|
|
62
|
+
L_PARTY = 'Lewica'.freeze
|
|
63
|
+
MN_PARTY = 'Mniejszość Niemiecka'.freeze
|
|
64
|
+
PIS_PARTY = 'Prawo i Sprawiedliwość'.freeze
|
|
65
|
+
PSL_PARTY = 'Polskie Stronnictwo Ludowe'.freeze
|
|
66
|
+
ZL_PARTY = 'Zjednoczona Lewica'.freeze
|
|
67
|
+
|
|
68
|
+
COALITIONS = [[KO_PARTY],
|
|
69
|
+
[KO_PARTY, PSL_PARTY],
|
|
70
|
+
[KO_PARTY, L_PARTY, PSL_PARTY],
|
|
71
|
+
[KO_PARTY, L_PARTY],
|
|
72
|
+
[PIS_PARTY]].freeze
|
|
73
|
+
|
|
74
|
+
# Voter turnout on 25 October 2015
|
|
75
|
+
# Source: Web page with the official results of the elections of 25 October
|
|
76
|
+
# 2015, downloaded on 17 July 2019,
|
|
77
|
+
# https://en.wikipedia.org/wiki/2015_Polish_parliamentary_election
|
|
78
|
+
POPULATION_SIZE = 15_200_671
|
|
79
|
+
|
|
80
|
+
SEAT_DISTRIBUTION = { 'Legnica' => 12, 'Wałbrzych' => 8, 'Wrocław' => 14,
|
|
81
|
+
'Bydgoszcz' => 12, 'Toruń' => 13, 'Lublin' => 15,
|
|
82
|
+
'Chełm' => 12, 'Zielona Góra' => 12, 'Łódź' => 10,
|
|
83
|
+
'Piotrków Trybunalski' => 9, 'Sieradz' => 12,
|
|
84
|
+
'Kraków I (południe)' => 8,
|
|
85
|
+
'Kraków II (północ)' => 14, 'Nowy Sącz' => 10,
|
|
86
|
+
'Tarnów' => 9, 'Płock' => 10, 'Radom' => 9,
|
|
87
|
+
'Siedlce' => 12, 'Warszawa I (miasto)' => 20,
|
|
88
|
+
'Warszawa II (okręg)' => 12, 'Opole' => 12,
|
|
89
|
+
'Krosno' => 11, 'Rzeszów' => 15, 'Białystok' => 14,
|
|
90
|
+
'Gdańsk' => 12, 'Gdynia' => 14, 'Bielsko-Biała' => 9,
|
|
91
|
+
'Częstochowa' => 7, 'Gliwice' => 9, 'Rybnik' => 9,
|
|
92
|
+
'Katowice' => 12, 'Sosnowiec' => 9, 'Kielce' => 16,
|
|
93
|
+
'Elbląg' => 8, 'Olsztyn' => 10, 'Kalisz' => 12,
|
|
94
|
+
'Konin' => 9, 'Piła' => 9, 'Poznań' => 10,
|
|
95
|
+
'Koszalin' => 8, 'Szczecin' => 12 }.freeze
|
|
96
|
+
|
|
97
|
+
PARTY_LIST_THRESHOLD = 0.05
|
|
98
|
+
COALITION_LIST_THRESHOLD = 0.08
|
|
99
|
+
COALITION_LISTS = [KO_PARTY].freeze
|
|
100
|
+
MINORITY_LISTS = [MN_PARTY].freeze
|
|
101
|
+
|
|
102
|
+
def election_results_of_2015
|
|
103
|
+
if @election_results_of_2015.nil?
|
|
104
|
+
@election_results_of_2015 = load_election_results(
|
|
105
|
+
'poland-20151025-with-ko-and-l-without-n-po-r-and-zl.psv'
|
|
106
|
+
)
|
|
107
|
+
end
|
|
108
|
+
@election_results_of_2015
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def electoral_system
|
|
112
|
+
if @electoral_system.nil?
|
|
113
|
+
@electoral_system = MultiDistrictVariableThresholdProportional.new( \
|
|
114
|
+
overall_election_results_of_2015, election_results_of_2015,
|
|
115
|
+
SEAT_DISTRIBUTION, DhondtDenominators, PARTY_LIST_THRESHOLD,
|
|
116
|
+
COALITION_LIST_THRESHOLD, COALITION_LISTS, MINORITY_LISTS
|
|
117
|
+
)
|
|
118
|
+
end
|
|
119
|
+
@electoral_system
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
data/lib/sapor/regional_data/poland_with_ko_konf_kp_l_and_zp_without_k_k15_n_pis_po_psl_r_and_zl.rb
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
3
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
4
|
+
#
|
|
5
|
+
# This file is part of SAPoR.
|
|
6
|
+
#
|
|
7
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
8
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
9
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
10
|
+
# version.
|
|
11
|
+
#
|
|
12
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
module Sapor
|
|
20
|
+
#
|
|
21
|
+
# The regional data for Poland, without KORWiN, Kukiz’15, Lewica Razem,
|
|
22
|
+
# .Nowoczesna, Platforma Obywatelska, Polskie Stronnictwo Ludowe, Prawo i
|
|
23
|
+
# Sprawiedliwość and Zjednoczona Lewica but with Koalicja Obywatelska,
|
|
24
|
+
# Koalicja Polska, Konfederacja, Lewica and Zjednoczona Prawica.
|
|
25
|
+
#
|
|
26
|
+
class PolandWithKoKonfKpLAndZpWithoutKK15NPisPoPslRAndZl < Area
|
|
27
|
+
include Singleton
|
|
28
|
+
|
|
29
|
+
def area_code
|
|
30
|
+
'PL∪{KO,KP,Konf,L,ZP}\{K,K15,N,PO,PSL,PiS,R,ZL}'
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def coalitions
|
|
34
|
+
COALITIONS
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def no_of_seats
|
|
38
|
+
SEAT_DISTRIBUTION.values.inject(:+)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def overall_election_results_of_2015
|
|
42
|
+
if @overall_election_results_of_2015.nil?
|
|
43
|
+
@overall_election_results_of_2015 = \
|
|
44
|
+
summarize_election_results(election_results_of_2015)
|
|
45
|
+
end
|
|
46
|
+
@overall_election_results_of_2015
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def population_size
|
|
50
|
+
POPULATION_SIZE
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def seats(simulation)
|
|
54
|
+
electoral_system.project(simulation)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def threshold
|
|
58
|
+
PARTY_LIST_THRESHOLD
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
private
|
|
62
|
+
|
|
63
|
+
KO_PARTY = 'Koalicja Obywatelska'.freeze
|
|
64
|
+
KP_PARTY = 'Koalicja Polska'.freeze
|
|
65
|
+
L_PARTY = 'Lewica'.freeze
|
|
66
|
+
MN_PARTY = 'Mniejszość Niemiecka'.freeze
|
|
67
|
+
ZP_PARTY = 'Zjednoczona Prawica'.freeze
|
|
68
|
+
|
|
69
|
+
COALITIONS = [[KO_PARTY],
|
|
70
|
+
[KO_PARTY, KP_PARTY],
|
|
71
|
+
[KO_PARTY, KP_PARTY, L_PARTY],
|
|
72
|
+
[KO_PARTY, L_PARTY],
|
|
73
|
+
[ZP_PARTY]].freeze
|
|
74
|
+
|
|
75
|
+
# Voter turnout on 25 October 2015
|
|
76
|
+
# Source: Web page with the official results of the elections of 25 October
|
|
77
|
+
# 2015, downloaded on 17 July 2019,
|
|
78
|
+
# https://en.wikipedia.org/wiki/2015_Polish_parliamentary_election
|
|
79
|
+
POPULATION_SIZE = 15_200_671
|
|
80
|
+
|
|
81
|
+
SEAT_DISTRIBUTION = { 'Legnica' => 12, 'Wałbrzych' => 8, 'Wrocław' => 14,
|
|
82
|
+
'Bydgoszcz' => 12, 'Toruń' => 13, 'Lublin' => 15,
|
|
83
|
+
'Chełm' => 12, 'Zielona Góra' => 12, 'Łódź' => 10,
|
|
84
|
+
'Piotrków Trybunalski' => 9, 'Sieradz' => 12,
|
|
85
|
+
'Kraków I (południe)' => 8,
|
|
86
|
+
'Kraków II (północ)' => 14, 'Nowy Sącz' => 10,
|
|
87
|
+
'Tarnów' => 9, 'Płock' => 10, 'Radom' => 9,
|
|
88
|
+
'Siedlce' => 12, 'Warszawa I (miasto)' => 20,
|
|
89
|
+
'Warszawa II (okręg)' => 12, 'Opole' => 12,
|
|
90
|
+
'Krosno' => 11, 'Rzeszów' => 15, 'Białystok' => 14,
|
|
91
|
+
'Gdańsk' => 12, 'Gdynia' => 14, 'Bielsko-Biała' => 9,
|
|
92
|
+
'Częstochowa' => 7, 'Gliwice' => 9, 'Rybnik' => 9,
|
|
93
|
+
'Katowice' => 12, 'Sosnowiec' => 9, 'Kielce' => 16,
|
|
94
|
+
'Elbląg' => 8, 'Olsztyn' => 10, 'Kalisz' => 12,
|
|
95
|
+
'Konin' => 9, 'Piła' => 9, 'Poznań' => 10,
|
|
96
|
+
'Koszalin' => 8, 'Szczecin' => 12 }.freeze
|
|
97
|
+
|
|
98
|
+
PARTY_LIST_THRESHOLD = 0.05
|
|
99
|
+
COALITION_LIST_THRESHOLD = 0.08
|
|
100
|
+
COALITION_LISTS = [KO_PARTY, ZP_PARTY].freeze
|
|
101
|
+
MINORITY_LISTS = [MN_PARTY].freeze
|
|
102
|
+
|
|
103
|
+
def election_results_of_2015
|
|
104
|
+
if @election_results_of_2015.nil?
|
|
105
|
+
@election_results_of_2015 = load_election_results(
|
|
106
|
+
'poland-20151025-with-ko-konf-kp-l-and-zp-without-k-k15-n-pis-po-psl-r-and-zl.psv'
|
|
107
|
+
)
|
|
108
|
+
end
|
|
109
|
+
@election_results_of_2015
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def electoral_system
|
|
113
|
+
if @electoral_system.nil?
|
|
114
|
+
@electoral_system = MultiDistrictVariableThresholdProportional.new( \
|
|
115
|
+
overall_election_results_of_2015, election_results_of_2015,
|
|
116
|
+
SEAT_DISTRIBUTION, DhondtDenominators, PARTY_LIST_THRESHOLD,
|
|
117
|
+
COALITION_LIST_THRESHOLD, COALITION_LISTS, MINORITY_LISTS
|
|
118
|
+
)
|
|
119
|
+
end
|
|
120
|
+
@electoral_system
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Statistical Analysis of Polling Results (SAPoR)
|
|
3
|
+
# Copyright (C) 2016 Filip van Laenen <f.a.vanlaenen@ieee.org>
|
|
4
|
+
#
|
|
5
|
+
# This file is part of SAPoR.
|
|
6
|
+
#
|
|
7
|
+
# SAPoR is free software: you can redistribute it and/or modify it under the
|
|
8
|
+
# terms of the GNU General Public License as published by the Free Software
|
|
9
|
+
# Foundation, either version 3 of the License, or (at your option) any later
|
|
10
|
+
# version.
|
|
11
|
+
#
|
|
12
|
+
# SAPoR is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
13
|
+
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
14
|
+
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You can find a copy of the GNU General Public License in /doc/gpl.txt
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
module Sapor
|
|
20
|
+
#
|
|
21
|
+
# The regional data for Poland, without .Nowoczesna, Platforma Obywatelska and
|
|
22
|
+
# Zjednoczona Lewica but with Koalicja Obywatelska, Sojusz Lewicy
|
|
23
|
+
# Demokratycznej and Wiosna.
|
|
24
|
+
#
|
|
25
|
+
class PolandWithKoSldAndWiWithoutNPoAndZl < Area
|
|
26
|
+
include Singleton
|
|
27
|
+
|
|
28
|
+
def area_code
|
|
29
|
+
'PL∪{KO,SLD,Wi}\{N,PO,ZL}'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def coalitions
|
|
33
|
+
COALITIONS
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def no_of_seats
|
|
37
|
+
SEAT_DISTRIBUTION.values.inject(:+)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def overall_election_results_of_2015
|
|
41
|
+
if @overall_election_results_of_2015.nil?
|
|
42
|
+
@overall_election_results_of_2015 = \
|
|
43
|
+
summarize_election_results(election_results_of_2015)
|
|
44
|
+
end
|
|
45
|
+
@overall_election_results_of_2015
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def population_size
|
|
49
|
+
POPULATION_SIZE
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def seats(simulation)
|
|
53
|
+
electoral_system.project(simulation)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def threshold
|
|
57
|
+
PARTY_LIST_THRESHOLD
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
|
|
62
|
+
KO_PARTY = 'Koalicja Obywatelska'.freeze
|
|
63
|
+
MN_PARTY = 'Mniejszość Niemiecka'.freeze
|
|
64
|
+
PIS_PARTY = 'Prawo i Sprawiedliwość'.freeze
|
|
65
|
+
PSL_PARTY = 'Polskie Stronnictwo Ludowe'.freeze
|
|
66
|
+
R_PARTY = 'Lewica Razem'.freeze
|
|
67
|
+
SLD_PARTY = 'Sojusz Lewicy Demokratycznej'.freeze
|
|
68
|
+
ZL_PARTY = 'Zjednoczona Lewica'.freeze
|
|
69
|
+
|
|
70
|
+
COALITIONS = [[KO_PARTY],
|
|
71
|
+
[KO_PARTY, PSL_PARTY],
|
|
72
|
+
[KO_PARTY, PSL_PARTY, R_PARTY, SLD_PARTY],
|
|
73
|
+
[KO_PARTY, PSL_PARTY, SLD_PARTY],
|
|
74
|
+
[KO_PARTY, SLD_PARTY],
|
|
75
|
+
[PIS_PARTY]].freeze
|
|
76
|
+
|
|
77
|
+
# Voter turnout on 25 October 2015
|
|
78
|
+
# Source: Web page with the official results of the elections of 25 October
|
|
79
|
+
# 2015, downloaded on 17 July 2019,
|
|
80
|
+
# https://en.wikipedia.org/wiki/2015_Polish_parliamentary_election
|
|
81
|
+
POPULATION_SIZE = 15_200_671
|
|
82
|
+
|
|
83
|
+
SEAT_DISTRIBUTION = { 'Legnica' => 12, 'Wałbrzych' => 8, 'Wrocław' => 14,
|
|
84
|
+
'Bydgoszcz' => 12, 'Toruń' => 13, 'Lublin' => 15,
|
|
85
|
+
'Chełm' => 12, 'Zielona Góra' => 12, 'Łódź' => 10,
|
|
86
|
+
'Piotrków Trybunalski' => 9, 'Sieradz' => 12,
|
|
87
|
+
'Kraków I (południe)' => 8,
|
|
88
|
+
'Kraków II (północ)' => 14, 'Nowy Sącz' => 10,
|
|
89
|
+
'Tarnów' => 9, 'Płock' => 10, 'Radom' => 9,
|
|
90
|
+
'Siedlce' => 12, 'Warszawa I (miasto)' => 20,
|
|
91
|
+
'Warszawa II (okręg)' => 12, 'Opole' => 12,
|
|
92
|
+
'Krosno' => 11, 'Rzeszów' => 15, 'Białystok' => 14,
|
|
93
|
+
'Gdańsk' => 12, 'Gdynia' => 14, 'Bielsko-Biała' => 9,
|
|
94
|
+
'Częstochowa' => 7, 'Gliwice' => 9, 'Rybnik' => 9,
|
|
95
|
+
'Katowice' => 12, 'Sosnowiec' => 9, 'Kielce' => 16,
|
|
96
|
+
'Elbląg' => 8, 'Olsztyn' => 10, 'Kalisz' => 12,
|
|
97
|
+
'Konin' => 9, 'Piła' => 9, 'Poznań' => 10,
|
|
98
|
+
'Koszalin' => 8, 'Szczecin' => 12 }.freeze
|
|
99
|
+
|
|
100
|
+
PARTY_LIST_THRESHOLD = 0.05
|
|
101
|
+
COALITION_LIST_THRESHOLD = 0.08
|
|
102
|
+
COALITION_LISTS = [KO_PARTY].freeze
|
|
103
|
+
MINORITY_LISTS = [MN_PARTY].freeze
|
|
104
|
+
|
|
105
|
+
def election_results_of_2015
|
|
106
|
+
if @election_results_of_2015.nil?
|
|
107
|
+
@election_results_of_2015 = load_election_results(
|
|
108
|
+
'poland-20151025-with-ko-sld-and-wi-without-n-po-and-zl.psv'
|
|
109
|
+
)
|
|
110
|
+
end
|
|
111
|
+
@election_results_of_2015
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def electoral_system
|
|
115
|
+
if @electoral_system.nil?
|
|
116
|
+
@electoral_system = MultiDistrictVariableThresholdProportional.new( \
|
|
117
|
+
overall_election_results_of_2015, election_results_of_2015,
|
|
118
|
+
SEAT_DISTRIBUTION, DhondtDenominators, PARTY_LIST_THRESHOLD,
|
|
119
|
+
COALITION_LIST_THRESHOLD, COALITION_LISTS, MINORITY_LISTS
|
|
120
|
+
)
|
|
121
|
+
end
|
|
122
|
+
@electoral_system
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|