Kui sünnitataks alati keskmiselt

Tuues põhjenduseks tervishoiuteenuste pakkumise kulu-efektiivsemaks ja kvaliteetsemaks muutmise, plaanitakse sulgeda 2018. aastal Põlva ja Valga sünnitusosakonnad. Sünnitajad on teretulnud Tartu ülikooli kliinikumi. Meedias kõlanud TÜ kliinikumi juhtide arvamuste järgi on kliinikumis ruumi piisava varuga, et pakkuda kvaliteetset teenust ja vastata sünnitajate ootustele.

Et meedias on käsitletud keskmisi näitajaid, siis sooviksin alljärgnevas lühianalüüsis rõhutada teist aspekti – sünnituste varieeruvust. Nimelt peab sünnituste arvu igapäevasel prognoosimisel ja nende jaoks ressursside planeerimisel ühe haigla piires arvestama, et tegemist on üsna volatiilse näitajaga. Alljärgneval joonisel on toodud sünnituste päevane aegrida kliinikumis jaanuar 2017-aprill 2018 koos libiseva keskmisega (must joon) ja mulle teadaolevalt avatud sünnitustubade arvuga (punane joon).

synnidaegrida

Ülaltoodud jooniselt on selgelt näha, et üksnes keskmiste sünnituste arvu võrdlemine kliinikumi sünnitustubade või perepalatite arvuga ei iseloomusta kogu pilti. Nii näiteks on vaadeldud perioodi keskmine sünnituste arv päevas 6,7, mis tõesti on väiksem kui avatud sünnitustubade arv kaheksa. Samas on veerandil päevadest sünnituste arv 8 või enam ning igal kümnendal päeval on sünnituste arv 10 või enam. (Lisaks esineb veel täiendav varieeruvus tulenevalt sellest, kui kaua üks sünnitaja sünnitustoas on, kuid nii detailseid andmeid kahjuks ei ole avalikult olemas.)

Sünnituste arvu ühes haiglas iseloomustatakse tavaliselt Poissoni jaotusega. (Vt varasemate taoliste analüüside kohta nt Gam et al. A model for the distribution of daily number of births in obstetric clinics based on a descriptive retrospective study. BMJ Open 2013;3: e002920. doi:10.1136/bmjopen-2013-002920.)

Poissoni jaotus tähendab seda, et sünnitajate keskmine arv on seotud ka hajuvusega. Kui sünnitusi tuleb juurde, siis kasvab ka nende varieeruvus. Ka TÜ kliinikumi andmete puhul on sündide arvu dispersioon 7.3 (standardhälve 2.7), mis on ligikaudu võrdne keskmise sünnitajate arvuga, nii nagu nagu Poissoni jaotusele kohane.

synnidhistogram

Kui oleksin kliinikumi sünnitusosakonna juhataja, siis minule tekitaks Põlva ja Valga haigla sünnitajate lisandumine kahetisi tundeid. Töökoormuse keskmine kasv tähendab keskmiselt suuremat personali vajadust ja seega suuremat eelarvet. Samas kasvab ka sündide varieeruvus, mis tekitab suurema korratuse igapäevatöös. Kasvab päevade arv, kui kõik sünnitustoad on täis, kui perepalateid ei jagu ning ämmaemandad jooksevad mitme sünnitustoa ja operatsiooniblokis tehtavate keisrite vahet.

Näiteks, kui liita 2017. aasta TÜ kliinikumi, Valga ja Põlva haiglate sünnituste arvud, siis kasvaks keskmine sünnituste arv ise vaid 0,8 sünnituse võrra ehk 7,5 sünnituseni päevas. Samas kasvab dispersioon 9,2ni. See toob kaasa selle, et kui kõik Valga ja Põlva haigla sünnitused oleksid Tartus, siis oleks igal neljandal päeval sünnituste arv 10 või enam ning igal kümnendal päeval 12 või enam. Seega ehkki keskmiselt on kõik korras ja sünnituste arv on keskmiselt endiselt väiksem kui sünnitustubade arv, siis kasvab risk, et sünnitajaid on enam kui normaalne töökorraldus võimaldaks.

Sünnituste keskmine arv erineb ka päevade lõikes, kuid iga päeva sees on jaotus taas Poissoni jaotuse lähedane. Nädalavahetuseti on sünnitajate keskmine arv väiksem. (Seda seletab ilmselt plaaniliste keisrite toimumine argitpäeviti.)

synnidhistogrampaevad

Alljärgnevalt on simuleeritud veel sünnitanud naiste sünnitusjärgne viibimine TÜ kliinikumis kui kõik Valga ja Põlva sünnitajad oleksid tulnud TÜ kliinikumi 2017. aastal.
Tervisearenguinstituudi statistika kohaselt Tabel RV301 oli keskmine ravikestus sünnitusabis 2016. aastal 2,8 päeva. Eeldame, et tavasünnitaja on haiglas koos sünnituspäevaga kokku 2, 3 või 4 päeva vastavalt tõenäosustega 50%, 40% ja 10%. Samad tõenäosused keisriga sünnitaja puhul oleksid vastavalt 10%, 20% ja 70%. Kui keisersünnituste osakaal on viiendik, siis saadud osakaalud annavadki keskmiseks voodipäevade arvuks täpselt 2,8.

Simulatsioonitulemused näitavad, et naiste simuleeritud arv, kes on haiglas, ületab 2,5 protsendil juhtudest voodite arvu 30 (13 perepalatit + 16 kohta kahekohalistes palatites + 1 koht ühekohalistes palatites). Eeldatavasti on see puhver, mida saab päevasisese planeerimisega kergesti korraldada, või on see lihtsalt simulatsiooniviga. Kui aga liita siia juurde kõik Valga ja Põlva haigla sünnitajad, siis ulatub naiste simuleeritud arv, kes vooditesse ära ei mahu 8 protsendini. See viitab sellele, et kliinikul on vaja planeerida endale voodi- ja inimreservi võrreldes praeguse olukorraga kui soovida, et kõik sünnitajad kliinikumis end mugavalt tunneks ka tulevikus.

simuleeritudnaistearv

Simuleeritud naiste arv haiglas päevade kaupa (mediaan, ülemine ja alumine kvartiil) on esitatud järgmisel joonisel. Kui sünnitamine oleks planeeritav, siis annaks soovituse noortele, et ajalooliste andmete põhjal on kõige rahulikum sünnitada pühapäeval ja lahkuda kolmapäeva varahommikul.

simuleeritudsynnitajad

Kokkuvõtteks sooviks rohkem näha, et taoliste otsuse puhul ei piirdutaks analüüsis vaid paari keskmise arvuga, vaid näidataks (eeldatavasti on kliinikul analüüs tehtud), kuidas mõjutab Põlva ja Valga sulgemine ka kliinikumi ressursside planeerimist tulenevalt kasvavast variatsioonist.

