Dane

Dotyczące zgonów za rok 2021 pobrano ze strony “https://basiw.mz.gov.pl/index.html#/visualization?id=3761” a następnie zamieniono (skryptem Perla) na prawdziwie-indywidualne, pozbywając się dziwnych agregatów w postaci osób o tych samych cechach, które zmarły tego samego dnia w tym samym powiecie.

Format danych się zmienił oczywiście około połowy stycznia 2022. Nie ma pola w_pelni_zaszczepiony w szczególności. Sam je zatem robię. Ma ono wartość T dla tych co przyjęli więcej niż jedną dawkę (kolumna dawka_ost); wartość N w przypadku przeciwnym. Wartościami dawka_ost jest: pelna_dawka, jedna_dawka, przypominajaca oraz uzupełniająca (w kodowaniu CP1250 oczywiście). Uzupełniającą zmieniam na poziomie przetwarzania Perlem na przypominajaca, bo to chyba to samo?

Dane są teraz do pobrania ze strony: https://dane.gov.pl/pl/dataset/2582,statystyki-zakazen-i-zgonow-z-powodu-covid-19-z-uw/

basiw2021 <- read.csv("basiw_2021.csv", sep = ';',  header=T,
          colClasses=c('teryt_woj' = 'character', 'plec' = 'character',
                    'wiek'='character'),
                    na.string="NA") %>%
  mutate ( wiek = case_when(wiek == '90+' ~ '95', wiek != '90+' ~ wiek )) %>%
  mutate (wiek = as.integer(wiek)) %>%
  mutate ( plec = case_when(plec == 'nieznana' ~ NA_character_, plec != 'nieznana' ~ plec )) %>%
  select(date=data_rap_zgonu, zgony_c19=czy_wspolistniejace, dawka_ost,
         wiek) %>%
  ### uzupełniająca przekodowano na poziomie perla
  mutate (d2 = dawka_ost, d2 = case_when(d2 == 'pelna_dawka' ~ 'T',
                                         d2 == 'przypominajaca' ~ 'T',
                                         d2 == 'jedna_dawka' ~ 'N',
                                         d2 == '' ~ 'N' ))

Dotyczące szczepień pobrano ze strony https://www.gov.pl/web/szczepimysie/raport-szczepien-przeciwko-covid-19 Indywidualne pliki csv uporządkowano (bo są w różnej formie) i scalono w jeden (kilka dni brakuje np 30.04.2021)

szcz <- read.csv("szraport.csv", sep = ';',  header=T,
                 colClasses=c('teryt' = 'character'), na.string="NA") %>%
  filter (wojewodztwo == 'cały kraj')  %>%
  select (date, dawka2ogolem)

Zamiana na dane tygodniowe

szcz_w <- szcz %>% mutate (
  ww = substr(date2ISOweek(date), 1,8)) %>%
  group_by(ww) %>%
  summarise( 
    d2 = last(dawka2ogolem)/pl.pop * 100 ) %>%
  ungroup()


d_0 <- basiw2021 %>%
    group_by(date, d2) %>% summarise(d = n()) %>% ungroup() %>%
    pivot_wider(names_from = d2, values_from = d) %>%
    rename(nszczep=N, szczep=T) %>%
    mutate(szczep = replace_na(szczep, 0), 
           nszczep = replace_na(nszczep, 0),
           total = szczep + nszczep )

d_0_w <- d_0 %>% mutate (
  ## błędna zamiana na tygodnie (koniec/początek roku)
  ## yyyy = as.numeric(substr(date, 1, 4)),
  ## ww = as.numeric( substr(date2ISOweek(date), 7,8))) %>%
  ww = substr(date2ISOweek(date), 1,8)) %>%
  group_by(ww) %>%
  summarise(szczep = sum(szczep, na.rm = T), 
      nszczep = sum(nszczep),
      total = szczep + nszczep,
      nszczep.p = nszczep / total * 100,
      szczep.p = szczep / total * 100
      ) %>%
    ungroup()

Połączenie szczepień i zgonów

d <- left_join(d_0_w, szcz_w, by='ww')

d_sz <- d %>% select (ww, nszczep.p, szczep.p, d2) %>%
  rename (nsz=nszczep.p, sz=szczep.p ) %>%
  ## z powrotem na datę
  mutate(date = ISOweek2date(sprintf("%s-1", ww))) %>%
    pivot_longer(cols=c(nsz, sz, d2), names_to = 'cat', values_to = 'v')

Wykres

mainBreaks <- "4 weeks"
note <- sprintf("© NI-KW (%s oraz %s)",
        "https://basiw.mz.gov.pl/index.html#/visualization?id=3761",
        "https://www.gov.pl/web/szczepimysie/raport-szczepien-przeciwko-covid-19"
                )

p0 <- ggplot(d_sz, aes(x=date, y=v, color=cat)) + 
  #geom_smooth(method="loess", se=F, span=.25) +
  geom_line(size=.4, alpha=.5) +
  geom_point(size=1, alpha=.5) +
  xlab(label="yy/ww") +
  ylab(label="%") +
  ggtitle("Odsetek w pełni zaszczepionych vs zmarli z powodu COVID19 (wg tygodni)",
            subtitle="Odsetek zaszczepieni / niezaszczepieni liczony dla każdego tygodnia oodzielnie") +
  scale_x_date( labels = date_format("%y/%W"), breaks = mainBreaks) +
  labs(caption=note)  +
  # Zmienia etykiety i kolory
  # scale_color_manual(name="", 
  #     labels = c("d2"="pz", "nsz"="nie zaszczepieni", 'sz'='zaszczepieni'), 
  #     values = c("d2"='cyan', "nsz"='red', 'sz'='gren' ))  +
  #
  # Zmienia etykiety legendy a nie kolory
  scale_color_hue(name="", 
                     labels = c("d2"="podwójnie zaszczepieni", "nsz"="nie zaszczepieni",
                                "sz"="zaszczepieni")) +
  theme_nikw() 
##

ggsave(plot=p0, file='szczepieni_zmarli_PL.png')
p0

Koniec