R-ohjelmointi.org

Tilastotieteellistä ohjelmointia R-kielellä

Valtion ja kuntien työntekijöiden määrä

Tämän aamun (14.4.2013) Helsingin Sanomien Torsti Tietää -palstalla oli kysymys julkisen sektorin työntekijöiden määristä. Kysyjä epäili, että julkisen sektorin, siis kuntien ja valtion, työntekijöiden määrä kaikista työssäkäyvistä olisi kasvanut vuoden 1970 10 %:sta vuoden 2013 32 %:iin. Torsti viittaa valtion työmarkkinalaitoksen, KT Kuntatyönantajien ja Tilastokeskuksen lukuihin, joiden mukaan kasvu ei ole ollut ihan näin suurta, vaan noin 5-9% prosenttiyksikköä. Tutustutaanpa tilastoihin hieman tarkemmin, mutta todettakoon heti, että Torstin vastaus on kyllä kohdallaan.

Valtion työmarkkinalaitoksen aineisto löytyy Valtiovarainministeriön sivuilta. Vastaavasti kuntien henkilöstörakenteesta kertova aineisto löytyy Tilastokeskuksen sivuilta.

Tarkastellaanpa ensin kaikkia Suomen töissä käyviä kansalaisia. Suurin osa heistä oli vuonna 2011 töissä yksityisellä sektorilla. Valtion palveluksessa oli vajaa neljä prosenttia ja kuntien palveluksessa hieman yli 20 prosenttia kaikista töissä käyvistä henkilöistä.

Yksityisellä sektorilla oli töissä noin 1 600 000 miljonaa työntekijää, kunnilla noin 440 000, ja valtiolla noin 85 000 työntekijää. Tästä puuttuvat vielä kirkon noin 21 000 työntekijää. Yhteensä julkisella sektorilla työskentelee siis hieman yli neljännes koko Suomen työntekijöistä. Torstin vastaus näyttää siis olevan kohdallaan.

Kunnilla sosiaali- ja terveyspalvelut ja koulutus työllistävät suurimman osan henkilöstöstä. Myös julkinen hallinto työllistää runsaasti. Sosiaali- ja terveyspalvelut ovat kasvaneet voimakkaasti vuodesta 1975 vuoteen 1990, ja sen jälkeen kasvu on ollut suhteellisen pientä, vain joitakin kymmeniä tuhansia uusia työntekijöitä.

Valtiolla tällä hetkellä suurin työllistäjä on turvallisuuspalvelut, siis puolustusvoimat ja poliisitoimi. Yliopistot eivät enää kuulu valtiotyönantajiin, joten ne eivät esiinny kuvassa vuoden 2010 jälkeen. Nykyisin turvallisuuspalveluiden lisäksi suurimpia työllistäjiä valtiolla ovat elinkeinoelämän palvelut ja sektoritutkimuslaitokset.

OECD:n tilaston mukaan Suomen julkisen sektorin koko on moniin muihin maihin verrattuna selkeästi suurempi, mutta kuitenkin selkeästi pienempi kuin Norjassa, Tanskassa ja Ruotsissa. Norjassa ja Tanskassa julkisen sektorin koko vuonna 2008 oli miltei 30%. Saksassa julkisen sektorin koko oli puolestaan vain noin 10%.

Tarkempia tietoja siitä, mihin kuntien rahoitus menee, saa esimerkiksi Kuntaliiton sivuilta. Kuntaliiton tekemä visualisointi kuvaa hyvin kulujen jakaumaa eri momenteille eli sitä, mitä vastinetta kunnallisveroilleen saa. Verokuitti-palvelu puolestaan antaa näkymän siihen mitä valtiolle kerätyillä verorahoilla tehdään.

Ylläolevien kuvien tuottamiseen käytetty R-koodi löytyy alta. Se toimii esimerkkinä mm. Excel-tiedostojen lataamiseen verkosta ja niiden tuomiseen R:ään ODBC-yhteyden kautta. Muitakin vaihtoehtojen saman asian toteuttamiseen on, ja niitä on esitelty mm. R-Wikissä.