Kui Põlva ja Valga sulgemise puhul tuuakse põhiargumendina madalast sünnituse koguarvust tulenevat võimaliku ohtu teenuse kvaliteedile, siis ei tohiks jätta näitamata, kuidas mõjutab inimeste heaolu ka see, kui sünnitaja satub Tartusse päeval, kui seal on juba ees 15 sünnitajat.

Lõpumärkus. Autoril puudub seos Põlva, Valga või TÜ kliinikumi sünnitusosakonnaga. Kõik kolm last on sündinud TÜ kliinikumis. Antud lühianalüüsi ajend oli loeng loenduvatest andmetest (count data)  ja Poissoni jaotusest majandustudengitele. Kui keegi soovib analüüsi reprodutseerida, siis andmed on all joonistel. Jõudu!

syndidealgandmed20.pngAllikas: mitmed tublid ajakirjanikud, kes fotod ja videod on on-line väljaannetesse pannud

Advertisements
Rubriigid: Uncategorized | 2 kommentaari

Pilte ametniku punasest Ferrarist

EE „Ratase maksureform: jaht kulakutele alaku!“ seletab maksu- ja õiglushuvilistele üpris tõetruult lahti, mis kedagi meist, sõltuvalt meie sotsiaalsest klassist, ees ootab. Muu hulgas …

Töötajatel miinus 36 eurot kuus

Järgmine kulakute klass, kellele hoop antakse, on töötajad, kelle brutopalk kuus on 2100 eurot ja enam. Nemad saavad 36 eurot kuus ehk aastas 432 eurot miinust. Kallis Ekspressi lugeja, kui sina ei tea ühtegi inimest, kelle brutopalk on 2100 eurot, siis võid neid tänaval ära tunda punaste Ferraride ja Hermese käekottide järgi. Kui märkad, sisista ja näita nende peale näpuga. Neid inimesi oli 2016. aastal Eestis 58 965 tükki. Kaks korda enam, kui Stalin suutis omal ajal Eestist kulakuid leida, aga samas nii vähe (kui uskuda Kersti Sarapuud ja Keskerakonna pressiteadet), et nendega ei pea arvestama. Teie – 58 965 inimest – võite kõngeda oma hanemaksapasteedi ja teemantsõrmuste kätte!“

Põgus pilk avalike teenistujate avalikele palgaandmetele kinnitab, et tubli kolmandik rahandusministeeriumi ametnikke langeb just sellesse kulakute kategooriasse. Samas pole tähele pannud, et mõni punane auto ministeeriumi parklas oleks Ferrari. Kuid küsimus on huvitav – kuidas tuvastada kulakut Eestis AD 2017, palga või auto järgi? Vastusest sellele küsimusele võiks sõltuda maksupoliitika kujundamine!

Ferrarisid on praegusel aastaajal vähe liikvel, nii et võtame „Eesti asja ajamise auto“ Toyota Land Cruiseri (iseseisvuse algusaastail kutsuti niimoodi hellitavalt 20 a vanust Ford Transitit), mis näeb välja niimoodi ja maksab ümmarguselt 50 000 €. Ka seda laialt levinud keskklassi autot pole ministeeriumi parklas näha, kuid maanteeameti andmeil liigub selliseid kuni viie aasta vanuseid isendeid meie teedel umbes tuhat, kõik värvid kokku. Ja valdavas enamuses kuuluvad need firmadele, mida uuem eksemplar, seda kindlamini.

TLC

Nüüd huvitume, kui suurt (maksustatud) palka teenivad inimesed, kes võivad istuda sellise auto roolis (on maanteeametei andmeil auto kasutajad), kui me peaksime kõik need tuhat masinat tänaval kinni pidama. E-riigile kohaselt ei vii me seda sotsiaalset eksperimenti läbi talvise ilmaga tänaval. Maksu- ja maanteeameti koostöös joonistub sellise uuepoolse firmaauto roolis istuvate inimeste palgajaotusest allolev pilt. (Andmed on veidi vananenud – see peegeldab 2013 aasta seisu.)

jaotus TLC

Lugeda tuleb seda nii, et enim juhte (mood 100 euroste palgavahemike puhul) teenis tolle aja alampalka (300–400 eurot kuus), kaks kolmandikku alla 1200 (ei tea, kas õpetajad aastal 2013 sellisest palgast või autost juba unistasid) ja valdav enamus alla 2100 . Laiendades veidi automarkide valikut on pilt järgmine. (Endiselt 2013 a palgad, mis praeguseks on mõnevõrra tõusnud.) Ei-ei, see ei ole kriitika ettevõtjate aadressil – (tööjõu)maksude maksmine ei pea olema vabatahtlik!

seos palk-auto

Seda pilti tuleb tõlgendada nii, et kõigist firmale kuuluva Toyota Yarise roolis olijatest pooled teenivad üle 1000 € kuus maksustatud brutopalka ja pooled alla. Ja ükskõik millise uuepoolse Porsche või Land Cruiseri roolis olijate osas on murdepunkt ehk mediaan veidi üle 900 € bruto.

Mida sellest arvata?

  • Miinus 36 eurot kuus ei tapa, kui su palk on 2100, aga …;
  • Olulist osa nendest, kelle elustiili ja maitseeelistusi peegeldab uus ilus auto, see maksureform ei puuduta;
  • Või tegelikult, puudutab küll – riik kingib suurele osale neist, sarnaselt teiste madalapalgalistega, kuni 62 eurot kuus;
  • Valija – taksojuhist ajakirjanikuni – ei kujuta ette, kuidas on Eestis jaotunud maksevõime ja maksukoormus, või see teda ei huvita;
  • Ilmselget maksevõimet oleks meie tingimustes efektiivne maksustada autode kaudu (mida on raskem varjata kui tulu), aga see ei näi olevat valijate ja/või ettevõtjate tahe (ehk arusaam õiglusest), mistõttu ei saa see demokraatia tingimustes väljenduda ka poliitilistes otsustes;
  • Eelnevast tulenevalt maksustame edaspidigi õllepudelit, mis on aktsiisi mõttes juba praegu kõige kõrgemalt maksustatud ELis ja ilmselt kogu maailmas (sissetulekuid arvestades).

Kas Hegel oleks ka selles kontekstis arvanud, et mis on mõistlik, see on tegelik, ja mis on tegelik, see on mõistlik?

Rubriigid: Uncategorized | Sildid: , , , , | Lisa kommentaar

Tere tulemast andmekaeve sajandisse, Statistikaamet! Ehk kuidas uuest andmebaasist R-iga andmeid tõmmata

