R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Maailman tilastopäivä 20.10.2013

Tänään vietetään neljättä kertaa maailman tilastopäivää. Tapahtumalla on mm. oma Facebook-sivu. Käytetäänpä siis päivän kunniaksi jotakin suomalaista tilastoa!

Parin viime viikon aikana julkisuudessa on keskusteltu julkisen sektorin palkoista. Esimerkiksi Talouselämän artikkeli ”Valtion leipäkö kapea?” kertoo, että valtion palkat ovat kasvaneet yksityistä sektoria nopeammin, ja keskiarvopalkka on myös valtiolla työnantajasektoreista korkein. Tilastokeskuksen palkkarakenne-tilaston julkistusuutinen ja Findikaattori lisäävät uutiseen vähän yksityiskohtia: Valtion palkat ovat myös kasvaneet yksityistä sektoria nopeammin.

Valtion tulkitseminen palkkajohtajaksi on kuitenkin hieman ennenaikaista. Ilmiön nimittäin selittää pitkälti se, että valtiolla on nykyisin töissä erityisesti hyvin koulutettua henkilöstöä, joka on vielä keskimäärin vanhempaa kuin yksityisellä sektorilla. Tätä on selitetty yksityiskohtaisemmin Tilastokeskuksen Palkkarakenne-tilaston katsauksessa. Katsauksesta käy hyvin ilmi, että valtion palkkataso on kussakin ammattiryhmässä samaa tasoa tai pienempi kuin yksityisellä sektorilla, poislukien poliisit ja armeijan henkilöstö. Koulutuksen ja ammattiryhmän vaikutus palkkatasoa kuvaaviin keskiarvoihin voidaan poistaa vakioinnilla, minkä jälkeen valtion palkkataso vastaa yksityisen sektorin palkkatasoa, tai jää jonkin verran sen alle, kun poliisien ja armeijan henkilöstön vaikutus poistetaan.

Tilastokeskuksen julkaisemasta katsauksestakin puuttuvat kuitenkin hajontaa kuvaavat suureet. Itse Palkkarakenneaineistoon on kuitenkin laskettu hajontaa kuvaavat 10. ja 90. prosenttipiste. Lisäksi aineistossa on saatavilla ammattiryhmäkohtainen mediaani, joka kuvaa keskimääräistä ansiotasoa hieman keskiarvoa paremmin, sillä palkka-aineisto on jakaumaltaan kohtalaisesti oikealle vino. Vinous johtuu siitä, että suuria ja hyvin suuria palkkoja on vähän, ja pieniä tai keskimääräisiä eniten, mutta nuo suuret palkat vetävät keskiarvoa puoleensa, jolloin keskiarvosta muodostuu tavallaan aavistuksen liian suuri.

Jos Tilastokeskuksen katsausta vastaavat ammattiryhmät piirretään yhteen kuvaan, näyttää tulos alla olevan kaltaiselta (pallo on mediaanipalkka, ja sen ympärillä oleva viiva kuvastaa 10-90 prosenttipisteen väliä):

Kaiken kaikiaan kuntien palkkataso on keskimäärin alhaisin, yksityinen sektori johtaa miltei kaikissa ammattiryhmissä, ja valtio asettuu näiden välille. Yksityisellä sektorilla esiintyvät miltei kaikissa ryhmissä suurimmat palkat, koska jakauman leveyttä kuvastava viiva ulottuu yksityisellä sektorilla pisimmälle.

Tulos voidaan pilkkoa vieläkin pienempiin ryhmin, jolloin nähdään, että yksittäisten ammattien sisällä voi olla suuriakin eroja eri sektoreiden välillä. Esimerkiksi luonnontieteiden asiantuntijoista pistävät silmään maa- ja vesirakentamisen asiantuntijat, joilla on korkea palkkataso valtiolla, ja erityisasiantuntijoista kunnalla muita korkeampaa palkkaa nostavat biologit ja kemistit. Yksityiselä puolella esimerkiksi tekniset piirtäjät tuntuvat ansaitsevan hyvin.

