-
Notifications
You must be signed in to change notification settings - Fork 1
/
observatorio_covid.Rmd
1473 lines (1115 loc) · 58.6 KB
/
observatorio_covid.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
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
---
title: "Uruguay, la región y el mundo"
author: ""
date: ""
output:
html_document:
toc: true
toc_float: true
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE, warning = FALSE)
```
```{r, warning=F, message=F, error=F, comment=FALSE}
library(tidyverse)
library(knitr)
library(kableExtra)
library(ggthemes)
library(RColorBrewer)
library(ggridges)
library(extrafont)
library(lubridate)
library(colorspace)
library(plotly)
library(stringi)
library(zoo)
```
```{r}
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## CARGA DE DATOS
## ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# SE CARGA DATA DE --> 'PAQUETE TIDYCOVID MERGEADA'
data_hoy <- list.files(path = here::here('data-raw'), pattern = "*.xlsx")
covid_m<- tibble::as_tibble(
rio::import(here::here('data-raw', data_hoy[length(data_hoy)]))
)
# SE CARGA DATA DE --> 'Uruguay GUIAD-COVID'
data_uy <- list.files(path = here::here('data-raw'), pattern = "^A_guiad")
data_pasteur <- tibble::as_tibble(
rio::import(here::here('data-raw', data_uy[length(data_uy)]))
)
# SE CARGA DATA DE -->'Uruguay GUIAD-COVID SUBNACIONAL'
depuy<- read.csv("https://raw.githubusercontent.com/GUIAD-COVID/datos-y-visualizaciones-GUIAD/master/datos/estadisticasUY_porDepto_detalle.csv", header=TRUE)
depuy <- depuy %>%
mutate(fecha = as.Date(lubridate::parse_date_time(fecha, order = "dmy")),
deptos = stringi::stri_sub(depuy$departamento, 1,-8),
deptos = stringr::str_squish(
ifelse(grepl(pattern = "^Paysa", x = deptos), "Paysand\u00fa",
ifelse(grepl(pattern = "Negro", x = deptos), "R\u00edo Negro",
ifelse(grepl(pattern = "^San", x = deptos), "San Jos\u00e9",
ifelse(grepl(pattern = "^Tacuarem", x = deptos), "Tacuaremb\u00f3", deptos))))
))
```
```{r, warning=F, message=F, error=F, comment=FALSE}
###cambio formato data_uy
data_pasteur<-data_pasteur %>%
mutate(Cant.casos.nuevos = as.double(cantCasosNuevosAjustado),
fecha = as.Date(lubridate::parse_date_time(fecha, order = "dmy")),
cantPersonasConInfeccionEnCurso=as.double(cantPersonasConInfeccionEnCurso),
acumcasos = as.double(acumCasos),
cantCTI = as.double(cantCTI),
cantCI = as.double(cantCI),
cantRecuperados = as.double(cantRecuperados),
acumRecuperados = as.double(acumRecuperados),
cantTest = as.double(cantTest),
acumTest = as.double(acumTest)
)
```
# **Introducción**
Esta sección permite al usuario acceder a un conjunto de gráficos nacionales y comparados relativos a la evolución de la pandemia COVID19, a links nacionales e internacionales que presentan esta y otra información y a la base de datos integrada que desde la UMAD se ha consolidado combinando bases globales ya estructuradas con los datos de Uruguay presentes en los reportes oficiales y en el monitor del Instituto Pasteur. Los datos incluyen además de los casos, casos críticos, fallecimientos, recuperados y tests realizados, datos relativos a las medidas que el gobierno uruguayo ha tomado para la contención primero y mitigación luego de la pandemia, así como datos para países y regiones seleccionadas. Finalmente, se presentan datos sobre la movilidad real de las personas a diferentes ámbitos (recreación, parques, trabajo, transportes, etc) con base en los reportes desarrollados desde la plataforma de “google mobility”. El propósito de este espacio es disponibilizar a los usuarios un conjunto de recursos para informar y permitir el acceso a fuentes para el análisis nacional y comparado.
# **Uruguay**
### _Acumulado de casos confirmados_
Presenta el acumulado de todos los casos confirmados a nivel nacional desde la segunda semana de abril. No se presentan datos previos ya que hasta la primera semana de abril los registros eran inconsistentes, marcando en algunos casos los test positivos y en otros días los casos positivos. La evolución de los casos aquí presentados no representa la cantidad real de casos en el país. Esa cifra no se conoce, aunque para quienes tengan interés en profundizar en la misma les sugerimos abordar los [documentos](https://umad-fcs.github.io/COVID19UY/documentos.html) en la sección sobre recursos metodológicos en donde se han procurado realizar estimaciones de las tasas de prevalencias reales en el país y en otros países del mundo a partir de diversos modelos y fuentes de datos
```{r, warning=F, message=F, comment=FALSE}
#1. Casos de Uruguay acumulativo línea de tiempo
g112<-
data_pasteur %>%
ggplot(aes(x = fecha, y = acumcasos)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill="#56B4E9") +
#geom_text(aes(label = acumcasos), vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90) +
scale_y_continuous() +
labs(x = "",
y = "Cantidad de casos",
title = "",#Acumulado de casos confirmados
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g112) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Acumulado de personas fallecidas_
Los datos reflejan las muertes confirmadas como derivadas del COVID19. Los criterios para asignar un fallecimiento a la enfermedad pueden variar entre países. Por otra parte, pueden darse situaciones en donde un fallecimiento –especialmente si es fuera del ámbito hospitalario- debido a COVID19 no es registrado como tal. Para quienes quieran ahondar en metodologías que procuran estimar las muertes por COVID19 recomendamos visitar [EuroMomo](https://www.euromomo.eu) en donde se trabaja con estadísticas sobre “excess mortality”. Lamentablemente en Uruguay no hemos podido acceder a los registros de muertes semanales o mensuales de los años 2019 y 2018 lo que ofrecería un parámetro para evaluar los excesos de muerte (o no) desde el 13 de marzo a la fecha en comparación a años anteriores en el mismo período.
```{r, warning=F, message=F, comment=FALSE}
#2. Muertes en Uruguay acumulativo linea de tiempo
g212 <-
data_pasteur %>%
ggplot(aes(x = fecha, y = acumFallecidos)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
#geom_text(aes(label= ifelse(acumFallecidos > 0, acumFallecidos, "")),
# position = position_dodge(0.9),
# size = 2,
# vjust = 2)+
scale_y_continuous()+
labs(x = "",
y = "Cantidad de personas",
title = "",#Acumulado de personas fallecidas
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)')+
theme_minimal()
ggplotly(g212) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Acumulado de personas con infecciones activas_
Este dato surge de restar el acumulado de nuevos casos menos el acumulado de pacientes recuperados (dados de alta) y fallecidos. Nuevamente, teniendo en cuenta las limitaciones registrales este dato es de suma importancia para evaluar la presencia del virus en la sociedad. La apuesta clave de los gobiernos es que la tasa de variación de el acumulado de personas con infecciones activas sea, luego de la primera etapa de expansión, negativa, liderada por el aumento de casos recuperados y la merma o estabilidad de nuevos casos y se sostenga con tal signo en el tiempo.
```{r, warning=F, message=F, comment=FALSE}
#3. Casos Activos en Uruguay acumulativo línea de tiempo
g312 <-
data_pasteur%>%
ggplot(aes(x=fecha, y=cantPersonasConInfeccionEnCurso)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
#geom_text(aes(label=cantPersonasConInfeccionEnCurso),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90)+
scale_y_continuous()+
labs(x = "",
y = "Cantidad de personas con infecciones activas",
title = "",#Acumulado de personas con infecciones activas
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)')+
theme_minimal()
ggplotly(g312) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Acumulado de casos recuperados_
Este dato surge de considerar todos los casos confirmados que han cursado la enfermedad y han sido dados de alta. Para nuestro país el criterio utilizado para dar de alta a un paciente COVID19 es 14 días continuos con ausencia de sintomatología. Si bien el modo ideal de determinar el alta es la realización de un test de detección, por razones de prioridad ello sucede solamente en algunos casos. Otros países solo determinan el alta con dichos tests realizados.
```{r, warning=F, message=F, comment=FALSE}
#4. Recuperados en Uruguay cumulativo línea de tiempo
g412 <-
data_pasteur%>%
ggplot(aes(x=fecha, y=acumRecuperados)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
#geom_text(aes(label=acumRecuperados),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90)+
scale_y_continuous()+
labs(x = "",
y = "Cantidad de personas recuperadas",
title = "",#Acumulado de personas recuperadas
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)')+
theme_minimal()
ggplotly(g412) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Personas infectadas por día_
En rigor este gráfico mide el número de personas que recibieron un resultado positivo en cada día. Debido a que existe una demora entre la realización del test y los resultados de entre 1 y 3 días, los casos diarios miden los resultados positivos cada día y no el número de infectados cada día. Aún con estas salvedades la serie permite un seguimiento adecuado de los casos detectados por día.
```{r, warning=F, message=F, comment=FALSE}
#5. Casos nuevos por dia línea de tiempo
g512 <-
data_pasteur %>%
mutate(day7mov = zoo::rollmean(Cant.casos.nuevos, k = 7, fill = NA)) %>%
ggplot(aes(x = fecha, y = Cant.casos.nuevos)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill="#56B4E9") + geom_line(aes(y=day7mov))+
#geom_text(aes(label=Cant.casos.nuevos),
# position = position_dodge(0.9),
# size = 2,
# vjust = 2) +
scale_y_continuous() +
labs(x = "",
y = "Cantidad de personas infectadas",
title = "",#Personas infectadas por día
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g512) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Cronograma de número de fallecidos_
La presente ilustración identifica para cada día la existencia o no de fallecimientos y la cantidad de fallecidos. No es una figura acumulativa, sino simplemente los registros de fallecimientos para cada día de la cronología.
```{r, warning=F, message=F, comment=FALSE, fig.height=7}
#6. Muertes nuevas por día línea de tiempo (horrible)
g612 <-
data_pasteur %>%
ggplot(aes(x = fecha, y = cantFallecidos)) +
geom_point(color = "#56B4E9") +
scale_y_continuous(breaks = data_pasteur$cantFallecidos) +
scale_x_date(breaks = "1 month", date_labels = "%B") +
coord_flip() +
labs(x = "",
y = "Cantidad de personas",
title = "",#Personas fallecidas por día
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal() +
theme(axis.text.y = element_text(size = 5))
ggplotly(g612) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.1,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Personas en Cuidados Intensivos por COVID19_
El siguiente gráfico muestra para cada día la cantidad de personas que se encuentran en unidades de cuidados intensivos debido a complicaciones con el curso de la enfermedad. Nuevamente, si bien estos son casos confirmados en CTI, a diferencia del número de casos confirmados en general, este indicador (asumiendo una tasa de complicaciones estable) provee no solo un indicador relevante para el cálculo de capacidades hospitalarias y su programación, sino también sobre la prevalencia estimada de la enfermedad en la población.
```{r, warning=F, message=F, comment=FALSE}
#7. Casos críticos (CTI) acumulativo línea de tiempo
g712 <-
data_pasteur %>%
ggplot(aes(x=fecha, y=cantCTI)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill="#56B4E9") +
#geom_text(aes(label=cantCTI),
# position = position_dodge(0.9),
# size = 2,
# vjust = 2) +
scale_y_continuous()+
labs(x = "",
y = "Cantidad de personas en CTI",
title = "",#Personas en CTI
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g712) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Personas recuperadas y activas_
Combina la evolución acumulada de personas recuperadas con el registro diario de casos activos (que surge de considerar el total de casos menos los recuperados y los fallecidos). Una curva ascendente del primer indicador y una descendente del segundo marcan un rumbo deseable en la progresión de la epidemia y sus consecuencias.
```{r, warning=F, message=F, comment=FALSE}
#8. Recuperados, vs activos acumulativos línea de tiempo
g812 <-
data_pasteur %>%
ggplot(aes(x = fecha))+
geom_line(aes(y=cantPersonasConInfeccionEnCurso, color="Casos Activos"), size = 1.5) +
geom_line(aes(y=acumRecuperados, color="Personas recuperadas"), size = 1.5) +
labs(x = "",
color = "",
y = "Cantidad de personas ",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g812) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Personas recuperadas y muertes_
Marca la evolución combinada de ambas situaciones. La tasa de fatalidad de casos (Case Fatality Rate, o CFR por sus siglas en inglés) surge de esta combinación. Se suman ambos indicadores y se divide el acumulado de fallecidos cada día por el acumulado de casos totales cada día o como se acostumbra hacer con un delay de siete a diez días dado lo que se conoce como el curso problemático de la enfermedad (o CFR corregida). Nuevamente, se espera una curva ascendente dominante de los casos recuperados sobre las fatalidades que amplia en su progresión la brecha entre casos recuperados y fallecimientos. De producirse un aumento sistemático de la brecha positiva a favor de los casos recuperados sobre los fallecidos, ello estaría indicando una caída en la letalidad de casos o inversamente un mejoramiento en las tasas de recuperación. Estos indicadores nuevamente no deben confundirse con la tasa de letalidad verdadera, ya que en rigor se desconoce el denominador real, ni con la tasa de letalidad poblacional, que sí surge del total de fallecidos sobre parámetros poblacionales generales.
```{r, warning=F, message=F, comment=FALSE}
#9. Muertes vs Recuperados acumulativos línea de tiempo
g912 <-
data_pasteur %>%
ggplot(aes(x = fecha)) +
geom_line(aes(y = acumFallecidos, color="Personas fallecidas"), size = 1.5) +
geom_line(aes(y = acumRecuperados, color="Personas recuperadas"), size = 1.5) +
labs(x = "",
color = "",
y = "Cantidad de personas",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g912) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Tests realizados por día_
En rigor son tests procesados y con resultados por día ya que entre el hisopado y el resultados del test puede existir una demora de entre 24 hs y cuatro días en la mayor parte de los países. Por ello los resultados de dichos tests no están indicando la cantidad de infecciones de cada día, sino la de un período anterior. Considerando la evolución clínica de la enfermedad y la demora entre hisopados y resultados, esta fotografía que observamos en el día puede representar la realidad de entre 5 y 9 días previos. Nuevamente, es importante no confundir las fechas en que las mediciones arrojan datos, con las fechas de las realidades que reflejan. Idealmente los tests realizads por día debieran presentar una curva ascendente ya que tanto para una mejor captación de la prevalencia, como para la definción de las estrategias epidemiológicas de mitigación y control una adecuada capacidad de testeo es fundamental. La cantidad de tests por día reflejan tanto los criterios que se definen en los protocolos médicos para habilitar la realización de los tests como la capacidad de infaestructra y logística de los países. La realización de tests aleatorios o tests masivos a ciertas poblaciones de riesgo son estrategias utilizadas crecientemente en varios países que requieren de capacidades muy altas de testeo a nivel nacional.
```{r, warning=F, message=F, comment=FALSE}
#10. Tests por día línea de tiempo
g1012 <-
data_pasteur%>% mutate(day5mov = zoo::rollmean(cantTest, k = 5, fill = NA))%>%
ggplot(aes(x=fecha, y=cantTest)) +
geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
geom_line(aes(y=day5mov))+
#geom_text(aes(label=cantTest),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90) +
scale_y_continuous() +
labs(x = "",
y = "Cantidad de Test",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g1012) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Tests acumulados por día_
La curva refleja simplemente el total de tests que se han realizado en el país.
```{r,warning=F, message=F, comment=FALSE}
#11. Tests acumulativos línea de tiempo
g1112 <-
data_pasteur %>%
ggplot(aes(x = fecha, y = acumTest)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
#geom_text(aes(label = acumTest),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90) +
scale_y_continuous(breaks = seq(0, 800000, by=40000) ) +
labs(x = "",
y = "Cantidad de Test",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g1112) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Tasa de crecimiento de casos totales_
Surge de considerar la variación día a día de los casos totales. Un valor del 5% indica simplemente que respecto a 100 casos en *t0* se identificaron 5 casos adicionales y por tanto 105 casos en *t1*. Cuanto menor y más decreciente sea la tasa de crecimiento más esperable es que el total de casos activos tienda a cero si las tasas de recuperación se mantienen estables.
```{r, warning=F, message=F, comment=FALSE}
#12. Tasa de crecimiento de casos totales
g1212 <-
data_pasteur%>%
mutate(crec_casos = acumcasos - lag(acumcasos),
crec_porc = (crec_casos/lag(acumcasos)*100)) %>%
ggplot(aes(x = fecha, y = crec_porc)) +
geom_col(position = position_dodge(width = 0.8), fill="#56B4E9") +
#geom_text(aes(label=round(crec_porc, 1)),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90) +
scale_y_continuous() +
labs(x = "",
y = "Tasa de crecimiento",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g1212) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
```{r, warning=F, message=F, comment=FALSE}
#13. Tasa de crecimiento de muertes totales
# data_pasteur%>%
# mutate(crec_casos = acumFallecidos - lag(acumFallecidos),
# crec_porc = (crec_casos/lag(acumFallecidos)*100),
# deaths_rate = case_when(deaths_rate = crec_porc < 100 ~ crec_porc, TRUE~NaN)) %>%
# ggplot(aes(x = fecha, y = deaths_rate)) +
# geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
# geom_text(aes(label= ifelse(deaths_rate > 0, round(deaths_rate, 1), "")),
# position = position_dodge(0.9),
# size = 2,
# vjust = 2) +
# scale_y_continuous()+
# labs(x = "",
# y = "Tasa de crecimiento de muertes totales",
# title = "Tasa de crecimiento muertes",
# caption = 'Unidad de Métodos y Acceso a Datos (UMAD)')+
# theme_minimal()
```
### _Tasa de variación de casos recuperados acumulados y casos acumulados_
Esta tasa surge de restar los casos acumulados a los casos recuperados acumulados y dividirlo por el total diario de casos acumulados. Por ello el valor es negativo y lo será siempre. El comportamiento deseable de esta tasa es su aproximación al valor cero. En su forma extrema ello ocurriría cuando los casos recuperados acumulados igualaran a los casos acumulados. Para ello se requeriría que los casos acumulados dejen de crecer y que no existan fallecimientos. Como ello no es posible (ya que existen ya casos de fallecimiento) el valor que surgiría de una tendencia hacia cero crecimiento de casos acumulados y progresión de casos recuperados arrojaría finalmente algo aproximado a la tasa de fatalidad de casos identificados.
```{r, warning=F, message=F, comment=FALSE}
#14. Tasa de VARIACION de recuperados cada dia sobre casos cada día
g1312 <-
data_pasteur %>%
mutate(crec_prop_rec = (acumRecuperados-acumcasos)/ acumcasos*100) %>%
ggplot(aes(x=fecha, y=crec_prop_rec)) +
geom_area(fill = "#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill = "#56B4E9") +
#geom_text(aes(label = round(crec_prop_rec, 1)),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90) +
scale_y_continuous() +
labs(x = "",
y = "Tasa de variación recuperados/casos nuevos",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal()
ggplotly(g1312) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Tasa de variación de tests realizados_
Muestra la variación día a día de los tests acumulados realizados. Es normal que las tasa de variación de de tests acumulados por dia decrezca en el tiempo ya que en la medida en que aumentan los tests acumulados la necesaria variación absoluta para mantener una tasa relativa uniforme de crecimiento aumenta.
```{r, warning=F, message=F, comment=FALSE}
#15. Tasa de VARIACIÓN de tests totales
g1412 <-
data_pasteur %>%
mutate(crec_casos = acumTest - lag(acumTest),
crec_porc = (crec_casos/lag(acumTest)*100),
test_rate=case_when(test_rate = crec_porc <100 ~ crec_porc, TRUE~NaN)) %>%
ggplot(aes(x=fecha, y=test_rate)) +
geom_area(fill="#56B4E9") +
geom_line() +
#geom_col(position = position_dodge(width = 0.8), fill="#56B4E9") +
#geom_text(aes(label= ifelse(test_rate>0, round(test_rate, 1), "")),
# vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90) +
scale_y_continuous() +
labs(x = "",
y = "Variación %",
title = "",
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)')+
theme_minimal()
ggplotly(g1412) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 100), legend = list(x = 0.5, y = 1.5, orientation = "h", xanchor = "center" )) %>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.2,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
# **Uruguay por departamentos**
<!-- ### _Casos confirmados_ -->
```{r}
# depuy %>%
# ggplot(aes(x = fecha, y = cantCasosNuevos)) +
# geom_bar(stat = "identity", position = "identity", fill= "#56B4E9") +
# labs(x = "",
# color="",
# y = "Cantidad de casos",
# title ="Casos nuevos") +
# theme_minimal()+
# theme(legend.position = "none")+
# facet_wrap(vars(deptos))
```
### _Acumulado de casos confirmados_
```{r}
depuy2 <- depuy %>% filter(deptos != "Casos ret")
g <-
depuy2 %>%
rename(Fecha = fecha,
Confirmados = acumcasos) %>%
ggplot(aes(x = Fecha, y = Confirmados)) +
geom_area(fill= "#56B4E9") +
geom_line() +
#geom_bar(stat = "identity", position = "identity", fill= "#56B4E9") +
labs(x = "",
color="",
y = "",
title ="",
caption = "Escala del eje 'y' libre") +
theme_minimal()+
theme(legend.position = "none", axis.text.x = element_text(size = 6))+
#geom_text(aes(label = enCurso), vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90)+
facet_wrap(vars(deptos), scales = "free_y")
g
#ggplotly(g) %>% config(displayModeBar = F) %>%
# layout(margin = list(b = 140), legend = list(x = 0.5, y = -0.1, orientation = "h", xanchor = "center" ))%>%
# add_annotations(xref = "paper",
# yref = "paper",
# x = -3,
# y = -0.2,
# showarrow = FALSE,
# text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Casos activos_
```{r}
g2 <-
depuy2 %>%
rename(Fecha=fecha, Activos= enCurso)%>%
ggplot(aes(x = Fecha, y = Activos)) +
geom_area(fill= "#56B4E9") +
geom_line() +
#geom_bar(stat = "identity", position = "identity", fill= "#56B4E9") +
labs(x = "",
color="",
y = "",
title ="",
caption = "Escala del eje 'y' libre") +
theme_minimal()+
theme(legend.position = "none", axis.text.x = element_text(size = 6))+
#geom_text(aes(label = enCurso), vjust = 0.4, hjust = 1.2, size = 2, vjust = 2, angle = 90)+
facet_wrap(vars(deptos), scales = "free_y")
g2
#ggplotly(g) %>% config(displayModeBar = F) %>%
# layout(margin = list(b = 140), legend = list(x = 0.5, y = -0.1, orientation = "h", xanchor = "center" ))%>%
# add_annotations(xref = "paper",
# yref = "paper",
# x = 1,
# y = -0.3,
# showarrow = FALSE,
# text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Cronograma de fallecimientos_
```{r}
g3 <-
depuy2 %>%
rename(Fecha=fecha, Fallecidos= cantFallecidos)%>%
ggplot(aes(x = Fecha, y = Fallecidos)) +
geom_point(color="#56B4E9", size= 0.5) +
scale_y_continuous(breaks = depuy$cantFallecidos) +
scale_x_date(breaks = "month", date_labels = "%b %d",) +
coord_flip() +
labs(x = "",
y = "Cantidad de personas",
title = "",#Personas fallecidas por día
caption = 'Unidad de Métodos y Acceso a Datos (UMAD)') +
theme_minimal() +
theme(axis.text.y = element_text(size = 6))+
facet_wrap(vars(deptos))
g3
#ggplotly(g) %>% config(displayModeBar = F) %>%
# layout(margin = list(b = 140), legend = list(x = 0.5, y = -0.1, orientation = "h", xanchor = "center" ))%>%
# add_annotations(xref = "paper",
# yref = "paper",
# x = 1,
# y = -0.3,
# showarrow = FALSE,
# text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
# **Uruguay y la región**
### _Acumulado de casos positivos detectados_
Identifica simplemente la curvas de casos acumulados confirmados. La comparación en este caso no tiene mayor sentido en lo que hace a las cantidades absolutas, aunque si permite ver formas diferentes en las pendientes de las curvas ascendentes.
```{r, out.width='100%'}
g <-
covid_m %>%
rename(`país` = country, fecha = date, casos = confirmed)%>%
filter(`país` %in% c('Argentina', 'Brazil', 'Chile', 'Uruguay')) %>%
ggplot(aes(x = fecha, y = casos, color = `país`))+
scale_y_continuous(labels = function(x) format(x, scientific = FALSE))+
geom_line() +
labs(x = "",
color = "",
y = "Cantidad de personas",
title = "") +
theme_minimal()
ggplotly(g) %>% config(displayModeBar = F) %>%
layout(margin = list(b = 140), legend = list(x = 0.5, y = -0.1, orientation = "h", xanchor = "center" ))%>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.3,
showarrow = FALSE,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
```
### _Casos acumulados confirmados por millón de habitantes_
Estas son las mismas curvas pero parametrizadas por la población de cada país y expresadas como casos por millón de habitantes. En este caso sí es pertinente la comparación tanto de los niveles o valores como de las pendientes y las curvas. La preferencia absoluta es por curvas que se aplanan y luego dejan de crecer. Ello no sucede por ahora en la región. Sin embargo, es importante distinguir entre países que muestran curvas exponenciales de aquellos que muestran curvas de progresión lineal y cuyas pendientes pueden ser más o menos acentuadas. Es importante también considerar la trayectoria considerando el tiempo transcurrido entre la detección de los primeros casos y la progresión a la fecha. Esto puede realizarse colocando el cursor sobre cualquier punto de la curva lo que nos arrojará el dato del valor de dicha curva y la fecha de dicho valor.
```{r, out.width='100%'}
#16. Casos por 1 millon de habitantes (Argentina, Chile, Uruguay, Brasil, promedio America del Sur))
g<-covid_m%>%
filter(country %in% c('Argentina', 'Brazil', 'Chile', 'Uruguay'))%>%
mutate(confirmedx1m = round(confirmed/population*1000000, 1),
mean_confirmedx1m = round(mean(confirmedx1m), 1 ))%>%
select(date, country,confirmedx1m, mean_confirmedx1m)%>%
gather(key = "variables", value = "valores", -date, -country, -mean_confirmedx1m)%>%
rename(`país`=country, fecha=date, casos=valores, promedio= mean_confirmedx1m)%>%
ggplot(aes(x = fecha, y= casos, colour=`país`))+
geom_line()+
geom_line(aes(y = promedio), linetype = "twodash", colour = "grey")+
labs(x = "",
color = "",
y = "Cantidad de casos ",
title = "")+#Casos confirmados por millón de personas
theme_minimal()
p<-ggplotly(g)%>% config(displayModeBar = F)%>%
layout(margin = list(b=120), legend=list(x=0.5, y=-0.1,orientation = "h",
xanchor = "center" ))%>%
add_annotations(xref="paper",
yref="paper",
x=1,
y=-0.3,
showarrow=F,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black",
size = 12))
p[["x"]][["data"]][[5]][["text"]] <- paste("promedio:", g$data$promedio, "<br>",
"fecha:", g$data$fecha, "<br>")
p
```
### _Muertes por millón de habitantes_
Muestra la evolución de los fallecidos parametrizados por la población de los países. Nuevamente tanto los valores de cada caso como las pendientes son en este caso comparables, aunque nuevamente es importante considerar las fechas o tiempos acaecidos entre la aparición de los primeros casos y su progresión. Como se puede observar los países que presentan más casos por millón de habitantes no son necesariamente los que presentan más muertes por millón de habitantes. Existen muchas potenciales razones para ello, pero una a considerar siempre es la amplitud del testeo en los diferentes países. En general países con alta capacidad de testeo presentan mayor capacidad de captación de casos y viceversa. Ello puede llevar que países con muchos casos detectados por millón de habitantes presenten menos muertes por millón de habitantes que países con menos casos detectados. La razón en este caso sería que los primeros están más cerca del verdadero denominador que los segundos.
```{r, out.width='100%'}
#17. Muertes por 1 millon de habitantes ((Argentina, Chile, Uruguay, Brasil, promedio América del Sur)
g<-covid_m%>%
filter(country %in% c('Argentina', 'Brazil', 'Chile', 'Uruguay')) %>%
mutate(deathsx1m = round(deaths/population*1000000, 1)) %>%
select(date, country, deathsx1m) %>%
gather(key = "variables", value = "valores", -date, -country) %>%
rename(`país` = country, fecha = date, muertes = valores) %>%
ggplot(aes(x = fecha, y= muertes, colour = `país`)) +
geom_line() +
#geom_line(aes(y = promedio), linetype = "twodash", colour = "grey") +
labs(x = "",
color = "",
y = "Cantidad de muertes",
title = "")+ #Muertes por millón de habitantes
theme_minimal()
p <-
ggplotly(g) %>%
config(displayModeBar = FALSE) %>%
layout(margin = list(b = 120), legend = list(x = 0.5, y = -0.1,orientation = "h",
xanchor = "center" ))%>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.3,
showarrow = FALSE,
text = 'Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black",size = 12))
#p[["x"]][["data"]][[5]][["text"]] <- paste("promedio:", g$data$promedio, "<br>", "fecha:", g$data$fecha, "<br>")
p
```
### _Recuperados por millón de habitantes_
Si bien presentamos estas curvas las diferencias en como los países y con que periodicidad definen recuperados y no recuperados hacen compleja una interpretación clara. Igualmente, las curvas muestran pautas similares a las de casos por millón de habitantes sugiriendo tasas de recuperación similares aunque no iguales.
```{r}
#18. Tests por millón de habitantes (IDEM)
#19. Casos Activos por millon de habitantes
#20. Casos críticos por casos totales línea de tiempo
```
```{r, out.width='100%'}
#21. Recuperados por casos totales línea de tiempo.
g <-
covid_m%>%
filter(country %in% c('Argentina', 'Brazil', 'Chile', 'Uruguay')) %>%
mutate(recoveredx1m = round(recovered/population*1000000, 1) ) %>%
select(date, country, recoveredx1m) %>%
gather(key = "variables", value = "valores", -date, -country) %>%
rename(`país` = country, fecha = date, recuperados = valores)%>%
ggplot(aes(x = fecha, y= recuperados, colour = `país`)) +
geom_line() +
labs(x = "",
color = "",
y = "Cantidad de recuperados",
title = "")+ #Recuperados por millón de habitantes
theme_minimal()
p <-
ggplotly(g) %>%
config(displayModeBar = FALSE)%>%
layout(margin = list(b = 120), legend = list(x = 0.5, y = -0.1,orientation = "h",
xanchor = "center" ))%>%
add_annotations(xref = "paper",
yref = "paper",
x = 1,
y = -0.3,
showarrow = FALSE,
text = 'Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black", size = 12))
#p[["x"]][["data"]][[5]][["text"]] <- paste("promedio:", g$data$promedio, "<br>",
#"fecha:", g$data$fecha, "<br>")
p
```
### _Muertes sobre casos totales_
En rigor este indicador mediría la tasa de fatalidad de casos (CFR) aunque sin reconocer el rezago entre casos registrados y ocurrencia de fallecimiento. En cualquier caso muestra una pauta esperable, con niveles altos en el inicio y en la medida que aumentan los casos un aplanamiento o incluso disminución de la curva. Ello responde a que la capacidad ampliada de testeo y de identificación de casos menos graves opera generando un denominador mayor y un numerador menor. El pico extremo de Argentina al inicio surge posiblemente de inconsistencias de registros y casos en el inicio de la pandemia en ese país.
```{r, warning=F, message=F, comment=FALSE, out.width='100%'}
#22. Muertes por casos totales línea de tiempo
g<-covid_m%>%
filter(country %in% c('Argentina', 'Brazil', 'Chile', 'Uruguay')) %>%
mutate(deathsxconfirmed = round(deaths/confirmed *100,1)) %>%
select(date, country, deathsxconfirmed) %>%
gather(key="variables", value="valores", -date, -country) %>%
rename(`país`=country, fecha=date, muertes=valores)%>%
ggplot(aes(x= fecha, y= muertes, colour=`país`)) +
geom_line() +
labs(x = "",
color = "",
y = "Muertes/casos totales",
title = "")+
theme_minimal()
p<-ggplotly(g)%>% config(displayModeBar = F)%>%
layout(margin = list(b=120), legend=list(x=0.5, y=-0.1,orientation = "h",
xanchor = "center" ))%>%
add_annotations(xref="paper",
yref="paper",
x=1,
y=-0.3,
showarrow=F,
text='Unidad de Métodos y Acceso a Datos (UMAD)', font = list(color = "black",
size = 12))
#p[["x"]][["data"]][[5]][["text"]] <- paste("promedio:", g$data$promedio, "<br>",
#"fecha:", g$data$fecha, "<br>")
p
```
# **Uruguay y el mundo**
### _Número de casos confirmados sobre número de test_
Ofrece un indicador que dados los criterios de activación de hisopados y tests sugiere una tasa de prevalencia de casos *sospechosos* por contactos o por sintomatología. Nuevamente al no aplicarse como una muestra aleatoria no puede interpretarse este indicador como uno de prevanlecia poblacional, pero sí –con suma cautela- de prevalencia en población considerada en riesgo de contagio de acuerdos a los criterios de cada país.
```{r, out.width='100%', warning=F}
g <-
covid_m %>%
drop_na(total_tests)%>%
group_by(country) %>%
mutate(max_confirmed = max(confirmed, na.rm = TRUE),
max_test = max(total_tests, na.rm = TRUE),