Viimaks on jõudnud ka Eesti Statistikaamet nii kaugele, et enam ei pea nende kodulehelt andmete alla laadimiseks hiirega kümneid kordi klikkima. Teades andmetabeli nime, on nüüd võimalik uuest andmebaasist andmeid otse alla laadida XML-faili kujul niinimetatud SDMX (Statistical Data and Metadata eXchange) vormingus. Järgnevalt jagan enda kogemusi, kuidas seda teha programmiga R. Soovitan lugeda ka Statistikaameti põgusat juhendit, lk 16) selle teema kohta.

Üks võimalus on andmed automaatselt alla laadida paketiga rsdmx (vt info CRANis või paketi ühe autori Emmanuel Blondeli tutvustavat ettekannet]).

Installeerime ja aktiveerime paketi rsdmx, võtame viimase versiooni githubist, ja teised paketid dplyr ja ggplot2 andmete töötlemiseks ning kuvamiseks.

devtools::install_github("opensdmx/rsdmx")
library(rsdmx)
library(dplyr)
library(ggplot2)

Teades tabeli nime, mida soovime alla laadida, nt IT32: 16-74-aastased arvuti- ja internetikasutajad isikute rühma järgi, võime otse kogu tabeli alla laadida pannes tabeli nime linki GetData nii nagu allosas. Osavamad kasutajad võivad lingi täpsema kuju abil ka kohe piirata tunnuste ja väärtuste hulka, mida alla laadida, aga mulle tundus, et lihtsam on kogu tabel alla laadida ja pärast R-s valida tunnuseid ja väärtuseid.

#Määrame ajutise faili tf, kuhu veebilehe alla laeme juhuks, kui suur fail
tf <- tempfile(tmpdir = tdir <- tempdir())
download.file("http://andmebaas.stat.ee/restsdmx/sdmx.ashx/GetData/IT32/all", tf)
#loeme andmed ajutisest failist sisse
temp_sdmx <- readSDMX(tf, isURL = FALSE)
#teeme andmetabeliks
andmetabel <- as.data.frame(temp_sdmx)
str(andmetabel)
## 'data.frame':    2000 obs. of  6 variables:
##  $ DIM2       : chr  "1" "1" "1" "1" ...
##  $ DIM3       : chr  "1" "1" "1" "1" ...
##  $ DIM4       : chr  "1" "1" "1" "1" ...
##  $ TIME_FORMAT: chr  "P1Y" "P1Y" "P1Y" "P1Y" ...
##  $ obsTime    : chr  "2005" "2006" "2007" "2008" ...
##  $ obsValue   : num  624 641 670 674 726 ...

Esialgne valmis tabel sisaldab lisaks väärtustele tunnuses obsVAlue tunnuste nimede asemel mittemidagiütlevaid dimensioone DIM2, DIM3, …, ja nende väärtuste tähistusi. Vajalikud tähistused saame alla laadida kombineerides tabeli nime teistsuguse lingiga GetDataStructure . Tunnuste DIM2, DIM3, …, selgitused saame allalaetava objekti andmestruktuur väljalt concepts.

andmetestrukt <- readSDMX("http://andmebaas.stat.ee/restsdmx/sdmx.ashx/GetDataStructure/IT32")
#tunnuste selgitused
tunnused <- as.data.frame(andmetestrukt@concepts)
#et täpitähti õigesti näitaks
tunnused$Name.et <- iconv(tunnused$Name.et, "UTF-8")
tunnused
##            id agencyID                 Name.en                     Name.et
## 1        DIM2  STAT_EE    Group of individuals                Isikute rühm
## 2        DIM3  STAT_EE Using computer/Internet Arvuti/Interneti kasutamine
## 3        DIM4  STAT_EE               Indicator                     Näitaja
## 4        TIME  STAT_EE                    Year                       Aasta
## 5   OBS_VALUE  STAT_EE                                            
## 6 TIME_FORMAT  STAT_EE                                            
## 7  OBS_STATUS  STAT_EE                                            
##                   en
## 1               
## 2               
## 3               
## 4               
## 5  Observation Value
## 6        Time Format
## 7 Observation Status

Nüüd näeme, et DIM2 on pikalt kirjutades “Isikute rühm”  DIM3 on “Arvuti/Interneti kasutamine” jne.

Tunnuste kodeeringute väärtused saame sama andmetestrukt objekti väljadelt codelists. Nende tähised on kujul, mis sisaldab tabeli ja dimensiooni nime, nt “CL_IT32_DIM2” jne

#tunnuste väärtuste nimed, lähme kaks korda sisse välja codelists ja võtame sealt id-d
margenditelist <- slot(andmetestrukt, "codelists")
margenditenimed <- sapply(slot(margenditelist, "codelists"), function(x) slot(x, "id"))
margenditenimed
## [1] "CL_IT32_DIM2"        "CL_IT32_DIM3"        "CL_IT32_DIM4"       
## [4] "CL_IT32_TIME"        "CL_IT32_OBS_STATUS"  "CL_IT32_TIME_FORMAT"

Konkreetsed väärtused saame andmetabelitesse või lisatunnustena soovi korral juurde siduda. Pakun all ühe variandi, eks nupukamad R-i kasutajad ilmselt oskavad seda lihtsamalt teha.

#kirjutame märgendid tabelitesse
for(i in margenditenimed) {
  #paneme tabelite nimedeks muutujatega samad nimed
  assign(substr(i,nchar("CL_IT32_")+1, nchar(i)), as.data.frame(slot(andmetestrukt, "codelists"), codelistId = i))
}
#ja seome kõigile DIM-algusega tunnustele juurde eesti- ja inglise keelsed märgendid
for(i in grep("DIM", names(andmetabel), value=TRUE)) {
  andmetabel <- merge(andmetabel, get(i), by.x=i, by.y = "id" )
  names(andmetabel)[names(andmetabel) == 'label.en'] <- paste0(i,'label.en')
  names(andmetabel)[names(andmetabel) == 'label.et'] <- paste0(i,'label.et')
  }

Ongi tabel valmis koos kõigi märgenditega ja võime andmeid kasutama hakata. Näiteks joonistame internetikasutajate osakaalu vanusrühmade lõikes:

andmetabel %>% filter(DIM3label.et=="Interneti kasutamine",
                      DIM4label.et=="Osatähtsus vastavas rühmas,%",
                      grepl("aastased", DIM2label.et)) %>%
  ggplot(aes(x=as.numeric(obsTime), y=obsValue, color=DIM2label.et)) +
  geom_line() +
  scale_x_continuous(breaks = seq(2005, 2017, 2)) +
  labs(y = "Interneti kasutajate osakaal, %",
       x = "",
       colour = "",
       title = "Interneti kasutajate osakaal eri vanusrühmades",
       subtitle = "Andmed: Statistikaamet, tabel IT32") +
  theme(text=element_text(size=14))

plot of chunk joonis