Yhteenvetona voinee sanoa, että kullakin sektoreilla on ammatteja, joissa tällä hetkellä ansaitsee muita sektoreita enemmän. Pelkkiin keskiarvoihin tuijottaminen ei kannata, sillä hajontakin kannattaa huomioida. Paras tilanne tällä hetkellä olisi kenties ammattiryhmällä, jolla palkkataso olisi yhdellä sektorilla muita korkeampi, ja hajontakin olisi pientä. Valtion näennäistä palkkajohtajuutta selittää asiantuntijatehtävien runsaus. Valtio on palkkajohtaja käytännössä vain poliisi- ja suojelutoiminnassa, jota ei toisaalta samantasoisena ja -sisältöisenä ole yksityisellä sektorilla edes olemassa.

Tietolähteinä ovat Tilastokeskuksen vuonna 2013 julkaistut tilastot Palkkarakenne, Valtion kuukausipalkat, Kuntasektorin palkat, ja Yksityisen sektorin kuukausipalkat.

Ensimmäisen kuvan piirtämiseen käytetty R-koodi on alla, mutta on laadittu vastaavalla tavalla.

# Kuvan tuottamiseen käytetty aineisto
d2<-structure(list(k.Lukumäärä.yhteensä = c(33081, 1423, 2895, 4899, 
126522, 23736, 97546, 126597, 10870), k.Säännöllisen.työajan.ansion.1.desiili..e.kk = c(1743, 
1840, 1904, 2003, 1869, 1948, 2188, 2458, 2954), k.Säännöllisen.työajan.ansion.mediaani..e.kk = c(1976, 
2343, 2223, 2445, 2262, 2219, 2633, 3333, 4407), k.Säännöllisen.työajan.ansion.9.desiili..e.kk = c(2363, 
2934, 2844, 2844, 2880, 2542, 3394, 4757, 6286), v.Lukumäärä.yhteensä = c(881, 
267, 1088, 96, 7095, 10004, 27941, 23261, 2686), v.Säännöllisen.työajan.ansion.1.desiili..e.kk = c(1519.73, 
1582.01, 1740.39, 2052.37, 2453.5, 2067.29, 2308.72, 2692.85, 
4189.5), v.Säännöllisen.työajan.ansion.mediaani..e.kk = c(2181.49, 
2523.78, 2627.125, 2520.24, 3131.635, 2471.75, 2910.14, 3847.4, 
5986.59), v.Säännöllisen.työajan.ansion.9.desiili..e.kk = c(2964.45, 
3345.24, 3856.42, 3181.66, 3742.05, 3266.07, 4378.82, 5633.41, 
8042.2), y.Lukumäärä = c(27992, 17835, 19364, 578, 114840, 81988, 
199492, 164704, 39672), y.Säännöllisen.työajan.ansion.1.desiili = c(1666, 
1933, 1995, 1642, 1781, 2009, 2300, 2677, 3162), y.Säännöllisen.työajan.ansion.mediaani = c(2083, 
2553, 2603, 2186, 2185, 2533, 3097, 3947, 5470), y.Säännöllisen.työajan.ansion.9.desiili = c(2732, 
3732, 3565, 2729, 3000, 3324, 4561, 5820, 8649), Ammatti = c("Muut työntekijät", 
"Prosessi- ja kuljetustyöntekijät", "Rakennus-, korjaus- ja valmistustyöntekijät", 
"Maanviljelijät, metsätyöntekijät ym.", "Palvelu- ja myyntityöntekijät", 
"Toimisto- ja asiakaspalvelutyöntekijät", "Asiantuntijat", "Erityisasiantuntijat", 
"Johtajat")), .Names = c("k.Lukumäärä.yhteensä", "k.Säännöllisen.työajan.ansion.1.desiili..e.kk", 
"k.Säännöllisen.työajan.ansion.mediaani..e.kk", "k.Säännöllisen.työajan.ansion.9.desiili..e.kk", 
"v.Lukumäärä.yhteensä", "v.Säännöllisen.työajan.ansion.1.desiili..e.kk", 
"v.Säännöllisen.työajan.ansion.mediaani..e.kk", "v.Säännöllisen.työajan.ansion.9.desiili..e.kk", 
"y.Lukumäärä", "y.Säännöllisen.työajan.ansion.1.desiili", "y.Säännöllisen.työajan.ansion.mediaani", 
"y.Säännöllisen.työajan.ansion.9.desiili", "Ammatti"), class = "data.frame", row.names = c(289L, 
280L, 265L, 257L, 231L, 199L, 134L, 33L, 11L))
 
