Rozkład odsetka głosów nieważnych (definiowanego jako głosy nieważne / (głosy ważne + nieważne)) w wyborach samorządowych w 2014. Pierwszy histogram dotyczy całej Polski (27455 komisji), drugi województwa pomorskiego (1856) a trzeci Mazowieckiego (3574).
#!/usr/bin/Rscript # Skrypt wykreśla histogramy dla danych z pliku ws2014_komisje.csv # (więcej: https://github.com/hrpunio/Data/tree/master/ws2014_pobranie_2018) # par(ps=6,cex=1,cex.axis=1,cex.lab=1,cex.main=1.2) komisje <- read.csv("ws2014_komisje.csv", sep = ';', header=T, na.string="NA"); komisje$ogn <- komisje$glosyNiewazne / (komisje$glosy + komisje$glosyNiewazne) * 100; summary(komisje$glosyNiewazne); fivenum(komisje$glosyNiewazne); sX <- summary(komisje$ogn); sF <- fivenum(komisje$ogn); sV <- sd(komisje$ogn, na.rm=TRUE) skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nW = %.2f", sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], skewness) ## ## kpN <- seq(0, 100, by=2); kpX <- c(0, 10,20,30,40,50,60,70,80,90, 100); nn <- nrow(komisje) h <- hist(komisje$ogn, breaks=kpN, freq=TRUE, col="orange", main=sprintf ("Rozkład odsetka głosów nieważnych\nPolska ogółem %i komisji", nn), ylab="%", xlab="% nieważne", labels=F, xaxt='n' ) axis(side=1, at=kpN, cex.axis=2, cex.lab=2) posX <- .5 * max(h$counts) text(80, posX, summary_label, cex=1.4, adj=c(0,1)) ## ## komisje$woj <- substr(komisje$teryt, start=1, stop=2) komisjeW <- subset (komisje, woj == "22"); ## pomorskie nn <- nrow(komisjeW) sX <- summary(komisjeW$ogn); sF <- fivenum(komisjeW$ogn); sV <- sd(komisjeW$ogn, na.rm=TRUE) skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nW = %.2f", sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], skewness) h <- hist(komisjeW$ogn, breaks=kpN, freq=TRUE, col="orange", main=sprintf("Rozkład odsetka głosów nieważnych\nPomorskie %i komisji", nn), ylab="%", xlab="% nieważne", labels=T, xaxt='n' ) axis(side=1, at=kpX, cex.axis=2, cex.lab=2) posX <- .5 * max(h$counts) text(80, posX, summary_label, cex=1.4, adj=c(0,1)) komisjeW <- subset (komisje, woj == "14"); ## mazowieckie nn <- nrow(komisjeW) sX <- summary(komisjeW$ogn); sF <- fivenum(komisjeW$ogn); sV <- sd(komisjeW$ogn, na.rm=TRUE) skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nW = %.2f", sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], skewness) h <- hist(komisjeW$ogn, breaks=kpN, freq=TRUE, col="orange", main=sprintf("Rozkład odsetka głosów nieważnych\nMazowieckie %i komisji", nn), ylab="%", xlab="% nieważne", labels=T, xaxt='n' ) axis(side=1, at=kpX, cex.axis=2, cex.lab=2) posX <- .5 * max(h$counts) text(80, posX, summary_label, cex=1.4, adj=c(0,1))
Wyniki są takie oto (indywidualne wykresy tutaj: #01 #02 #03):
Rozkłady odsetka poparcia dla PSL/PiS/PO w wyborach samorządowych w 2014 w całej Polsce, w miastach/poza miastami oraz w poszczególnych województwach. Poniższy skrypt generuje łącznie 60 wykresów słupkowych:
#!/usr/bin/Rscript # Skrypt wykreślna różnego rodzaju histogramy dla danych z pliku ws2014_komitety_by_komisja_T.csv # (więcej: https://github.com/hrpunio/Data/tree/master/ws2014_pobranie_2018) # showVotes <- function(df, x, co, region, N, minN) { ## showVotes = wykreśla histogram dla województwa (region) kN <- nrow(df) sX <- summary(df[[x]], na.rm=TRUE); sV <- sd(df[[x]], na.rm=TRUE) ## współczynnik skośności Pearsona skewness <- 3 * (sX[["Mean"]] - sX[["Median"]])/sV summary_label <- sprintf ("Śr = %.1f\nMe = %.1f\nq1 = %.1f\nq3 = %.1f\nS = %.1f\nW = %.2f", sX[["Mean"]], sX[["Median"]], sX[["1st Qu."]], sX[["3rd Qu."]], sV, skewness) if (minN < 1) { t <- sprintf("Rozkład głosów na %s\n%s ogółem %d komisji", co, region, kN ) } else { t <- sprintf("Rozkład głosów za %s\n%s ogółem %d komisji (N>%d)", co, region, kN, minN ) } h <- hist(df[[x]], breaks=kpN, freq=TRUE, col="orange", main=t, ylab="%", xlab="% poparcia", labels=F, xaxt='n' ) axis(side=1, at=kpN, cex.axis=2, cex.lab=2) ## pozycja tekstu zawierającego statystyki opisowe posX <- .5 * max(h$counts) text(80, posX, summary_label, cex=1.4, adj=c(0,1)) } ## Wczytanie danych; obliczenie podst. statystyk: komisje <- read.csv("ws2014_komitety_by_komisja_T.csv", sep = ';', header=T, na.string="NA"); komisje$ogn <- komisje$glosyNiewazne / (komisje$glosy + komisje$glosyNiewazne) * 100; summary(komisje$PSL); summary(komisje$PiS); summary(komisje$PO); fivenum(komisje$PSLp); fivenum(komisje$PiSp); fivenum(komisje$POp); ## ## ### par(ps=6,cex=1,cex.axis=1,cex.lab=1,cex.main=1.2) kpN <- seq(0, 100, by=2); kpX <- c(0, 10,20,30,40,50,60,70,80,90, 100); kN <- nrow(komisje) region <- "Polska" minTurnout <- 0 ## cała Polska: showVotes(komisje, "PSLp", "PSL", region, kN, minTurnout); showVotes(komisje, "PiSp", "PiS", region, kN, minTurnout); showVotes(komisje, "POp", "PO", region, kN, minTurnout); ## Cała Polska (bez małych komisji): ## ( późniejszych analizach pomijane są małe komisje) minTurnout <- 49 komisje <- subset (komisje, glosyLK > minTurnout); kN <- nrow(komisje) showVotes(komisje, "PSLp", "PSL", region, kN, minTurnout); showVotes(komisje, "PiSp", "PiS", region, kN, minTurnout); showVotes(komisje, "POp", "PO", region, kN, minTurnout); ## Typ gminy U/R (U=gmina miejska ; R=inna niż miejska) komisjeW <- subset (komisje, typ == "U"); kN <- nrow(komisjeW) region <- "Polska/g.miejskie" showVotes(komisjeW, "PSLp", "PSL", region, kN, minTurnout); showVotes(komisjeW, "PiSp", "PiS", region, kN, minTurnout); showVotes(komisjeW, "POp", "PO", region, kN, minTurnout); komisjeW <- subset (komisje, typ == "R"); kN <- nrow(komisjeW) region <- "Polska/g.niemiejskie" showVotes(komisjeW, "PSLp", "PSL", region, kN, minTurnout); showVotes(komisjeW, "PiSp", "PiS", region, kN, minTurnout); showVotes(komisjeW, "POp", "PO", region, kN, minTurnout); ## woj = dwucyfrowy kod teryt województwa: komisje$woj <- substr(komisje$teryt, start=1, stop=2) cN <- c("dolnośląskie", "dolnośląskie", "kujawsko-pomorskie", "lubelskie", "lubuskie", "łódzkie", "małopolskie", "mazowieckie", "opolskie", "podkarpackie", "podlaskie", "pomorskie", "śląskie", "świętokrzyskie", "warmińsko-mazurskie", "wielkopolskie", "zachodniopomorskie"); cW <- c("02", "04", "06", "08", "10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30", "32"); ## wszystkie województwa po kolei: for (w in 1:16) { wojS <- cW[w] ###region <- cN[w]; region <- sprintf ("%s (%s)", cN[w], wojS); komisjeW <- subset (komisje, woj == wojS); ## showVotes(komisjeW, "PSLp", "PSL", region, kN, minTurnout); showVotes(komisjeW, "PiSp", "PiS", region, kN, minTurnout); showVotes(komisjeW, "POp", "PO", region, kN, minTurnout); } ## ## koniec
Dla całej Polski wyniki są następujące:
Indywidualne wykresy zaś tutaj: #01 #02 #03 #04 #05 #06 #07 #08 #09 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 #26 #27 #28 #29 #30 #31 #32 #33 #34 #35 #36 #37 #38 #39 #40 #41 #42 #43 #44 #45 #46 #47 #48 #49 #50 #51 #52 #53 #54 #55 #56 #57 #58 #59 #60):
Brak komentarzy:
Prześlij komentarz