Alkuun taustatiedoksi lasketaan kansantalouden tilinpidon historiasarjoista tieto työajan osuuden kehityksestä.
historia <-
data("StatFin/vtp/statfin_vtp_pxt_129i.px§Yhteensä§^(EP|E1|E2)§(Tuh|Milj)",
tidy_time = TRUE) |>
drop_na() |>
pivot_wider(names_from = c("Taloustoimi", "Tiedot")) |>
transmute(
time,
Työtunnit =
1000*1000*`E2 Tehdyt työtunnit (1 000 000 tuntia)_Miljoonaa tuntia (ESA2010)` |>
expand_index(
`E2 Tehdyt työtunnit (1 000 000 tuntia)_Miljoonaa tuntia`,
time, "1975-01-01"
) |>
expand_index(
`E2 Tehdyt työtunnit (1 000 000 tuntia)_Tuhatta työvuotta`,
time, "1960-01-01"
),
Työlliset = expand_index(
1000*`E1 Työlliset, kotimaa (1000 henkeä)_Tuhatta henkilöä (ESA2010)`,
`E1 Työlliset, kotimaa (1000 henkeä)_Tuhatta henkilöä`,
time, "1975-01-01"
),
`Työtunnit/työlliset` = Työtunnit/Työlliset,
`Työtunnit/työlliset_alt` = coalesce(
1000*`E2 Tehdyt työtunnit (1 000 000 tuntia)_Miljoonaa tuntia (ESA2010)`/`E1 Työlliset, kotimaa (1000 henkeä)_Tuhatta henkilöä (ESA2010)`,
`E2 Tehdyt työtunnit (1 000 000 tuntia)_Miljoonaa tuntia`/`E1 Työlliset, kotimaa (1000 henkeä)_Tuhatta henkilöä`
),
Keskiväkiluku = 1000*`EP Keskiväkiluku (1000 henk.)_Tuhatta henkilöä`,
Väestötunnit = Keskiväkiluku* as.integer(difftime(time + lubridate::years(1), time, units = "hours")),
`Työajan osuus` = Työtunnit/Väestötunnit
) |>
pivot_longer(-time)
##
ℹ Updating dataset StatFin via datasource StatFin
✔ Updating dataset StatFin via datasource StatFin [1.6s]
historia |>
filter(time >= "1960-01-01") |>
filter(name %in% c("Työajan osuus", "Työtunnit/työlliset")) |>
ggplot(aes(time, value)) +
geom_line() +
facet_wrap(~name, scales = "free_y")
Lasketaan keskityöaika työvoimatutkimuksen tiedoista sukupuolittain.
Keskityöaika <-
data("StatFin_Passiivi/tym/tyti/statfinpas_tyti_pxt_11pw_2020.px§(M|N)§Yhteensä§Työl", tidy_time = TRUE) |>
pivot_wider(names_from = Tiedot) |>
drop_na() |>
mutate(Keskityöaika = `Työllisten tehdyt työtunnit, 1000 tuntia`/`Työlliset, 1000 henkilöä`) |>
select(Sukupuoli, time, Keskityöaika)
Keskityöaika |>
ggplot(aes(time, Keskityöaika, color = Sukupuoli)) +
geom_line()
Jatketaan työvoimatutkimuksen tietoja miesten ja naisten työtunneista kansantalouden tilinpidon tiedoilla olettan, että suhteelliset vuosimuutokset ovat olleet molemmilla sukupuolilla samat.
Keskityöaika_vtp <-
data("StatFin/vtp/statfin_vtp_pxt_11ws.px§(E1 |E2 )§S1 §Yhteensä", tidy_time = TRUE) |>
pivot_wider(names_from = "Taloustoimi") |>
mutate(
value = 1000*`E2 Tehdyt työtunnit (1 000 000 tuntia)`/`E1 Työlliset, kotimaa (1000 henkeä)`
) |>
select(time, value)
Keskityöaika_ext <-
Keskityöaika |>
nest(data = -Sukupuoli) |>
mutate(data = map(data, ~{
full_join(.x, Keskityöaika_vtp, by = "time") |>
arrange(time) |>
mutate(Keskityöaika = expand_index(Keskityöaika, value, time, "2005-01-01")) |>
select(time, Keskityöaika)
})) |>
unnest(data)
Keskityöaika_ext |>
ggplot(aes(time, Keskityöaika, color = Sukupuoli)) +
geom_line() +
labs(title = "Keskityötunnit sukupuolittain,\njatkettu tilinpidon tiedoilla")
Lasketaan väestön rakennetilastoista työllisten osuus ikäluokittain.
Työllisten_osuus <-
data("StatFin/tyokay/statfin_tyokay_pxt_115c.px§(Työlliset|Yhteensä)§(N|M)", tidy_time = TRUE) |>
filter(!Ikä %in% c("Yhteensä", "100 -")) |>
pivot_wider(names_from = `Pääasiallinen toiminta`) |>
mutate(
value = Työlliset/Yhteensä,
Ikä = parse_integer(Ikä)
) |>
select(Sukupuoli, Ikä, time, `Työllisten osuus` = value)
Työllisten_osuus |>
filter(lubridate::year(time) == 2020) |>
ggplot(aes(Ikä, `Työllisten osuus`, color = Sukupuoli)) + geom_line()
Lasketaan kuolleisuustilastoista elinajanodote (varmistuksen vuoksi) ja vapaa-ajanodote yhdistämällä tiedot työllisten osuuksista ja keskityöajasta.
Työodote <-
data("StatFin/kuol/statfin_kuol_pxt_12ap.px§(N|M)", tidy_time = TRUE) |>
pivot_wider(names_from = Tiedot) |>
filter(time >= "1987-01-01") |>
mutate(
Ikä = as.integer(Ikä),
Kuolemanvaara = `Kuolemanvaara, promillea`/1000,
Elossa = `Elossa olevat 100 000 elävänä syntyneestä`/100000
) |>
left_join(Työllisten_osuus, by = c("Sukupuoli", "Ikä", "time")) |>
left_join(Keskityöaika_ext, by = c("Sukupuoli", "time")) |>
with_groups(
c(Sukupuoli, time), summarise,
Elinajanodote =
sum(if_else(Ikä != 100,
(Kuolemanvaara*0.5 + (1-Kuolemanvaara))*Elossa,
Elossa*`Elinajanodote, vuosia`
)),
Työllisyysodote = sum(`Työllisten osuus` * (Kuolemanvaara*0.5 + (1-Kuolemanvaara))*Elossa, na.rm = TRUE),
Työtuntiodote = sum(Keskityöaika * `Työllisten osuus` * (Kuolemanvaara*0.5 + (1-Kuolemanvaara))*Elossa, na.rm = TRUE)
) |>
mutate(
`Työllisten vuosien osuus` = Työllisyysodote/Elinajanodote,
`Työajan osuus` = Työtuntiodote/(Elinajanodote*24*365.25),
`Vapaa-ajanodote` = Elinajanodote*(1-`Työajan osuus`)
)
Työodote |>
filter(time == max(time)) |>
glimpse()
## Rows: 2
## Columns: 8
## $ Sukupuoli [3m[38;5;246m<chr>[39m[23m "Miehet", "Naiset"
## $ time [3m[38;5;246m<date>[39m[23m 2020-01-01, 2020-01-01
## $ Elinajanodote [3m[38;5;246m<dbl>[39m[23m 79.03058, 84.61654
## $ Työllisyysodote [3m[38;5;246m<dbl>[39m[23m 30.93604, 32.99600
## $ Työtuntiodote [3m[38;5;246m<dbl>[39m[23m 53147.28, 49063.09
## $ `Työllisten vuosien osuus` [3m[38;5;246m<dbl>[39m[23m 0.3914440, 0.3899473
## $ `Työajan osuus` [3m[38;5;246m<dbl>[39m[23m 0.07671572, 0.06614517
## $ `Vapaa-ajanodote` [3m[38;5;246m<dbl>[39m[23m 72.96769, 79.01957
Työodote |>
ggplot(aes(time, Työllisyysodote, color = Sukupuoli)) + geom_line()
Työodote |>
ggplot(aes(time, Työtuntiodote, color = Sukupuoli)) + geom_line()
Työodote |>
ggplot(aes(time, `Työllisten vuosien osuus`, color = Sukupuoli)) + geom_line()
Työodote |>
ggplot(aes(time, `Työajan osuus`, color = Sukupuoli)) + geom_line()
Työodote |>
ggplot(aes(time, `Vapaa-ajanodote`, color = Sukupuoli)) +
geom_line() +
scale_y_continuous(breaks = seq(0, 100, by = 2)) +
labs(
title = "Vastasyntyneen vapaa-ajanodote Suomessa",
subtitle = "Vuotta",
caption = "Lähteet: Tilastokeskus ja omat laskelmat.",
x = NULL, y = NULL
)