# Kuvan piirtäminen
bmp(file="Kaikki_ammattiryhmät.bmp", width=800, height=1200)
par(mar=c(2,25,5,1))
plot(y=0.9, x=d2$k.Säännöllisen.työajan.ansion.mediaani..e.kk[1], pch=16, col="white", xlab="", ylab="", las=1, xlim=c(0,10000), cex=log10(d2$k.Lukumäärä.yhteensä[1]), ylim=c(0,nrow(d2)+1.5), axes=F)
lines(x=c(0, 0), y=c(1.65, nrow(d2)+1.5), col="grey85")
lines(x=c(2000, 2000), y=c(1.65, nrow(d2)+1.5), col="grey85")
lines(x=c(4000, 4000), y=c(1.65, nrow(d2)+1.5), col="grey85")
lines(x=c(6000, 6000), y=c(1.65, nrow(d2)+1.5), col="grey85")
lines(x=c(8000, 8000), y=c(1.65, nrow(d2)+1.5), col="grey85")
lines(x=c(10000, 10000), y=c(1.65, nrow(d2)+1.5), col="grey85")
for(i in 1:nrow(d2)) {
 points(y=0.9+i, x=d2$k.Säännöllisen.työajan.ansion.mediaani..e.kk[i], pch=16, col="#7570B3", xlim=c(0,10))
 lines(y=c(0.9+i, 0.9+i), x=c(d2$k.Säännöllisen.työajan.ansion.1.desiili[i], d2$k.Säännöllisen.työajan.ansion.9.desiili[i]), col="#7570B3", lwd=1.5)
 text(y=c(0.9+i), x=c(d2$k.Säännöllisen.työajan.ansion.9.desiili[i]), pos=4, labels=d2$k.Lukumäärä.yhteensä[i], adj=0.5, cex=1) 
 points(y=1.0+i, x=d2$v.Säännöllisen.työajan.ansion.mediaani..e.kk[i], pch=16, col="#66A61E")
 lines(y=c(1.0+i, 1.0+i), x=c(d2$v.Säännöllisen.työajan.ansion.1.desiili[i], d2$v.Säännöllisen.työajan.ansion.9.desiili[i]), col="#66A61E", lwd=1.5)
 text(y=c(1.0+i), x=c(d2$v.Säännöllisen.työajan.ansion.9.desiili[i]), pos=4, labels=d2$v.Lukumäärä.yhteensä[i], adj=0.5, cex=1) 
 points(y=1.1+i, x=d2$y.Säännöllisen.työajan.ansion.mediaani[i], pch=16, col="#D95F02")
 lines(y=c(1.1+i, 1.1+i), x=c(d2$y.Säännöllisen.työajan.ansion.1.desiili[i], d2$y.Säännöllisen.työajan.ansion.9.desiili[i]), col="#D95F02", lwd=1.5)
 text(y=c(1.1+i), x=c(d2$y.Säännöllisen.työajan.ansion.9.desiili[i]), pos=4, labels=d2$y.Lukumäärä[i], adj=0.5, cex=1) 
 if(i==nrow(d2)) {
   axis(side=1, line=-14)
 }
}
axis(side=2, at=2:(nrow(d2)+1), labels=d2$Ammatti, cex.axis=1.25, las=2)
title(main="Ammattiryhmät", cex=2.5)
legend(x="top", pch=16, col=c("#7570B3", "#66A61E", "#D95F02"), legend=c("kunta","valtio","yksityinen"), ncol=3, bty="n", cex=1.25)
dev.off()


Category