# Ladataan data
download.file("http://www.vm.fi/vm/fi/04_julkaisut_ja_asiakirjat/04_kuviot_ja_tilastot/06_valtio_tyonantajana/08_valtion_henkilosto/henkilosto.xls", "henkilosto.xls") 
library(RODBC)
excel.connect <- odbcConnectExcel("henkilosto.xls")
dat <- sqlFetch(excel.connect, '1#1#1', na.strings=c(""))
odbcClose(excel.connect)
 
# Käsitellään data
dat2<-t(na.omit(t(dat[6:47,1:34])))
dat3<-dat2[,c(1, 3, 4, 5, 9, 16, 17)]
colnames(dat3)<-c("vuosi", "työvoima", "työlliset", "valtio", "kunnat", "vientiteollisuus", "yksit.kotimarkkinat")
dat4<-apply(dat3, 2, as.numeric)
d<-data.frame(dat4)
 
d$tp<-1-d$työllisyys/d$työvoima
d$vp<-d$valtio/d$työlliset
d$kp<-d$kunnat/d$työlliset
d$yp<-(d$vientiteollisuus+d$yksit.kotimarkkinat)/d$työlliset
d$yksit<-rowSums(d[,6:7])
 
# Plotataan data
library(RColorBrewer)
par(mar=c(5,5,5,6))
matplot((d[8:10]), type="l", lwd=6, lty=1, axes=F, ylab="", ylim=c(0,1), xaxs="i", yaxs="i", col=brewer.pal(8, "Dark2")[c(5,3,2)])
abline(h=c(0.2, 0.4, 0.6, 0.8, 1), col="grey85")
abline(v=c(5,10,15,20,25,30,35,40), col="grey85")
matplot((d[8:10]), type="l", lwd=6, lty=1, axes=F, ylab="", ylim=c(0,1), add=T, col=brewer.pal(8, "Dark2")[c(5,3,2)])
axis(side=2, las=1, at=seq(0,1,0.2), labels=seq(0, 100, 20))
axis(side=1, las=2, at=1:42, labels=1970:2011)
mtext(side=1, line=4, text="Vuosi")
mtext(side=2, line=4, text="Työllisten osuus (%)")
mtext(side=4, line=1, at=d[42, 8], text="Valtio", las=1)
mtext(side=4, line=1, at=d[42, 9], text="Kunnat", las=1)
mtext(side=4, line=1, at=d[42, 10], text="Yksityinen", las=1)
title("Työnantajasektoreiden osuus kaikista työllisistä")
 
