forked from grossir/covid-peru
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpandemia_vacunados.Rmd
244 lines (200 loc) · 7.59 KB
/
pandemia_vacunados.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
---
title: "Pandemia de vacunados"
output: html_notebook
---
```{r}
library(readr)
library(dplyr)
library(lubridate)
library(ggplot2)
library(stringr)
library(kableExtra)
library(forcats)
library(rlang)
```
```{css}
caption {
color: black;
font-weight: bold;
font-size: 1.0em;
}
```
```{r}
positivos <- read_delim("2022_02_08_positivos_covid.csv", delim = ";") %>%
mutate_at(
vars(contains("FECHA")),
function(x) { as.Date(as.character(x), "%Y%m%d") }
)
tmp <- colnames(positivos)
tmp[5] <- "METODO"
colnames(positivos) <- tmp
```
```{r}
positivos
```
```{r}
positivos %>%
count(FECHA_RESULTADO) %>%
ggplot() +
geom_line(aes(x=FECHA_RESULTADO, y = n)) +
labs(
title= "Pruebas positivas de Covid",
subtitle ="Fuente: Datos abiertos MINSA, al 06/02/2022",
x = "Fecha de resultado de prueba",
y = "Numero de pruebas positivas"
) +
scale_x_date(breaks = scales::breaks_pretty(10))+
theme_minimal() +
theme(
plot.title = element_text(size=30),
axis.title = element_text(size=20),
# axis.ticks = element_text(size=14),
axis.text.y=element_text(size=20)
)
```
```{r}
if (!file.exists(paste0(Sys.Date(), "_", "resumen_vacunacion.csv")))
{
# De https://www.datosabiertos.gob.pe/dataset/vacunacion
# Ver en el get-data-minsa.bash como lo proceso para obtener vacunas_proyeccion.csv
vacunacion <- read_csv("2022_02_08_vacunas_proyeccion.csv")
n_vacs <- count(vacunacion, id_persona)
write_csv(n_vacs, paste0(Sys.Date(), "_", "resumen_vacunacion.csv")) # reduce rows
} else{
n_vacs <- read_csv(paste0(Sys.Date(), "_", "resumen_vacunacion.csv"))
}
```
Corte al 15/12/2021 - Filter from 15/12/2021 to 06/02/2022
15/12/21 is when the so called 3rd wave started......and also the beginning of the 'obligation' of a vaccinepass/ID/QR
¿Por qué elegir esta fecha de corte?
- Para ver unos dias antes del inicio de la 3era ola
- Por el inicio del "carnet de vacunacion"
```{r}
positivos %>%
filter(FECHA_RESULTADO >= as.Date("15/12/2021", "%d/%m/%Y")) %>%
nrow()
```
#### Cruzando positivos con vacunados
Se puede comprobar el cruce haciendo una busqueda del ID PERSONA en la data original y comparando la edad.
Tal vez valdria la pena hacer la proyeccion con edad para comprobar que los datos esten bien cruzados. Haciendo una muestrita a dedo, parece bien
grep 24662352 2022_01_24_TB_VACUNACION_COVID19/TB_VACUNACION_COVID19.csv
grep 24662596 2022_01_24_TB_VACUNACION_COVID19/TB_VACUNACION_COVID19.csv
grep 24662367 2022_01_24_TB_VACUNACION_COVID19/TB_VACUNACION_COVID19.csv
```{r}
con_vac <-
positivos %>%
filter(FECHA_RESULTADO >= as.Date("15/12/2021", "%d/%m/%Y")) %>%
left_join(n_vacs)
```
Notar que en los datos de positividad hay ID_PERSONA vacios, por lo que no puedo decir si estan vac, no vac o que ?
In the positivos : con_vac are empty id_persona's so we don't know if they are vaxxed or not or something else ?
```{r}
all_vaxxed <- nrow(con_vac)
all_vaxxed # Show the amount of all tested persons since 15/12/2021 :
```
Now let's correct and remove empty id_persona :
```{r}
con_vac <- filter(con_vac, !is.na(id_persona))
nrow(con_vac)
```
So there are a # of records of tested people, with no id_persona:
```{r}
all_vaxxed_no_id <- all_vaxxed - nrow(con_vac)
all_vaxxed_no_id
```
estos # positivos que no se puede saber su estado de vacunacion
These # positives we have no idea about vaxxed status
Porcentaje general de positividad segun dosis
```{r}
con_vac %>%
count(n, sort=F, name = 'nn') %>%
mutate(
p = round(nn/nrow(con_vac)*100, 3),
n = if_else(is.na(n), "0", as.character(n))
) %>%
rename(
`Número de dosis` = n,
`Número de positivos` = nn,
`Porcentaje del total de positivos` = p,
) %>%
kbl(
caption = "Distribución de pruebas positivas según estado de vacunación, desde 15/12/2021 hasta 06/02/2022"
) %>%
kable_material_dark()
```
```{r}
con_vac %>%
count(id_persona, name='positivos_x_persona') %>%
count(positivos_x_persona, sort=T) %>%
mutate(p = round(n/sum(n)*100, 3)) %>%
rename(
`Número de veces positivo` = positivos_x_persona,
`Número de personas` = n,
`Porcentaje del total` = p,
) %>%
kbl(
caption = "<b style='color:black !important; text-align:center !important;'>Distribución de pruebas positivas según número de positivos por cada persona, desde 15/12/2021 hasta 06/02/2022</b>",
) %>%
kable_paper(full_width=F)
```
Notar que, en este periodo de 15/12 - 06/02 hay:
- 26 personas que dan 4 veces positivo
- 680 que dan 3 veces positivos
- 35403 que dan 2 veces positivo (razonable ?, habria que ver)
Las duplicaciones suenan razonables, pero 3 o 4 suena raro... Facil y se hicieron la prueba varias veces.
Igual, el 96.5% de los datos corresponde a personas que salieron positivo 1 sola vez
Verlo por proporciones diarias afianza la idea
````{r}
gc()
````
Saves some GiB's, helps prevent crashing R
```{r}
con_vac %>%
rename(n_dosis=n) %>%
count(FECHA_RESULTADO, n_dosis, name='x_dia_x_dosis') %>%
group_by(FECHA_RESULTADO) %>%
mutate(
p = x_dia_x_dosis/sum(x_dia_x_dosis)*100,
n_dosis = forcats::fct_rev(if_else(is.na(n_dosis), "0", as.character(n_dosis)))
) %>%
ggplot() +
geom_col(aes(x=FECHA_RESULTADO, y = p, fill=n_dosis)) +
labs(
title = "Pruebas Positivas COVID x # vac.",
subtitle = "Desde 15/12/2021 hasta 06/02/2022 | Fuente: Datos Abiertos Minsa | @gjrossir",
y = "Porcentaje (%) de pruebas positivas",
x = "Fecha de resultado de prueba por dia",
fill = "# de dosis"
) +
scale_x_date(date_breaks = "1 week", date_labels = "%d/%m/%y") +
scale_fill_manual(values = rev(c("#000000", "#c71e1d", "#c71e1d","#ffe59c", "#4D9748", "#0000FF"))) +
theme_minimal() +
theme(
plot.title = element_text(size=25),
axis.title = element_text(size=20),
# axis.ticks = element_text(size=14),
axis.text.x=element_text(angle=90),
axis.text.y=element_text(size=20),
legend.text = element_text(size=18),
legend.title = element_text(size=16)
)
```
### Viendolo por metodos
```{r}
count(con_vac, METODO,sort=T) %>%
rename(
`Tipo de prueba` = METODO,
`Número de pruebas` = n
) %>%
kbl(
caption = "<b style='color:black !important; text-align:center !important;'>Distribución de pruebas positivas según tipo de prueba,<br>desde 15/12/2021 hasta 06/02/2022</b>",
) %>%
kable_paper(full_width=F)
# kable_material_dark(full_width = F, )
```
##### Disclaimer en los datos abiertos
Es el registro diario de casos positivos de covid-19 confirmados con cualquier tipo de prueba y que presentan síntomas. Cada registro es igual a una persona, la cual puede caracterizarse por sexo, edad y ubicación geográfica hasta nivel de distrito.
Directiva Sanitaria para la vigilancia epidemiológica de la enfermedad de Coronavirus en el Perú, aquí se establece los lineamientos y procedimientos de identificación de casos positivos, para más detalle ver el link:
https://www.gob.pe/institucion/minsa/normas-legales/1322786-905-2020-minsa
Nota: Desde el 02/06/2020 los casos por PR no incluye las IPRESS privadas que realizan tamizaje a trabajadores de empresas en el marco de la reactivación económica, debido a que el objetivo de este tamizaje NO permite identificar casos nuevos en personas sospechosas
Fuente: Instituto Nacional de Salud y Centro Nacional de Epidemiologia, prevención y Control de Enfermedades –