Analoogselt võime võtta mõne muu tabeli, näiteks leibkondade kulutuste struktuuri tabelist LE207: Leibkonnaliikme kulutused aastas leibkonnapea haridustaseme järgi. Dubleerides ülal tehtut, kuvame alkoholi- ja tubakatoodete kulutuste keskmise osakaalu leibkonna kulude struktuur leibkonna pea haridusetaseme järgi.

tf <- tempfile(tmpdir = tdir <- tempdir())
download.file("http://andmebaas.stat.ee/restsdmx/sdmx.ashx/GetData/LE207/all", tf)
andmetabel <- readSDMX(tf, isURL = FALSE) %>% as.data.frame()
andmetestrukt <- readSDMX("http://andmebaas.stat.ee/restsdmx/sdmx.ashx/GetDataStructure/LE207")
tunnused <- as.data.frame(andmetestrukt@concepts)
tunnused$Name.et <- iconv(tunnused$Name.et, "UTF-8")
margenditelist <- slot(andmetestrukt, "codelists")
margenditenimed <- sapply(slot(margenditelist, "codelists"), function(x) slot(x, "id"))
for(i in margenditenimed) {
  assign(substr(i,nchar("CL_LE207_")+1, nchar(i)), as.data.frame(slot(andmetestrukt, "codelists"), codelistId = i))
}
for(i in grep("DIM", names(andmetabel), value=TRUE)) {
  andmetabel <- merge(andmetabel, get(i), by.x=i, by.y = "id" )
  names(andmetabel)[names(andmetabel) == 'label.en'] <- paste0(i,'label.en')
  names(andmetabel)[names(andmetabel) == 'label.et'] <- paste0(i,'label.et')   
} 

andmetabel %>% filter(DIM2label.et=="Osatähtsus (kulutused kokku = 100), %", DIM3label.et=="Alkoholjoogid ja tubakas") %>%
  ggplot(aes(x=as.numeric(obsTime), y=obsValue, color=DIM4label.et)) +
  geom_line() +
  geom_point()+
  #scale_x_continuous(breaks = seq(2010, 2017, 1)) +
  labs(y = "Osakaal, %",
       x = "",
       colour = "",
       title = "Alkoholi ja tubakatoodete kulutuste osakaal leibkondade eelarves \n leibkonnapea hariduse järgi",
       subtitle = "Andmed: Statistikaamet, tabel LE207") +
  theme(text=element_text(size=14))

plot of chunk unnamed-chunk-7

Jõudu tööle!

Rubriigid: Uncategorized | 3 kommentaari

Kuidas TAIst kergesti andmed Ri saada?

Eestis kogub tervise valdkonna statistikat TAI – Tervise Arengu Instituut, kes avaldab info enda tervisestatistika ja terviseuuringute andmebaasis. Nende andmebaas kasutab programmi PC-Axis, mis on välja töötatud Rootsi Statistikaameti poolt.
Sellele tarkvarale on kirjutatud R-is valmis pakett pxweb (vt info CRANis), mis võimaldavad neid andmeid otse lugeda R-i kas otse käsuga või pool-interaktiivsel moel.

Installeerime ja aktiveerime paketi pxweb ning aktiveerime ka paketid dplyr ja ggplot2 andmete töötlemiseks ning kuvamiseks.

install.packages("pxweb")
library(pxweb)
library(dplyr)
library(ggplot2)

Paketiga tuleb kaasa fail tekstifail api.json, mis asub paketi kataloogis /pxweb/extdata/api.json. Failis on kirjas asutused, mis teadaolevalt samuti kasutavad tarkvara PC-AXIS ja võimaldavad andmeid alla laadida. Neid saab loetleda funktsiooniga api_catalogue. Vaatame näiteks api kataloogi kolme esimest elementi, mis on Rootsi ja Soome statistikaametite lehed.

api_catalogue()[1:3]
## [[1]]
## Api: api.scb.se ('scb')
##      Statistics Sweden 
## Version(s)   : v1 
## Language(s)  : en, sv 
## Limit(s)     : 30 calls per 10 sec.
##                1e+05  values per call.
## Url template :
##  http://api.scb.se/OV0104/[version]/doris/[lang] 
## 
## [[2]]
## Api: pxnet2.stat.fi ('statfi')
##      Statistics Finland 
## Version(s)   : v1 
## Language(s)  : fi, sv, en 
## Limit(s)     : 30 calls per 10 sec.
##                1e+05  values per call.
## Url template :
##  http://pxnet2.stat.fi/PXWeb/api/[version]/[lang] 
## 
## [[3]]
## Api: pxwebapi2.stat.fi
##      Statistics Finland (old version) 
## Version(s)   : v1 
## Language(s)  : fi 
## Limit(s)     : 30 calls per 10 sec.
##                1e+05  values per call.
## Url template :
##  http://pxwebapi2.stat.fi/PXWeb/api/[version]/[lang]

Selleks, et pakett töötaks ka TAI andmetega, tuleb lisada faili api.json TAI andmete asukoht ja vajalikud parameetrid. Selleks on nüüd kaks võimalust:

a) lisada käsitsi juurde faili api.json TAI andmed suvalise tekstiredaktoriga.
b) või kirjutame faili api.json üle, kui on kindel, et me teiste riikide andmeid kasutada ei soovi.

Alljärgnevalt kasutan teist varianti: nimetan orignaalfaili ümber ja kirjuta uue faili vaid TAI andmetega.

file.rename("~/R/win-library/3.4/pxweb/extdata/api.json", 
"~/R/win-library/3.4/pxweb/extdata/api_orig.json")
tai_api <- 
  '{
  "apis": {
     "pxweb.tai.ee": {
      "alias" : ["tai_et"],
      "description" : "Estonian National Institute for Health Development",
      "url" : "http://pxweb.tai.ee/PXWeb2015/api/[version]/[lang]/",
      "version": ["v1"], 
      "lang": ["en", "et"],
      "calls_per_period": 10,
      "period_in_seconds": 10,
      "max_values_to_download" : 100000
     }
  },

  "local_apis": {}
}'
write(tai_api, file = "~/R/win-library/3.4/pxweb/extdata/api.json")

Andmete esmakordseks allalaadimiseks, kui veel süntaksi kuju ei ole tuttav, siis on soovitatav kasutada interaktiivset käsku interactive_pxweb().

d <- interactive_pxweb()

See juhendab samm-haaval kuni lõpliku andmepäringuni, mis tehakse funktsiooniga get_pxweb_data. Lõpliku andmepäringu kuju saab seejärel ise kergesti edasi töödelda.

Kui tabeli nimetus ja soovitud tunnuste väärtused on varasemalt teada, siis saab kirjutada andmepäringu juba otse. Näiteks laeme alla tervishoiutöötajate palgad kõikide aastate, ametialade, teenuse osutaja liigi ja palga liigi lõikes. Ma tean, et see asub TAI andmebaasi alamkataloogis 04THressursid/06THTootajatePalk, tabelis TT06.px.

