Pomocniczy plik csv zawiera identyfikatory makroregionów (Eurostat/NUTS) oraz odpowiadające im nazwy. Uprzedzając wydarzenia problemem jest województwo mazowieckie podzielone w nomenklaturze NUTS na dwa makroregiony
ww <- c('PL21', 'PL22', 'PL41', 'PL42', 'PL43', 'PL51',
'PL52', 'PL61', 'PL62', 'PL63', 'PL71', 'PL72', 'PL81',
'PL82', 'PL84', 'PL91', 'PL92', 'PL')
## Dane z CSV
## PL91 = warszawskie + PL92 = mazowieckie
n <- read.csv(file='nuts.csv',sep=';',header=T)
Dane tygodniowe dotyczące zgonów z GUS w podziale na makroregiony (a nie województwa.) W związku z tym makroregion 91
zostaje przekodowany na 92
(mazowieckie). Następnie ramka jest przeliczana tak żeby dla każdego tygodnia 92 występowało jako jeden wiersz a nie dwa:
z <- read.csv(file='zgonyGUS.csv',sep=';',header=T)
## Filtrowanie wierszy
z <- z %>% filter ( woj %in% ww ) %>%
mutate(woj=recode(woj, PL91="PL92")) %>%
group_by(date,woj) %>%
## sumowanie 91+92
mutate(value=sum(value))
Po tym zabiegu ramka z
jest podzielona na województwa. Łączymy ją zatem z ramką zawierającą nazwy województw (po czym tworzymy identyfikator wiersza w postaci napisu rrrrtt
; gdzie rrrr – rok a tt tydzień-w-roku)
z <- left_join(z, n, by=c('woj'='geo')) %>%
mutate( yyww = sprintf ("%i%02i", year, week))
Czytamy dane dotyczące zgonów kowidowych (osoby zmarłe z powodu COVID19 lub z powodu COVID19 w połączeniu ze słynnymi chorobami współistniejącymi.) Dane pochodzą z komunikatów publikowanych codziennie na koncie Ministerstwa Zdrowia; MinZdrowia podaje dane dla województw, a nie makroregionów NUTS i stąd przeliczenia powyżej (https://twitter.com/MZ_GOV_PL
):
## obserwacje dzienne z https://twitter.com/MZ_GOV_PL
c <- read.csv(file='MZN_weekly.csv',sep=';',header=T)
Tworzymy identyfikator wiersza postaci rrrrtt
; grupujemy wiersze wg tego identyfikatora oraz województwa. Następnie sumujemy grupy, co w efekcie zamienia dane dzienne na tygodniowe:
c <- c %>%
mutate(yr = substr(date, 1, 4)) %>%
mutate(yyww = sprintf ("%i%02i", as.numeric(yr), as.numeric(wn))) %>%
group_by(yyww,idw) %>%
summarise( nc = sum(newc), nd=sum(newd) )
Łączymy z danymi nt zgonów ogółem; jako klucza używając kolumn rrrrtt
oraz nazwy województwa:
z0 <- left_join(z, c, by=c('name'='idw', 'yyww'='yyww'))
Polska ogółem
zz <- z0 %>% filter(name == 'Polska' & year > 2019)
p <- zz %>%
pivot_longer(cols = c(nd, value), names_to = "dtype", values_to = "dval") %>%
##
ggplot(aes(x = as.Date(date), y=dval, color=dtype)) +
geom_point(size=1 ) +
geom_smooth(method = "loess", size=.5, span=0.25, se=F) +
##geom_text(aes(label = week, color=dtype), size=3) +
theme_nikw() +
xlab(label="mm/dd") +
ylab(label="zgony") +
scale_x_date( breaks = "3 weeks", labels = date_format("%m/%d")) +
scale_y_continuous(breaks=seq(0, 20000, by=1000)) +
scale_color_manual(name="", values = c(nd=default_red, value=default_cyan ),
labels =c(nd="Ogółem", value="Covidowe")) +
##
ggtitle("Zgony ogółem vs covidowe w PL (wg tygodni)",
subtitle = "źródło: GUS https://stat.gov.pl/obszary-tematyczne/ludnosc/ludnosc/zgony-wedlug-tygodni,39,2.html + MinZdrowia (COVID)") +
##
theme(axis.text = element_text(size = 6)) +
theme(plot.title = element_text(hjust = 0),
plot.subtitle=element_text(size=8)
)
##ggsave(plot=p, file='zz_p.png', width=9)
p
Wg województw
## usuń PL (a będzie 16)
zz <- z0 %>% filter(name != 'Polska' & year > 2019)
q <- zz %>%
pivot_longer(cols = c(nd, value), names_to = "dtype", values_to = "dval") %>%
##
ggplot(aes(x = as.Date(date), y=dval, color=dtype)) +
geom_point(size=1 ) +
geom_smooth(method = "loess", size=.5, span=0.25, se=F) +
##geom_text(aes(label = week, color=dtype), size=3) +
theme_nikw() +
xlab(label="mm/dd") +
ylab(label="zgony") +
scale_x_date( breaks = "8 weeks", labels = date_format("%m/%d")) +
##scale_y_continuous(breaks=seq(0, 20000, by=1000)) +
scale_color_manual(name="", values = c(nd=default_red, value=default_cyan ),
labels =c(nd="Ogółem", value="Covidowe")) +
##
ggtitle("Zgony ogółem vs covidowe w PL (wg tygodni)",
subtitle = "źródło: GUS https://stat.gov.pl/obszary-tematyczne/ludnosc/ludnosc/zgony-wedlug-tygodni,39,2.html + MinZdrowia (COVID)") +
##
facet_wrap( ~name, scales = "free_y") +
theme(axis.text = element_text(size = 6)) +
theme(plot.title = element_text(hjust = 0),
plot.subtitle=element_text(size=8)
)
##ggsave(plot=q, file='zz_w.png', width=12, height=12)
q
Powyższe ale jako udział zgonów cowidowych w wielkości zgonów ogółem:
## udział w zgonach kowidowych
z0 <- z0 %>% mutate ( rr = nd / value * 100 )
zz <- z0 %>% filter(name == 'Polska' & year > 2019)
p <- zz %>%
ggplot(aes(x = as.Date(date), y=rr)) +
geom_point(size=1 ) +
geom_smooth(method = "loess", size=.5, span=0.25, se=F) +
##geom_text(aes(label = week, color=dtype), size=3) +
theme_nikw() +
xlab(label="mm/dd") +
ylab(label="zgony") +
scale_x_date( breaks = "3 weeks", labels = date_format("%m/%d")) +
##
ggtitle("Zgony covidowe jako % ogółem w PL (wg tygodni)",
subtitle = "źródło: GUS https://stat.gov.pl/obszary-tematyczne/ludnosc/ludnosc/zgony-wedlug-tygodni,39,2.html + MinZdrowia (COVID)") +
##
theme(axis.text = element_text(size = 6)) +
theme(plot.title = element_text(hjust = 0),
plot.subtitle=element_text(size=8)
)
##
##ggsave(plot=p, file='zz_p_p.png', width=9)
p
Udziały wg województw:
### Województwa (udziały)
zz <- z0 %>% filter(name != 'Polska' & year > 2019)
q <- zz %>%
ggplot(aes(x = as.Date(date), y=rr)) +
geom_point(size=1 ) +
geom_smooth(method = "loess", size=.5, span=0.25, se=F) +
##geom_text(aes(label = week, color=dtype), size=3) +
theme_nikw() +
xlab(label="mm/dd") +
ylab(label="zgony") +
coord_cartesian(ylim = c(0, 30)) +
scale_x_date( breaks = "6 weeks", labels = date_format("%m/%d")) +
##
ggtitle("Zgony covidowe jako % ogółem w PL (wg tygodni)",
subtitle = "źródło: GUS https://stat.gov.pl/obszary-tematyczne/ludnosc/ludnosc/zgony-wedlug-tygodni,39,2.html + MinZdrowia (COVID)") +
##
facet_wrap( ~name, scales = "fixed") +
theme(axis.text = element_text(size = 6)) +
theme(plot.title = element_text(hjust = 0),
plot.subtitle=element_text(size=8)
)
##
##ggsave(plot=q, file='zz_w_p.png', width=12, height=12)
q
Plik wojewodztwa.csv
zawiera dane dotyczące liczby ludności (wg GUS za 2019 rok); łączymy go z ramką z0
a następnie obliczamy liczbę zgonów na 1mln mieszkańców:
### Ludność wg/woj
wp <- read.csv(file='wojewodztwa.csv',sep=';',header=T)
z0 <- left_join(z0, wp, by=c('name'='woj'))
## zgony na 1mln (tygodniowo)
z1 <- z0 %>% mutate ( value = value / pop * 1000, nd = nd / pop * 1000)
zz <- z1 %>% filter(name != 'Polska' & year > 2019)
r <- zz %>%
pivot_longer(cols = c(nd, value), names_to = "dtype", values_to = "dval") %>%
##
ggplot(aes(x = as.Date(date), y=dval, color=dtype)) +
geom_point(size=1 ) +
geom_smooth(method = "loess", size=.5, span=0.25, se=F) +
##geom_text(aes(label = week, color=dtype), size=3) +
theme_nikw() +
xlab(label="mm/dd") +
ylab(label="zgony") +
scale_x_date( breaks = "8 weeks", labels = date_format("%m/%d")) +
##scale_y_continuous(breaks=seq(0, 20000, by=1000)) +
scale_color_manual(name="", values = c(nd=default_red, value=default_cyan ),
labels =c(nd="Ogółem", value="Covidowe")) +
##
ggtitle("Zgony ogółem vs covidowe na 1mln w PL (wg tygodni)",
subtitle = "źródło: GUS https://stat.gov.pl/obszary-tematyczne/ludnosc/ludnosc/zgony-wedlug-tygodni,39,2.html + MinZdrowia (COVID)") +
##
facet_wrap( ~name, scales = "fixed") +
theme(axis.text = element_text(size = 6)) +
theme(plot.title = element_text(hjust = 0),
plot.subtitle=element_text(size=8)
)
##ggsave(plot=r, file='zz_w1m.png', width=12, height=12)
r
Niewątpliwie liczba zgonów covidowych słabo wyjaśnia skalę wzrostu liczby zgonów ogółem pod koniec 2020 roku. O tym zresztą świadczy na przykład poniższy wykres rozproszenia:
zz <- z1 %>% filter(name != 'Polska' & ( (year == 2020 & week >= 44) | (year > 2020) ))
p <- zz %>%
ggplot(aes(x = nd, y=value, color=name)) +
geom_point(size=1 ) +
#geom_smooth(method = "loess", size=.5, span=0.25, se=F) +
theme_nikw() +
xlab(label="ogółem") +
ylab(label="c19") +
ggtitle("Zgony ogółem vs covidowe w PL (od 44 tygodnia/2020)",
subtitle = "źródło: GUS https://stat.gov.pl/obszary-tematyczne/ludnosc/ludnosc/zgony-wedlug-tygodni,39,2.html + MinZdrowia (COVID)")
p
albo niska, bo wynosząca zaledwie 0.3621134 wartość współczynnika korelacji liniowej Pearsona (dla tygodni 44/2020 i kolejnych).