par(mar=c(5,5,5,6))
matplot(d[c(4,5,12)], type="l", lwd=6, lty=1, axes=F, ylab="", xaxs="i", yaxs="i", col=brewer.pal(8, "Dark2")[c(5,3,2)], ylim=c(0,1650))
abline(h=c(0.2, 0.4, 0.6, 0.8, 1), col="grey85")
abline(v=c(5,10,15,20,25,30,35,40), col="grey85")
matplot((d[c(4,5,12)]), type="l", lwd=6, lty=1, axes=F, ylab="", add=T, col=brewer.pal(8, "Dark2")[c(5,3,2)], ylim=c(0,1650))
axis(side=2, las=1, at=seq(0,max(d[,12]), 100), labels=seq(0,max(d[,12]), 100))
axis(side=1, las=2, at=1:42, labels=1970:2011)
mtext(side=1, line=4, text="Vuosi")
mtext(side=2, line=4, text="Työllisten lukumäärä")
mtext(side=4, line=1, at=d[42, 4], text="Valtio", las=1)
mtext(side=4, line=1, at=d[42, 5], text="Kunnat", las=1)
mtext(side=4, line=1, at=d[42, 12], text="Yksityinen", las=1)
title("Työllisten lukumäärä työnantajasektoreittain")
 
 
# Ladataan data
virastotyyppi<-structure(list(Virastotyyppi = structure(c(13L, 8L, 11L, 10L, 
7L, 4L, 2L, 12L, 5L, 1L, 3L, 9L, 6L), .Label = c("Alue- ja ympäristöpalvelut", 
"Elinkeinotoiminnan palvelut", "Kulttuuripalvelut", "Liikenne ja liikennepalvelut", 
"Ministeriötason toiminta", "Muut toiminnat", "Oikeustoimi", 
"Opetus- ja koulutuspalvelut", "Sosiaali- ja työvoimapalvelut", 
"Turvallisuustoiminta", "Tutkimustoiminta", "Valtiovarainh.sekä vak. ja rah.palv.", 
"Yliopistokoulutus"), class = "factor"), X2000 = c(28293L, 2776L, 
9782L, 35612L, 6160L, 7692L, 9502L, 8020L, 6468L, 5084L, 1079L, 
1617L, 1636L), X2001 = c(29357L, 2859L, 10055L, 36406L, 6183L, 
3449L, 9301L, 8001L, 6206L, 4509L, 1048L, 1629L, 1538L), X2002 = c(30395L, 
2978L, 10136L, 36942L, 6235L, 3435L, 9547L, 8126L, 6362L, 4794L, 
1085L, 1735L, 1488L), X2003 = c(30947L, 3002L, 9887L, 37392L, 
6217L, 3501L, 9772L, 8082L, 6384L, 4703L, 1092L, 1768L, 1438L
), X2004 = c(31336L, 3049L, 9834L, 37428L, 6168L, 2476L, 9992L, 
8075L, 6473L, 4688L, 1149L, 1846L, 1397L), X2005 = c(31385L, 
3073L, 9869L, 37240L, 6095L, 2416L, 10121L, 7927L, 6630L, 4684L, 
1111L, 1925L, 1345L), X2006 = c(31420L, 3174L, 9431L, 37036L, 
5621L, 2524L, 10728L, 7887L, 6560L, 4510L, 1039L, 1986L, 1302L
), X2007 = c(32169L, 2935L, 9426L, 35858L, 5966L, 2435L, 10791L, 
7763L, 6180L, 4348L, 1108L, 2029L, 1192L), X2008 = c(31950L, 
2861L, 9207L, 35540L, 5955L, 2371L, 10864L, 7690L, 6124L, 3922L, 
1230L, 2085L, 1132L), X2009 = c(32797L, 2481L, 9210L, 35571L, 
6402L, 2373L, 11110L, 7641L, 5987L, 3944L, 1230L, 2129L, 1048L
), X2010 = c(NA, 1544, 9245, 35319, 6168, 1447, 13911, 6831, 5744, 
2269, 1209, 1674, 1022), X2011 = c(NA, 1481, 9206, 35149, 6118, 
1460, 13577, 6574, 5656, 2180, 1094, 1598, 979)), .Names = c("Virastotyyppi", 
"X2000", "X2001", "X2002", "X2003", "X2004", "X2005", "X2006", 
"X2007", "X2008", "X2009", "X2010", "X2011"), row.names = c(NA, 
-13L), class = "data.frame")
 