df_long <- 
  get_pxweb_data(
    url = "http://pxweb.tai.ee/PXWeb2015/api/v1/et/04THressursid/06THTootajatePalk/TT06.px",
             dims = list(Aasta = c('*'),
                         Ametiala = c('*'),
                         "Tervishoiuteenuse osutaja liik" = c('*'),
                         "Brutokuupalga liik" = c('*')),
             clean = TRUE)

Ülal päringus tähistab tärn *, et soovime kõiki väärtuseid antud tunnuse puhul. Teine võimalus on kirjutada sinna sisse konkreetne väärtuste loetelu. Valik clean võimaldab valida, kas soovitakse andmeid pikas formaadis (long), kus iga väärtus on eraldi reas, või laias formaadis (wide), kus iga väärtus on eraldi veerus. clean = TRUE annab andmed pikas formaadis.
Kui sooviksin andmeid laias vormis, siis paneksin lihtsalt clean = FALSE


df_wide <- 
  get_pxweb_data(
    url = "http://pxweb.tai.ee/PXWeb2015/api/v1/et/04THressursid/06THTootajatePalk/TT06.px",
             dims = list(Aasta = c('*'),
                         Ametiala = c('*'),
                         "Tervishoiuteenuse osutaja liik" = c('*'),
                         "Brutokuupalga liik" = c('*')),
             clean = FALSE)

Ja ongi andmed alla laetud ja valmis töötlemiseks. Näiteks esitame allalaetud andmete põhjal tervishoiutöötajate mediaanpalkade arengu 2011-2017.

df_long %>%  
  filter(`Tervishoiuteenuse osutaja liik` == "Teenuseosutajad kokku", 
         `Brutokuupalga liik` == "Kuupalk koos kõigi lisatasudega, mediaan") %>% 
  ggplot(aes(y=values, x=Aasta, group=Ametiala, color=Ametiala)) +
  geom_point()  +
  geom_line() + 
  labs(title = "Mediaanpalga areng", color="", x="", y="Euro", 
       caption = "Allikas: TAI, tabel TT06")

plot of chunk palgajoonis

Allikad:

Mans Magnusson, Leo Lahti and Love Hansson (rOpenGov 2014). pxweb: R tools for PX-WEB API. URL: http://github.com/ropengov/pxweb

Rubriigid: Näpunäide, Uncategorized | Sildid: | Lisa kommentaar

Kuidas astmetega tulumaks haiglajuhte survestab?

Astmetega tulumaks ja töötamise stiimulid

Järgmisel aastal kehtima hakkav kuni 500-eurone maksuvaba tulu tekitab oma keerulise valemiga brutopalga vahemikus 1200-2100 eurot piirmaksumäära ligi 34%. Vt uue tulumaksusüsteemi kohta ka maksuameti kodulehelt.

See tuleb nii kõrge, sest selles vahemikus igalt lisanduvalt brutopalga eurolt võetakse maha tavapärane töötuskindlustusmakse (1,6%), kogumispensionimakse (2%) ja tulumaks (20%). Kuid lisaks vähendab iga teenitud euro ka tulumaksuvabamiinimumi 55 sendi võrra ehk suurendab makstavat tulumaksu 11 sendi võrra (55 senti x 20%).

Seega, isegi kui suurem osa palgasaajaid maksab järgmisel aastal vähem tulumaksu kui sellel aastal, siis motivatsioonile lisatunde teha võib 11% kõrgem piirmaksumäär mõjuda pärssivalt.

Haiglate õendustöötajate ületundide karistamine

Tutvustasin hiljuti uut tulumaksusüsteemi TÜ Kliinikumi operatsiooniõdedele, kes kuuluvad just sellisesse töötajate rühma, kelle töötamise motivatsiooni uus maksusüsteem võib negatiivselt mõjutada. Nad töötavad graafiku alusel ja nende töötasu sõltub otseselt töötundide arvust. Iga ületund tähendab kõrgemat palka.

Selle aasta märtsikuise tervishoiutöötajate palgauuringu järgi, mida Tervise Arengu Instituut regulaarselt läbi viib, oli meditsiiniõdede brutotöötasu koos kõigi lisatasudega piirkondlikes haiglates (st PERHis ja TÜ Kliinikumis) keskmiselt 1379 eurot ning sellest moodustasid lisatasud ületundide ja öötöö eest koguni kolmandiku.

Sealjuures oli palkade 25. protsentiil 1176 eurot ja 75. protsentiil 1514 eurot. Seega kolmveerandil piirkondlike haiglate meditsiiniõdedest (ehk ligi 2100 töötajal) on palk kõrgem kui 1176 eurot ehk just seal, kus piirmaksumäär on uuel aastal 11% kõrgem. (Märkus: selle aasta aprillis meditsiiniõdede põhipalk ka tõusis, mistõttu on järgmisel aastal isegi suurem osakaal õdesid enam kui 1200 eurose palgaga.)

Kui praegu vanemõde hommikul helistab ja palub õel tulla ületunde tegema, sest keegi on taas haige lapsega koju jäänud (mis on väga tüüpiline töötajaskonnas, kus enamus on naised), siis õde teab, et talle tasutakse see 1,5-kordselt. Õdede tunnitasu alammäär on praegu 6,03 eurot ehk ületundide korral 9,05 eurot. Rakendades praegu kehtivat piirmaksumäära (22,9%), saab ühe ületunni eest õde kätte praegu 6,98 eurot.

Kui aga järgmisel aastal vanemõde helistab, siis saab ta lubada ületunni eest ühe euro võrra vähem palka kätte ehk 5,97 eurot. Sest piirmaksumäär kolmveerandi õdede jaoks tõuseb 34% peale.

Samasugune kõrge piirmaksumäär tekib ka siis, kui õde peab valima, kas tasub töötada öötundidel või riigipühade ajal. Mõlemal juhul makstav lisatasu ei ole uuel aastal enam nii suur tingituna sellest samast kõrgemast piirmaksumäärast.

Nüüd tekib küsimus, kas ja kui palju ühe euro võrra väiksem täiendav tunnitasu vähendab õdede motivatsiooni ülemustele vastu tulla ja teha ületunde või töötada öösiti. Kui seda arvutuskäiku operatsiooniõdedele tutvustasin, leidsid nad, et nemad küll praegusest väiksema lisatasuga nõus ei ole.

Kuulajate seas olnud ülemuste näos peegeldusid aga murejooned, sest säilitamaks õdedele samasugune tasu ületundide eest, peavad haiglajuhid tõstma ületundide eest makstavat lisatasu seadusega nõutud 50%-lt 75%le. Või siis peab palkama õdesid juurde, et ei tekiks ületundide järgi vajadust. Kumbki pole kerge ülesanne praeguses tervishoiu rahastamise olukorras.

