positividad
Calcula la positividad por fecha agrupando (o sin hacerlo)
por covariables. Por default calcula la positividad de las pruebas
haciendo Antigeno y PCR por separado, cada una por fecha y entidad.
Uso
positividad(
datos_covid,
entidades = c("AGUASCALIENTES", "BAJA CALIFORNIA", "BAJA CALIFORNIA SUR", "CAMPECHE",
"CHIAPAS", "CHIHUAHUA", "CIUDAD DE MÉXICO", "COAHUILA DE ZARAGOZA", "COLIMA",
"DURANGO", "GUANAJUATO", "GUERRERO", "HIDALGO", "JALISCO", "MÉXICO",
"MICHOACÁN DE OCAMPO", "MORELOS", "NAYARIT", "NUEVO LEÓN", "OAXACA", "PUEBLA",
"QUERÉTARO", "QUINTANA ROO", "SAN LUIS POTOSÍ", "SINALOA", "SONORA", "TABASCO",
"TAMAULIPAS", "TLAXCALA", "VERACRUZ DE IGNACIO DE LA LLAVE", "YUCATÁN", "ZACATECAS"),
group_by_entidad = TRUE,
entidad_tipo = c("Unidad Medica", "Residencia", "Nacimiento"),
fecha_tipo = c("Sintomas", "Ingreso", "Defuncion"),
tipo_prueba = c("Antigeno", "PCR"),
group_by_tipo_prueba = TRUE,
tipo_paciente = c("AMBULATORIO", "HOSPITALIZADO", "NO ESPECIFICADO"),
group_by_tipo_paciente = FALSE,
tipo_uci = c("SI", "NO", "NO APLICA", "SE IGNORA", "NO ESPECIFICADO"),
group_by_tipo_uci = FALSE,
tipo_sector = c("CRUZ ROJA", "DIF", "ESTATAL", "IMSS", "IMSS-BIENESTAR", "ISSSTE",
"MUNICIPAL", "PEMEX", "PRIVADA", "SEDENA", "SEMAR", "SSA", "UNIVERSITARIO",
"NO ESPECIFICADO"),
group_by_tipo_sector = FALSE,
defunciones = FALSE,
edad_cut = NULL,
fill_NA = TRUE,
list_name = "positividad",
remove_inconclusive = TRUE,
.grouping_vars = c()
)
Argumentos
- datos_covid
(obligatorio) Lista de
tibble
s oduckdb
s resultante dedescarga_datos_abiertos()
oread_datos_abiertos()
- entidades
(opcional) Vector con las entidades de las unidades medicas a analizar. Opciones:
AGUASCALIENTES
,BAJA CALIFORNIA
,BAJA CALIFORNIA SUR
,CAMPECHE
,CHIAPAS
,CHIHUAHUA
,CIUDAD DE MEXICO
,COAHUILA DE ZARAGOZA
,COLIMA
,DURANGO
,GUANAJUATO
,GUERRERO
,HIDALGO
,JALISCO
,MEXICO
,MICHOACAN DE OCAMPO
,MORELOS
,NAYARIT
NUEVO LEON
,OAXACA
,PUEBLA
,QUERETARO
,QUINTANA ROO
,SAN LUIS POTOSI
,SINALOA
,SONORA
,TABASCO
,TAMAULIPAS
,TLAXCALA
,VERACRUZ DE IGNACIO DE LA LLAVE
,YUCATAN
,ZACATECAS
.- group_by_entidad
(opcional)
TRUE
obtiene los casos para cada entidad reportando en cada fecha la entidad y los casos en dicha entidad.FALSE
junta lasentidades
sumando sus casos en una sola observacion por cada fecha.- entidad_tipo
(opcional) Indica a que se refiere las
entidades
seleccionadas. Elige una de las opciones:Unidad Medica
(entidad de la unidad medica),Nacimiento
(entidad de origen del individuo) oResidencia
(entidad donde reside el individuo).- fecha_tipo
(opcional) Selecciona si la fecha que se utiliza es la fecha de
Ingreso
(si aplica), la fecha deSintomas
o la deDefuncion
(si aplica). El default es fecha deSintomas
.- tipo_prueba
(opcional) Vector con el tipo de pruebas a incluir
Antigeno
,PCR
. Por default se incluyen ambas.- group_by_tipo_prueba
(opcional) Booleana determinando si regresa la base con cada entrada agrupada por
tipo_prueba
. En casoTRUE
(cada fecha y entidad reporta separado el los casos de PCR y Antigeno). En casoFALSE
se juntan los casos de PCR y Antigeno para devolver un unico numero por fecha.- tipo_paciente
(opcional) Vector con el tipo de pacientes a incluir. Opciones:
AMBULATORIO
,HOSPITALIZADO
,NO ESPECIFICADO
. Por default se incluyen todos.- group_by_tipo_paciente
(opcional) Booleana determinando (caso
TRUE
) si regresa la base con cada entrada agrupada portipo_paciente
(es decir cada fecha se genera un renglon paraAMBULATORIO
, un renglon paraHOSPITALIZADO
, etc) o bien si se suman todos los grupos y cada fecha reporta solo la suma de estos (estiloAMBULATORIO + HOSPITALIZADO
segun las categorias detipo_paciente
) El default esFALSE
.- tipo_uci
(opcional) Vector con el tipo de valores para Unidad de Cuidado Intensivo (UCI) a incluir:
SI
,NO
,NO APLICA
,SE IGNORA
,NO ESPECIFICADO
. Por default se incluyen todos.- group_by_tipo_uci
(opcional) Booleana. El caso
TRUE
determina si regresa la base con cada fecha teniendo diferentes renglones uno para cadatipo_uci
(es decir cada fecha se generan tantos observaciones como grupos de tipo de UCI) o bien en una sola fecha se suman todos los tipos de UCI (FALSE
). El default esFALSE
.- tipo_sector
(opcional) Vector con los sectores del sistema de salud a incluir:
CRUZ ROJA
,DIF
,ESTATAL
,IMSS
,IMSS-BIENESTAR
,ISSSTE
,MUNICIPAL
,PEMEX
,PRIVADA
,SEDENA
,SEMAR
,SSA
,UNIVERSITARIO
,NO ESPECIFICADO
. Por default se incluyen todos.- group_by_tipo_sector
(opcional) Booleana determina en el caso de
TRUE
si regresa la base con cada entrada agrupada portipo_sector
(es decir cada fecha tiene una entrada con los delIMSS
, una entrada distinta con los deISSSTE
, etc) o bien en caso deFALSE
se devuelve una sola entrada por fecha con la sumaIMSS + ISSSTE + etc
segun los sectores seleccionados. El default esFALSE
.- defunciones
(opcional) Booleana si incluir sólo defunciones
TRUE
o a todosFALSE
. El default esFALSE
.- edad_cut
(opcional) Vector con secuencia de edades para hacer grupos. Por ejemplo
edad_cut = c(0, 10, Inf)
arma dos grupos de edad de 0 a 10 y de 10 a infinito o bienedad_cut = c(15, 20)
deja sólo los registros entre 15 y 20 años. Por default esNULL
y no arma grupos etarios.- fill_NA
(opcional) Regresa observaciones para todas las combinaciones de variables incluyendo como
NA
donde no se observaron casos en el denominador. En caso contrario no se incluyen las filas donde no se observaron casos.- list_name
(opcional) Asigna un nombre en la lista de datos a la base generada
- remove_inconclusive
(opcional) Si
TRUE
no considera en el denominador de la positividad las pruebas cuyo resultado es inconcluso o aún no ha sido otorgado. SiFALSE
considera a todos. Por default esTRUE
.- .grouping_vars
(opcional) Vector de variables adicionales de agrupacion de los conteos. Por ejemplo si se agrega
.grouping_vars = 'DIABETES'
entonces para cada fecha habra dos conteos de casos uno de los que tienen diabetes y uno de los que no.
Valor
Une a la lista de datos_covid
una nueva entrada de nombre list_name
(default: positividad
) con una base de datos (tibble
) con los
resultados agregados.
positividad - Base de datos generara con los datos agregados (el nombre cambia si se usa
list_name
).dict - Diccionario de datos
dats - Datos originales (conexion a
duckdb
otibble
)disconnect - Función para desconectarte de
duckdb
... - Cualquier otro elemento que ya existiera en
datos_covid
Detalles
La positividad se define como
$$\frac{\# Pruebas positivas}{Total de pruebas}$$
Si se utiliza la opción remove_inconclusive = TRUE
el Total de pruebas se calcula
utilizando solo POSITIVOS + NEGATIVOS
. Si remove_inconclusive = FALSE
se calcula
utilizando todas las personas que tuvieron prueba:
POSITIVOS + NEGATIVOS + INCONCLUSOS + SIN RESULTADO
.
Si no se realizaron pruebas un dia la positividad no esta definida pues el Total de pruebas
es cero. En ese caso si fill_NA = TRUE
se devuelven las entradas de esos dias pero
con valor NA
.
Referencias
Furuse, Y., Ko, Y. K., Ninomiya, K., Suzuki, M., & Oshitani, H. (2021). Relationship of test positivity rates with COVID-19 epidemic dynamics. International journal of environmental research and public health, 18(9), 4655.
Al Dallal, A., AlDallal, U., & Al Dallal, J. (2021). Positivity rate: an indicator for the spread of COVID-19. Current Medical Research and Opinion, 37(12), 2067-2076.
Ejemplos
# Para el ejemplo usaremos los datos precargados (datosabiertos) pero tu puedes
# correr el ejemplo descargando informacion mas reciente.
datos_covid <- datosabiertos
# Casos a nivel nacional por estado por tipo de prueba
datos_covid <- datos_covid |> positividad()
head(datos_covid$positividad)
#> # A tibble: 6 × 8
#> Positivi…¹ FECHA_SINTOMAS ENTID…² TIPO_…³ ENTID…⁴ ABREV…⁵ n_pru…⁶ n_pos…⁷
#> <dbl> <dttm> <chr> <chr> <chr> <chr> <int> <int>
#> 1 0.5 2021-07-01 00:00:00 02 PCR BAJA C… BC 20 10
#> 2 0.594 2021-07-01 00:00:00 03 PCR BAJA C… BS 64 38
#> 3 0.5 2021-07-02 00:00:00 02 PCR BAJA C… BC 34 17
#> 4 0.519 2021-07-02 00:00:00 03 PCR BAJA C… BS 52 27
#> 5 0.517 2021-07-03 00:00:00 02 PCR BAJA C… BC 29 15
#> 6 0.755 2021-07-03 00:00:00 03 PCR BAJA C… BS 53 40
#> # … with abbreviated variable names ¹Positividad, ²ENTIDAD_UM, ³TIPO_PRUEBA,
#> # ⁴ENTIDAD_FEDERATIVA, ⁵ABREVIATURA, ⁶n_pruebas, ⁷n_positivos
# \donttest{
# Total nacional sumando todas las pruebas del pais
datos_covid <- datos_covid |>
positividad(group_by_entidad = FALSE, list_name = "positividad_nacional")
head(datos_covid$positividad_nacional)
#> # A tibble: 6 × 5
#> Positividad FECHA_SINTOMAS TIPO_PRUEBA n_pruebas n_positivos
#> <dbl> <dttm> <chr> <int> <int>
#> 1 0.571 2021-07-01 00:00:00 PCR 84 48
#> 2 0.512 2021-07-02 00:00:00 PCR 86 44
#> 3 0.671 2021-07-03 00:00:00 PCR 82 55
#> 4 0.469 2021-07-04 00:00:00 PCR 98 46
#> 5 0.365 2021-07-05 00:00:00 PCR 96 35
#> 6 0.557 2021-07-06 00:00:00 PCR 97 54
# Positivos en Baja California y Baja California Sur
datos_covid <- datos_covid |>
positividad(
entidades = c("BAJA CALIFORNIA", "BAJA CALIFORNIA SUR"),
list_name = "positividad_californiana"
)
head(datos_covid$positividad_californiana)
#> # A tibble: 6 × 8
#> Positivi…¹ FECHA_SINTOMAS ENTID…² TIPO_…³ ENTID…⁴ ABREV…⁵ n_pru…⁶ n_pos…⁷
#> <dbl> <dttm> <chr> <chr> <chr> <chr> <int> <int>
#> 1 0.5 2021-07-01 00:00:00 02 PCR BAJA C… BC 20 10
#> 2 0.594 2021-07-01 00:00:00 03 PCR BAJA C… BS 64 38
#> 3 0.5 2021-07-02 00:00:00 02 PCR BAJA C… BC 34 17
#> 4 0.519 2021-07-02 00:00:00 03 PCR BAJA C… BS 52 27
#> 5 0.517 2021-07-03 00:00:00 02 PCR BAJA C… BC 29 15
#> 6 0.755 2021-07-03 00:00:00 03 PCR BAJA C… BS 53 40
#> # … with abbreviated variable names ¹Positividad, ²ENTIDAD_UM, ³TIPO_PRUEBA,
#> # ⁴ENTIDAD_FEDERATIVA, ⁵ABREVIATURA, ⁶n_pruebas, ⁷n_positivos
# Agrupando ambas pruebas en una sola positividad global
datos_covid <- datos_covid |>
positividad(
entidades = c("BAJA CALIFORNIA", "BAJA CALIFORNIA SUR"),
group_by_tipo_prueba = FALSE,
list_name = "positividad_californiana_2"
)
head(datos_covid$positividad_californiana_2)
#> # A tibble: 6 × 7
#> Positividad FECHA_SINTOMAS ENTIDAD_UM ENTIDAD_F…¹ ABREV…² n_pru…³ n_pos…⁴
#> <dbl> <dttm> <chr> <chr> <chr> <int> <int>
#> 1 0.205 2021-07-01 00:00:00 02 BAJA CALIF… BC 146 30
#> 2 0.485 2021-07-01 00:00:00 03 BAJA CALIF… BS 548 266
#> 3 0.207 2021-07-02 00:00:00 02 BAJA CALIF… BC 179 37
#> 4 0.496 2021-07-02 00:00:00 03 BAJA CALIF… BS 385 191
#> 5 0.223 2021-07-03 00:00:00 02 BAJA CALIF… BC 184 41
#> 6 0.555 2021-07-03 00:00:00 03 BAJA CALIF… BS 445 247
#> # … with abbreviated variable names ¹ENTIDAD_FEDERATIVA, ²ABREVIATURA,
#> # ³n_pruebas, ⁴n_positivos
# Regresa la suma de ambos estados pero dividiendo por tipo de paciente
datos_covid <- datos_covid |>
positividad(
entidades = c("BAJA CALIFORNIA", "BAJA CALIFORNIA SUR"),
group_by_entidad = FALSE,
tipo_paciente = c("AMBULATORIO", "HOSPITALIZADO"),
group_by_tipo_paciente = TRUE,
list_name = "positividad_paciente"
)
head(datos_covid$positividad_paciente)
#> # A tibble: 6 × 7
#> Positividad FECHA_SINTOMAS TIPO_PRUEBA TIPO_PAC…¹ DESCR…² n_pru…³ n_pos…⁴
#> <dbl> <dttm> <chr> <dbl> <chr> <int> <int>
#> 1 0.325 2021-07-01 00:00:00 PCR 1 AMBULA… 40 13
#> 2 0.795 2021-07-01 00:00:00 PCR 2 HOSPIT… 44 35
#> 3 0.404 2021-07-02 00:00:00 PCR 1 AMBULA… 57 23
#> 4 0.724 2021-07-02 00:00:00 PCR 2 HOSPIT… 29 21
#> 5 0.583 2021-07-03 00:00:00 PCR 1 AMBULA… 48 28
#> 6 0.794 2021-07-03 00:00:00 PCR 2 HOSPIT… 34 27
#> # … with abbreviated variable names ¹TIPO_PACIENTE, ²DESCRIPCION_TIPO_PACIENTE,
#> # ³n_pruebas, ⁴n_positivos
# Si deseas agrupar por una variable que no este en las opciones va en .grouping_vars
datos_covid <- datos_covid |>
positividad(
tipo_sector = "IMSS",
.grouping_vars = c("SEXO"),
list_name = "positividad_imss_sexo"
)
head(datos_covid$positividad_imss_sexo)
#> # A tibble: 6 × 9
#> Positividad FECHA_SINTOMAS SEXO ENTIDA…¹ TIPO_…² ENTID…³ ABREV…⁴ n_pru…⁵
#> <dbl> <dttm> <int> <chr> <chr> <chr> <chr> <int>
#> 1 0.5 2021-07-01 00:00:00 1 02 PCR BAJA C… BC 6
#> 2 0.875 2021-07-01 00:00:00 1 03 PCR BAJA C… BS 16
#> 3 0.667 2021-07-01 00:00:00 2 02 PCR BAJA C… BC 3
#> 4 0.591 2021-07-01 00:00:00 2 03 PCR BAJA C… BS 22
#> 5 0.417 2021-07-02 00:00:00 1 02 PCR BAJA C… BC 12
#> 6 0.385 2021-07-02 00:00:00 1 03 PCR BAJA C… BS 13
#> # … with 1 more variable: n_positivos <int>, and abbreviated variable names
#> # ¹ENTIDAD_UM, ²TIPO_PRUEBA, ³ENTIDAD_FEDERATIVA, ⁴ABREVIATURA, ⁵n_pruebas
# }
# Una vez hayas concluido tu trabajo no olvides desconectar
datos_covid$disconnect()
#> ✔ Desconectado