#Plotataan data
par(mar=c(5,5,5,12))
matplot(t(log10(virastotyyppi[,2:13])), type="l", lty=1, lwd=6, col=brewer.pal(11, "Set3"), axes=F, ylab="", xaxs="i", yaxs="i",ylim=c(3,4.7))
abline(h=c(3,3.5,4,4.5), col="grey85")
abline(v=c(2,4,6,8,10), col="grey85")
matplot(t(log10(virastotyyppi[,2:13])), type="l", lty=1, lwd=6, col=brewer.pal(11, "Set3"), axes=F, ylab="", xaxs="i", yaxs="i",ylim=c(3,4.7), add=T)
axis(side=1, las=2, at=1:12, labels=2000:2011)
mtext(side=1, line=4, text="Vuosi", las=1)
axis(side=2, las=1, at=log10(c(1000, 2000, 3000, 5000, 10000, 20000, 30000, 50000)), labels=c(1000, 2000, 3000, 5000, 10000, 30000, 20000, 50000))
mtext(side=2, line=4, text="Työllisten lukumäärä")
title("Valtion työllisten lukumäärä virastotyypeittäin")
mtext(side=4, line=0.2, at=log10(virastotyyppi[2:13,13]), text=virastotyyppi$Virastotyyppi[2:13], las=1, cex=0.75)
mtext(side=4, line=0.2, at=log10(virastotyyppi[1,11]), text="Yliopistokoulutus", las=1, cex=0.75)
 
 
# Ladataan data
kunnat<-structure(list(toimiala = structure(c(10L, 11L, 1L, 2L, 3L, 4L, 
5L, 6L, 13L, 12L, 8L, 7L, 9L), .Label = c("80_82 Muut tukipalvelut", 
"82 Hallinto- ja tukipalvelut liike-elämälle", "841_842 Julkinen hallinto", 
"85 Koulutus", "86 Terveyspalvelut", "87_88 Sosiaalipalvelut", 
"90_91 Kulttuuritoiminta", "90_92 Kulttuuritoiminta ja rahapelit", 
"93 Urheilu-, huvi- ja virkistyspalvelut", "F Rakentaminen", 
"M_N Ammatillinen, tieteellinen ja tekninen toiminta", "R Taiteet, viihde ja virkistys", 
"R_T Muut palvelut"), class = "factor"), X1975 = c(21L, 0L, 0L, 
0L, 395L, 646L, 791L, 415L, 77L, 77L, 45L, 45L, 32L), X1976 = c(21L, 
0L, 0L, 0L, 420L, 692L, 874L, 473L, 85L, 85L, 50L, 50L, 35L), 
    X1977 = c(24L, 0L, 0L, 0L, 446L, 730L, 894L, 510L, 90L, 90L, 
    53L, 53L, 37L), X1978 = c(23L, 0L, 0L, 0L, 446L, 755L, 948L, 
    556L, 99L, 99L, 58L, 58L, 41L), X1979 = c(26L, 0L, 0L, 0L, 
    474L, 780L, 988L, 600L, 109L, 109L, 64L, 64L, 45L), X1980 = c(26L, 
    0L, 0L, 0L, 500L, 797L, 1021L, 646L, 110L, 110L, 65L, 65L, 
    45L), X1981 = c(29L, 0L, 0L, 0L, 547L, 821L, 1062L, 680L, 
    117L, 117L, 68L, 68L, 49L), X1982 = c(30L, 0L, 0L, 0L, 569L, 
    821L, 1118L, 714L, 124L, 124L, 73L, 73L, 51L), X1983 = c(30L, 
    0L, 0L, 0L, 576L, 833L, 1145L, 754L, 136L, 136L, 80L, 80L, 
    56L), X1984 = c(29L, 0L, 0L, 0L, 566L, 832L, 1189L, 814L, 
    144L, 144L, 85L, 85L, 59L), X1985 = c(29L, 0L, 0L, 0L, 563L, 
    848L, 1230L, 862L, 153L, 153L, 90L, 90L, 63L), X1986 = c(30L, 
    0L, 0L, 0L, 574L, 857L, 1261L, 903L, 160L, 160L, 94L, 94L, 
    66L), X1987 = c(30L, 0L, 0L, 0L, 583L, 874L, 1299L, 953L, 
    169L, 169L, 99L, 99L, 70L), X1988 = c(31L, 0L, 0L, 0L, 601L, 
    888L, 1317L, 1004L, 174L, 174L, 102L, 102L, 72L), X1989 = c(31L, 
    0L, 0L, 0L, 609L, 909L, 1328L, 1067L, 176L, 176L, 103L, 103L, 
    73L), X1990 = c(31L, 4L, 0L, 0L, 609L, 913L, 1341L, 1094L, 
    177L, 177L, 104L, 104L, 73L), X1991 = c(33L, 4L, 0L, 0L, 
    624L, 915L, 1339L, 1108L, 177L, 177L, 104L, 104L, 73L), X1992 = c(34L, 
    4L, 0L, 0L, 584L, 889L, 1302L, 1061L, 174L, 174L, 102L, 102L, 
    72L), X1993 = c(34L, 4L, 0L, 0L, 568L, 858L, 1225L, 990L, 
    151L, 151L, 88L, 88L, 63L), X1994 = c(33L, 4L, 0L, 0L, 564L, 
    860L, 1222L, 992L, 149L, 149L, 87L, 87L, 62L), X1995 = c(33L, 
    4L, 0L, 0L, 582L, 913L, 1240L, 1003L, 155L, 155L, 91L, 91L, 
    64L), X1996 = c(36L, 4L, 0L, 0L, 598L, 956L, 1258L, 1044L, 
    160L, 160L, 94L, 94L, 66L), X1997 = c(60L, 4L, 0L, 0L, 661L, 
    983L, 1268L, 1064L, 164L, 164L, 96L, 96L, 68L), X1998 = c(58L, 
    4L, 0L, 0L, 647L, 988L, 1266L, 1055L, 159L, 159L, 93L, 93L, 
    66L), X1999 = c(55L, 4L, 0L, 0L, 652L, 997L, 1263L, 1052L, 
    158L, 158L, 93L, 93L, 65L), X2000 = c(52L, 4L, 0L, 0L, 657L, 
    1005L, 1291L, 1062L, 159L, 159L, 93L, 93L, 66L), X2001 = c(53L, 
    4L, 0L, 0L, 671L, 1015L, 1319L, 1093L, 163L, 163L, 95L, 95L, 
    68L), X2002 = c(56L, 27L, 23L, 23L, 686L, 1033L, 1349L, 1111L, 
    165L, 165L, 97L, 97L, 68L), X2003 = c(51L, 16L, 12L, 12L, 
    712L, 1051L, 1365L, 1103L, 164L, 164L, 96L, 96L, 68L), X2004 = c(49L, 
    26L, 22L, 22L, 719L, 1060L, 1375L, 1110L, 163L, 163L, 95L, 
    95L, 68L), X2005 = c(48L, 29L, 25L, 25L, 718L, 1047L, 1389L, 
    1116L, 163L, 163L, 95L, 95L, 68L), X2006 = c(47L, 30L, 26L, 
    26L, 716L, 1050L, 1395L, 1138L, 161L, 161L, 94L, 94L, 67L
    ), X2007 = c(43L, 43L, 39L, 39L, 721L, 1040L, 1392L, 1150L, 
    158L, 158L, 93L, 93L, 65L), X2008 = c(39L, 58L, 54L, 54L, 
    721L, 1025L, 1407L, 1190L, 162L, 162L, 95L, 95L, 67L), X2009 = c(43L, 
    69L, 65L, 65L, 709L, 1000L, 1409L, 1209L, 158L, 158L, 95L, 
    95L, 63L), X2010 = c(42L, 83L, 79L, 79L, 700L, 1008L, 1402L, 
    1187L, 159L, 159L, 96L, 96L, 63L), X2011 = c(41L, 82L, 78L, 
    78L, 706L, 1013L, 1409L, 1209L, 159L, 159L, 97L, 97L, 62L
    )), .Names = c("toimiala", "X1975", "X1976", "X1977", "X1978", 
"X1979", "X1980", "X1981", "X1982", "X1983", "X1984", "X1985", 
"X1986", "X1987", "X1988", "X1989", "X1990", "X1991", "X1992", 
"X1993", "X1994", "X1995", "X1996", "X1997", "X1998", "X1999", 
"X2000", "X2001", "X2002", "X2003", "X2004", "X2005", "X2006", 
"X2007", "X2008", "X2009", "X2010", "X2011"), class = "data.frame", row.names = c(NA, 
-13L))
kunnat<-kunnat[-c(9,10,12),]
 
# Plotataan data
par(mar=c(5,5,5,12))
matplot(t(kunnat[,2:38]*100), type="l", lty=1, lwd=6, col=brewer.pal(11, "Set3"), axes=F, ylab="", xaxs="i", yaxs="i", ylim=c(0, 150000))
abline(h=seq(0,150000,25000), col="grey85")
abline(v=seq(1,37,5), col="grey85")
matplot(t(kunnat[,2:38]*100), type="l", lty=1, lwd=6, col=brewer.pal(11, "Set3"), axes=F, ylab="", xaxs="i", yaxs="i", ylim=c(0, 150000), add=TRUE)
axis(side=1, las=2, at=1:37, labels=1975:2011)
axis(side=2, las=1, at=seq(0,150000,25000), labels=c("0","25000","50000","75000","100000","125000","150000"))
mtext(side=4, at=kunnat[,38]*100, text=kunnat$toimiala, las=1, cex=0.75)
mtext(side=1, line=4, text="Vuosi", las=1)
mtext(side=2, line=4, text="Työllisten lukumäärä")
title("Kuntien työllisten lukumäärä palvelualoittain")

6 Responses to “Valtion ja kuntien työntekijöiden määrä”