P.S. Olles aus, siis käesolev artikli teema valik ei ole juhuslik, sest mu abikaasa töötab TÜ Kliinikumis operatsiooniõena. Samas võin jagada lugejale kontrollimiseks R-i koodi, millega arvutused on tehtud ja andmed Tervise Arengu Instituudi kodulehelt tõmmatud. Maksuarvutuste kohta panin üles ka väikese kalkulaatori: https://vorkanalytics.shinyapps.io/maksukalkulaator/

Allikad

Tervishoiutöötajate kollektiivleping, https://arstideliit.ee/wp-content/uploads/2017/04/Tervishoiuvaldkonna_kollektiivleping_25_1.pdf

Tervise Arengu Instituut, Tervisestatistika ja terviseuuringute andmebaas. Tabel: TT06 Täistööajaga töötavate tervishoiutöötajate brutokuupalk, brutokuupalga mediaan ja protsentiilid ametiala, tervishoiuteenuse osutaja ja haigla liigi järgi.

Tervise Arengu Instituut, Tervisestatistika ja terviseuuringute andmebaas. Tabel: THT006: Tervishoiutöötajad, täidetud ametikohad ja ületunnid ametiala ja tervishoiuteenuse osutaja liigi järgi

Eesti Maksu- ja Tolliamet. Maksuvaba tulu alates 1. jaanuarist 2018. https://www.emta.ee/et/maksuvaba-tulu.

Enda tehtud maksukalkulaator: https://vorkanalytics.shinyapps.io/maksukalkulaator/

Rubriigid: Uncategorized | 2 kommentaari

Kui hull on olukord lasteaiakohtadega tegelikult?

Kahe lapse isana tean, et pooleteiseaastasele lapsele ei pruugi lasteaiakohta olla, kuigi kord selle ette näeb. Sama kinnitavad küsitlusandmed ja isegi riiklik statistika, kui seda õigesti lugeda. Kui lapsele oleks lasteaiakoht, ei läheks emad mitte lihtsalt varem tööle, vaid saaksid ka rohkem palka: teisel poolaastal sündinud laste emad saavad pikema töölt eemaloleku tõttu vähem palka.

Olgem ausad: riiklik lasteaedade statistika on ilustatud, sest lasteaias käimist mõõdetakse 1. septembri seisuga. September on kõige soodsam aeg tolle näitaja mõõtmiseks, kuna rühmad komplekteeritakse õppeaasta alguseks. Lapsed saavad aasta jooksul vanemaks ja osa lapsi saab lasteaiaealiseks, kuid õppeaasta sees on neid märksa keerulisem lasteaeda saada. Juures oleval pildil näitavad sinised kastid seda, kui suur osa mingis vanuses lastest käib ametlikel andmetel lasteaias. Oranžid kastid esitavad aga realistlikuma vaate lasteaias käivate laste osakaalust võttes arvesse ka vanemaks saamist.

Joonis on Eesti kohta, Tallinna näitajad on natuke paremad, aga mitte palju.

Küsitlusandmed kinnitavad, et lapsed pole kodus lihtsalt mugavusest, vaid lasteaiakoha puudusest tingituna. Mõne aasta tagused tööjõu-uuringu andmed näitasid, et nende emade arv, kes läheksid tööle või töötaksid enam, kui neil oleks võimalus laps lasteaeda panna, oli kõrgem alla kahe ja poole aastaste lastega emade seas.

Kust tuleb kaks ja pool? Kui sõimerühm komplekteeritakse septembriks ja sinna võetakse vanuse järjekorras vähemalt pooleteise aastaseid lapsi, siis kõige vanemad välja jääjad saavadki aasta pärast peaaegu kahe ja poole aastaseks.

Kõige paremini illustreerib lasteaiakohtade probleemi esimesel ja teisel poolaastal sündinud laste emade palgaerinevus. Esimesel poolaastal sündinud laste emad teenivad  enam – nende töölt eemal oleks kestab lasteaia rühmade komplekteerimise reeglite tõttu lühemat aega. Õnneks see vahe taandub suhteliselt kiiresti. Joonisel esitatud palgaerinevus on regressiooni tulemus, selles on arvesse võetud ka ametist, haridusest, tööajast, elukohast, mõõtmise kvartalist jne tulenevat mõju palgale. Tõlgendamisel ei tasu lähtuda hinnangu keskväärtusest, sest valim on ikkagi väike. Tõdeda saab aga seda, et teisel poolaastal sündinud laste emad teenivad vähem.

Mida tegema peaks? Lapsi peaks olema võimalik sõime panna sõltumata lapse sünnikuust. Lasteaiakohti peaks olema rohkem ja aasta alguses tuleks avada pooleldi tühjad rühmad, mis täituvad aasta jooksul. Ainult nii saab tagada selle, et lapsed saavad pooleteiseaastasena lasteaeda ega pea järgmist õppeaastat ootama. Emapalk ja vanemapuhkus ei kesta ju samuti septembrini, vaid kindla arvu kuid.

Siin kirjutatu pole kindlasti soovitus eesseisvatel valimistel ühegi poliitilise jõu poolt hääletamiseks. Lasteaiakohtade küsimus on aga oluline probleem, mis mõjutab paljude inimeste võimalusi tööturul ja hariduselus, aga ka pereplaneerimist ja hommikustes ummikutes veedetud aega. Iga teises linna otsas pakutav lasteaiakoht tekitab juurde ühe auto, mis tipptunnil kaootiliselt mööda linna liigub. Teema tõstatamine poliitikute poolt on tervitatav. Siin toodud ettepanekud peegeldavad autori isiklikku arvamust ega pruugi ühtida teiste inimeste ega organisatsioonide seisukohtadega.

Täienduseks. Eespool kirjeldatud lasteaias käivate laste osakaalu ilustatus tuleb välja ka siis, kui võrrelda neid andmeid Eurostati poolt avaldatavate Euroopa Sotsiaaluuringu tulemustega. Sotsiaaluuringu põhjal on käib lasteaias/lastehoius ligikaudu 20% alla kolmeaastastest, 2015. aastal 21,4%, riikliku statistika alusel aga ca kolmandik.  Laste vanemaks saamisega korrigeeritud lasteaias käivate laste osakaal klapib Sotsiaaluuringu tulemusega.

Rubriigid: Uncategorized | Lisa kommentaar

Kuidas riigiraha.fin.ee andmete abil asutustevahelisi rahavooge vaadata

Tartu Ülikooli Infotehnoloogia mõju-uuringute keskuse (CITIS) üks tegevusi on avaandmete kasutamise populariseerimine tudengite ja avalikkuse seas. Seekord vaataks, kuidas saab kergesti kasutada riigiraha.fin.ee lehel toodud valitsussektorisse kuuluvate üksuste raamatupidamise andmeid asutustevaheliste seosete visualiseerimiseks ja analüüsimiseks. Näite toon enda lemmikuurimisvaldkonnast – Eesti tervishoiust.

Järgmisel joonisel on esitatud riigiraha andmete põhjal Eesti haiglatevahelised rahavood aastal 2013, mis on tasutud teineteisele tervishoiuteenuse osutamise eest. (Joonisel on esitatud nooled vaid juhul, kui aastased summad on suuremad kui 10 tuhat eurot.)

tulemus

Nagu arvata võiski on absoluutsummadena suuremad tervishoiuteenuste osutamise rahavood ka suuremate haiglate vahel: Lastehaiglast ja Lääne-Tallinna Keskhaiglast PERHi; PERHist ja Ida-Viru Keskhaiglast TÜ Kliinikumi: TÜ Kliinikumist PERHi ja Ida-Tallina Keskhaiglasse jne.

Selle joonise alusandmete kättesaamine ja lihtsama joonise tegemine on tegelikult imelihtne, eriti kui teil on sama nupukad ja abivalmis kolleegid nagu mul.

Joonise tegemise esimeseks sammuks on tõmmata vajalikud lähteandmed sobival kujul alla riigiraha lehelt. Näiteks kasutades järgmist otseaadressi, saab andmed CSV või Exceli kujul alla laadida hiire paremkliki abil. (href=http://riigiraha.fin.ee/geoqlik/proxy/QvAJAXZfc/singleobject.htm?document=Riigiraha.qvw&host=local&anonymous=true&object=CH320&select=AASTA,(2013)&select=PERIOOD,1&select=UKSUSID,015312,016303,016305,016306,100307,100308,100309,179302, 185304,310307,357301,358301,402306,561306,588303,591303,594303,599303) (NB! Kui klikid, siis oota, andmete laadimine tabelisse võtab aega ligi 10-15 sekundit!)

Ülal toodud aadressi olulisteks komponentideks on:

  • objekti nimetus (object) – Meie näites CH320, kus on toodud kõik asutuste väljaminekud. Vajatava tabeli numbri leidmine on pisut keeruline, sest nende loetelu ma ei suutnud riigiraha.fin.ee lehelt leida. Meie saime numbri esmalt otse rahandusministeeriumist. Hiljem kirjutasin Pythonis koodi, mis otsib aadressidelt tabelite moodi lehed üles ja teeb meile võimaliku tabelite sisukorra.
  • aasta (AASTA) – meie näites 2013.
  • andmete sagedus (PERIOOD) – võib olla kas aasta nagu meie näites (1), kvartal (2) või kuu (3).
  • üksused (UKSUSID), mille kohta soovime infot saada – meie näites on loetletud valitsussektorisse kuuluvate haiglate koodid. Need koodid leiab üles saldo.fin.ee-l lehel asuvast failist Tehingupartnerid.xls

Kui andmete allalaadimist tuleb teha sageli või on soov katsetada eri perioode ja üksusi, siis saab andmete allalaadimist ka mõningal määral automatiseerida. Näiteks mina jooksutasin selleks Chrome’i veebilehitsejat, mis Seleniumi abiga Pythonis automaatselt Exceli faili alla laadis (minu näitefail). Otse veebilehelt andmeid R-i mugavalt ei õnnestunud laadida. Kui mõni R-i friik selle ära lahendab, andke teada.

Allalaetud Exceli andmefail ise näeb välja järgmisel kujul:

 sisendandmedexcelis

 

Kui andmed on allalaetud, siis on vaid vaja mõne tarkvaraga neid sobivalt filtreerida ja agregeerida ning ongi tulemus käes.Kõige kiirem on seda teha muidugi Excelis tavapärase Pivot tabeliga, kasutades sobivaid filtreid.

rahavoodexcel2.png

Kuid kui analüüsi teha sageli ning tahta ka tulemusi graafiliselt kuvada, siis võib kasutada R-i abi, mida omal viisil olen allosas püüdnud teha. (Palun R-i ekspertidel olla kriitikaga leebe kuid konstruktiivne).

R-i vajalike lisapakettidena läheb vaja, midagi millega Exceli fail alla laadida, nt  readxl. Graafiku tegemiseks kasutame lisapaketti igraph. Ning andmete teisendamiseks muidugi paketti dplyr .

#Exceli importimiseks
install.packages("devtools")
devtools::install_github("hadley/readxl")
#Andmete töötlemiseks
install.packages("dplyr")
#Jooniste kuvamiseks
install.packages("igraph") 
library(readxl)
library(dplyr)
library(igraph)
#avame ülaltoodud riigiraha.fin.ee aadressilt allalaetud Exceli faili
sisendfail<-read_excel("andmed2013.xls")

Paketi igraphpuhul on vajalik, et andmed oleksid esitatud voogude failis, kus esimeses kahes veerus on objektide id tunnused, kust vood algavad ja kuhu lähevad ning soovi korral järgnevates veergudes vooge iseloomustavad näitajad.

Voogude faili struktuur

from to Voo suurus
Id1 Id2 Summa1
Id2 Id3 Summa2
Id2 Id1 Summa3

Teine fail, mida on otstarbekas kasutada, on objekte kirjeldav fail, kus esimeses veerus peab olema id tunnus ja järgmistes muud omadused, mida tahame joonisel kuvada, näiteks asutuse nimi ja suurus.

Otspunktide faili struktuur

asutuseID nimi lisatunnus
Id1 PERH Käive1
Id2 SA TÜ Käive2
Id3 ITK Käive3

Alljärgnevalt ongi tehtud riigiraha lehelt alla laetud Exceli failist mõlemad otspunktide ja voogude failid. Esmalt tuleb tähele panna, et alla laetud lähtefailis oli lisaridasid kommentaaridega või kogusummaga, millest soovime lahti saada. Seetõttu kasutame filtrit, et jätame alles vaid need read, kus on olemas meie poolt valitud aastaarv. Lisaks lühendame natuke muutujate nimesid.

Sisseloetud Exceli fail näeb R-s välja järgmine.

head(sisendfail)
## # A tibble: 6 × 10
##   Aasta   Kuu                                 Üksus
##                                     
## 1 Kokku Kokku                                 Kokku
## 2  2013    12         179302 SA Ida-Viru Keskhaigla
## 3  2013    12 016305 SA Põhja-Eesti Regionaalhaigla
## 4  2013    12         179302 SA Ida-Viru Keskhaigla
## 5  2013    12         179302 SA Ida-Viru Keskhaigla
## 6  2013    12             016306 SA Viljandi Haigla
## # ... with 7 more variables: Konto , Valdkond ,
## #   Tegevusala , Tehingupartner , Finantseerimisallikas ,
## #   Rahavoog , `Väljaminekud absoluutarv tuhandetes` 
#esmane puhastus
andmed%
  filter(grepl("2013", Aasta)) %>%
  select(Üksus, Tehingupartner, `Väljaminekud absoluutarv tuhandetes`, Konto)
#kui jäi puuduvaid väärtuseid sisse, viskame välja
andmed=na.omit(andmed)
#ja uued pealkirjad
colnames(andmed)<-c("yksus", "partner", "makse", "konto")

Seejärel saame valmis teha objekte kirjeldava andmestiku nodes. Jätame alles id-tunnuse, haigla nime pisut puhastatud kujul ja teeme ka haigla väljaminekute kogusumma, et pärast oleks parem joonisel kuvada haiglate suurust.

#leiame haigla suurust iseloomustava näitaja
nodes%
  select(yksus, makse) %>%
  group_by(yksus) %>%
  summarize(suurus=sum(makse))
#haigla tekstiline nimi algab peale numbrit
nodes$nimi<-substr(nodes$yksus, 7, 100)
#haigla nimest viskame välja lühendid AS, SA ja As 
nodes$nimi<-gsub("SA", "", nodes$nimi)
nodes$nimi<-gsub("AS", "", nodes$nimi)
nodes$nimi<-gsub("As ", "", nodes$nimi)  
nodes$id=substr(nodes$yksus, 1, 6)  
#ja jätame alles vajalikud muutujad ning järjestame id järgi, 
#et oleks mugav vaadata  
nodes <- nodes %>% select(id, nimi, suurus) %>% arrange(id) 
#tulemuseks on haiglate loetelu id ja väljamaksete kogusummaga (tuh eurot)
nodes
## # A tibble: 17 × 3
##        id                          nimi     suurus
##                                    
## 1  015312                Hiiumaa Haigla   2071.850
## 2  016303      Tartu Ülikooli Kliinikum 141248.552
## 3  016305   Põhja-Eesti Regionaalhaigla 149405.065
## 4  016306               Viljandi Haigla  14935.021
## 5  100307      Ida-Tallinna Keskhaigla   78389.361
## 6  100308    Lääne-Tallinna Keskhaigla   44014.310
## 7  100309          Tallinna Lastehaigla  19759.723
## 8  179302           Ida-Viru Keskhaigla  32389.628
## 9  185304                 Narva Haigla   19080.819
## 10 310307                  Pärnu Haigla  34706.197
## 11 357301                 Põlva Haigla    4884.977
## 12 402306            Kuressaare Haigla    8386.363
## 13 561306                 Valga Haigla    5656.267
## 14 588303              Järvamaa Haigla    6775.377
## 15 591303                Rakvere Haigla  14417.688
## 16 594303          Rapla Maakonnahaigla   4489.612
## 17 599303            Lõuna-Eesti Haigla   7819.659

Seejärel teeme valmis haiglatevaheliste tervishoiuteenuste vaheliste voogude andmestiku. Alljärgnevalt on lihtsuse huvides kuvatud joonisel ainult aastaseid rahavoogusid, mis on suuremad kui 10 000 eurot.

#leiame üksuse ja partneri id numbrid nimest
andmed$from=substr(andmed$yksus, 1, 6)
andmed$to=substr(andmed$partner, 1, 6)

#vaja jätte alles id-d ja summad ning agregeerida, 
#nii et jäävad alles vaid omavahelised. 
links %>%
  #jääb alles vaid tervishoiuteenuste eest maksmine
  filter(grepl("552230 Tervishoiuteenused", konto)) %>%
  #valime vajalikud tunnused
  select(from, to, makse) %>%
  #summeerime vood konkreetsete haiglate vahel
  group_by(from, to) %>%
  summarize(vood=sum(makse)) %>%
  #jätame alles vaid need vood, kus ka tehingupartneriks oleks haigla, 
  #kuid mitte ise
  filter(to %in% andmed$from,to!=from) %>%
  #jätame alles vaid vood, kus aastane summa on vähemalt 10000 eurot
  filter(vood>10)

#tulemus
links
## Source: local data frame [46 x 3]
## Groups: from [17]
## 
##      from     to      vood
##            
## 1  015312 016305  10.68026
## 2  015312 100307  24.93643
## 3  016303 016305  91.25026
## 4  016303 100307  25.91082
## 5  016303 100308  10.53907
## 6  016303 100309  10.00512
## 7  016303 179302  71.27568
## 8  016303 599303  15.54878
## 9  016305 016303 393.11765
## 10 016305 100307  15.29962
## # ... with 36 more rows

Kasutades lisapaketti igraph saame kujutada haiglate vahelisi seoseid graafiliselt või vaadata maatrikskujul. Käsus anname info, mis on seoste fail (d=links), mis on otspunktide fail (vertices=nodes) ja kas tahame nooltega jooni. Joonisel saab hiljem soovi korral erinevaid seadeid muuta.

#teisendame failid igraph objektiks
haiglatevork <- graph_from_data_frame(d=links, vertices=nodes, directed=TRUE) 

Võimalikke paigutuse tüüpe on palju. Sõltuvalt objektide ja seoste arvust saab leida sobivaima graafiku. Alljärneval joonisel on joone paksus võrdeline rahavoo suurusega ja haiglat iseloomustava ringi suurus positiivses seos haigla summaarsete väljamaksetega.

#üks võimalik joonis
par(mfrow=c(1,1), mar=c(0.5,0.5,0.5,0.5))
#et graafik oleks reprotseeritav
set.seed(3000)
plot(haiglatevork, layout=layout_randomly, edge.arrow.size=.3, 
edge.curved=1, edge.width=links$vood/100, edge.color="blue", 
vertex.size=nodes$suurus^(1/4),vertex.color="orange", 
vertex.label=nodes$nimi, vertex.label.color="black", vertex.label.cex=0.6) 

ver5

Käsitsi saab jooni ja otspunkti tõmmata paremini graafikul, mis on saadud käsuga tkplot. Üks võimalikke realisatsioone ongi esitatud sissekande alguses .

tkplot(haiglatevork, layout=layout_randomly, edge.arrow.size=.7, 
edge.curved=1,   edge.width=links$vood/50, edge.color="blue", 
vertex.size=nodes$suurus^(1/3), vertex.color="orange", 
vertex.label=nodes$nimi,vertex.label.color="black", vertex.label.cex=1) 

Analoogselt saab siis ilma suurema vaevata analüüsida ja kuvada ka teiste valitsemissektorisse kuuluvate asutuste omavahelisi rahavooge kasutades riigiraha.fin.ee andmeid.

Käesoleva postituse valmimisele olid mulle suureks abiks Taavi Unt ja Märten Veskimäe CITISest ning Eesti kõige entusiastlikuma R-i õpetaja Indrek Seppo konspektid. Finantstoe eest tänan Tartu Ülikooli rektori fondi.

Rubriigid: Näpunäide, Uncategorized | Lisa kommentaar