Temas acerca de Inteligencia Artificial
Foto de Usuario
juanmansilla

Ranking Troomes
Mensajes: 9
Registrado: 14 Sep 2021, 17:21

Modelo de Clasificación de Fallecidos, Hospitalizados y Vacunados durante la pandemia de COVID 19

Mensaje por juanmansilla » 22 Nov 2021, 20:33

Nombre: Juan Pablo Jesús Mansilla López

1. Título: Fallecidos, hospitalizados y vacunados durante la pandemia de Covid19

2. Resumen

El presente trabajo trata sobre la clasificación de datos de fallecidos, hospitalizados y vacunados durante la pandemia de COVID19 tomadas de la base de datos del INS. El dataset de datos tuvo que ser preparado creando la variante grupo_etareo para consolidar la variable edad.

3. Descripción de DataSet
Enlace a la fuente de datos abiertos:
Fallecidos, hospitalizados y vacunados por COVID-19 | Plataforma Nacional de Datos Abiertos

https://www.datosabiertos.gob.pe/datase ... r-covid-19

Los datos que fueron importados al modelo mantienen la estructura siguiente: año, mes, sexo, edad, sexo, criterio_fallecido, departamento, positividad, hospitalizado, diashospitalizado, diasuci, conoxigeno, conventilación, fallecido_post_alta_hospital.
Asimismo, el tratamiento de datos se realizó mediante sentencias SQL las cuales se presentan a continuación:

select anno = datepart(yyyy,fecha_fallecimiento),
mes = datepart(mm,fecha_fallecimiento),
edad,
sexo,
criterio_fallecido,
departamento = dpt_cdc,
positividad = cdc_positividad,
hospitalizado = flag_hospitalizado,
diashospitalizado = isnull(datediff(dd, dateadd(dd,-1,fecha_ingreso_hosp),
fecha_segumiento_hosp_ultimo),0),
diasuci= isnull(datediff(dd, dateadd(dd,-1,fecha_ingreso_uci),
fecha_segumiento_hosp_ultimo),0),
con_oxigeno,
con_ventilacion,
fallecido_post_alta_hospital = case
when evolucion_hosp_ultimo like 'alta%' then 1
else 0
end,
grupoetareo = case
when edad<=4 then 'Infante'
when (edad>=5 and edad<=9) then 'Nino'
when (edad>=10 and edad<=14) then 'Adolescente'
when (edad>=15 and edad<=29) then 'Joven'
when (edad>=30 and edad<=64) then 'Adulto'
when (edad>=65) then 'Tercera Edad'
end,
vacuna = isnull(fabricante_dosis1,'SIN VACUNA'),
vacunado = case
when flag_vacuna = 0 then 0
when fecha_dosis1 is not null and fecha_dosis2 is null then 1
when fecha_dosis2 is not null and fecha_dosis1 is not null then 2
end
from [dbo].[TB_FALLECIDO_HOSP_VAC]

En el proceso de revisión de los datos, se encontró que la distribución de la población tiene un sesgo hacia la derecha en la que se aprecia que la mayor cantidad de fallecidos son los mayores de 60 años siendo los más afectados la población de la tercera edad. Asimismo, la población de hombres registra más fallecimientos (63%) respecto a la de mujeres (38%). Cabe señalar que de los fallecidos registrados el 69% no estaban vacunados.

Para tener una clasificación más precisa se retiraron del dataset las variables siguientes: edad, año y mes.

4. Descripción de los resultados obtenidos con la técnica de árboles de decisión

La clasificación por árboles de decisión cuenta con una precisión mayor al 98.22% y como como primer criterio de segmentación la población no vacunada, vacunados con PFIZER, AZTRAZENECA y SINOPHARM; en segunda instancia se clasifica por departamento, seguidamente de grupo etáreo y la cantidad de dosis. La técnica de árboles por decisión predice los fallecidos sin vacunación al 100% y los fallecidos con una o dos dosis con una precisión que supera el 62%; logrando en promedio 98% para todos los casos.

=== Run information ===

Scheme: weka.classifiers.trees.J48 -C 0.25 -M 2
Relation: FallecidosCovid2-weka.filters.unsupervised.attribute.Remove-R2-weka.filters.unsupervised.attribute.Remove-R1-weka.filters.unsupervised.attribute.Remove-R3-weka.filters.unsupervised.attribute.Remove-R1
Instances: 197408
Attributes: 12
sexo
departamento
positividad
hospitalizado
diashospitalizado
diasuci
con_oxigeno
con_ventilacion
fallecido_post_alta_hospital
grupoetareo
vacuna
vacunado
Test mode: evaluate on training data

=== Classifier model (full training set) ===

J48 pruned tree
------------------

vacuna = SIN VACUNA: S (188148.0)
vacuna = PFIZER
| departamento = JUNIN: 1D (303.0/112.0)
| departamento = AYACUCHO: 2D (59.0/10.0)
| departamento = LAMBAYEQUE
| | grupoetareo = Adulto: 2D (57.0/23.0)
| | grupoetareo = Tercera Edad: 1D (213.0/83.0)
| | grupoetareo = Joven: 2D (3.0)
| | grupoetareo = Adolescente: 1D (0.0)
| | grupoetareo = Infante: 1D (0.0)
| | grupoetareo = Nino: 1D (0.0)
| departamento = LIMA
| | fallecido_post_alta_hospital <= 0
| | | grupoetareo = Adulto
| | | | con_oxigeno = False
| | | | | sexo = M
| | | | | | positividad = True: 1D (178.0/83.0)
| | | | | | positividad = False: 2D (196.0/86.0)
| | | | | sexo = F: 2D (220.0/70.0)
| | | | con_oxigeno = True: 1D (62.0/21.0)
| | | grupoetareo = Tercera Edad
| | | | con_ventilacion = False
| | | | | sexo = M: 1D (1493.0/666.0)
| | | | | sexo = F
| | | | | | positividad = True: 1D (429.0/200.0)
| | | | | | positividad = False: 2D (578.0/277.0)
| | | | con_ventilacion = True: 2D (33.0/13.0)
| | | grupoetareo = Joven
| | | | sexo = M: 2D (15.0/4.0)
| | | | sexo = F: 1D (6.0/2.0)
| | | grupoetareo = Adolescente: 1D (6.0)
| | | grupoetareo = Infante: 2D (2.0)
| | | grupoetareo = Nino: 1D (0.0)
| | fallecido_post_alta_hospital > 0: 2D (60.0/14.0)
| departamento = ANCASH
| | hospitalizado = False
| | | grupoetareo = Adulto: 2D (12.0/3.0)
| | | grupoetareo = Tercera Edad
| | | | sexo = M: 1D (71.0/31.0)
| | | | sexo = F: 2D (38.0/17.0)
| | | grupoetareo = Joven: 2D (0.0)
| | | grupoetareo = Adolescente: 2D (0.0)
| | | grupoetareo = Infante: 2D (0.0)
| | | grupoetareo = Nino: 2D (0.0)
| | hospitalizado = True
| | | fallecido_post_alta_hospital <= 0: 1D (79.0/24.0)
| | | fallecido_post_alta_hospital > 0: 2D (5.0/1.0)
| departamento = PIURA
| | con_ventilacion = False
| | | sexo = M
| | | | positividad = True
| | | | | fallecido_post_alta_hospital <= 0
| | | | | | diasuci <= 0: 1D (77.0/34.0)
| | | | | | diasuci > 0: 2D (4.0)
| | | | | fallecido_post_alta_hospital > 0: 2D (3.0)
| | | | positividad = False: 2D (161.0/56.0)
| | | sexo = F: 2D (151.0/44.0)
| | con_ventilacion = True: 1D (7.0/1.0)
| departamento = PUNO: 1D (34.0/12.0)
| departamento = AREQUIPA
| | hospitalizado = False: 1D (688.0/169.0)
| | hospitalizado = True: 2D (2.0)
| departamento = APURIMAC: 1D (22.0/8.0)
| departamento = CALLAO
| | hospitalizado = False
| | | sexo = M: 1D (189.0/67.0)
| | | sexo = F
| | | | grupoetareo = Adulto: 2D (18.0/5.0)
| | | | grupoetareo = Tercera Edad: 1D (91.0/43.0)
| | | | grupoetareo = Joven: 2D (0.0)
| | | | grupoetareo = Adolescente: 2D (0.0)
| | | | grupoetareo = Infante: 2D (0.0)
| | | | grupoetareo = Nino: 2D (0.0)
| | hospitalizado = True
| | | sexo = M: 2D (14.0/3.0)
| | | sexo = F
| | | | grupoetareo = Adulto: 1D (2.0)
| | | | grupoetareo = Tercera Edad
| | | | | con_ventilacion = False
| | | | | | diashospitalizado <= 9: 1D (8.0/1.0)
| | | | | | diashospitalizado > 9: 2D (2.0)
| | | | | con_ventilacion = True: 2D (3.0)
| | | | grupoetareo = Joven: 1D (0.0)
| | | | grupoetareo = Adolescente: 1D (0.0)
| | | | grupoetareo = Infante: 1D (0.0)
| | | | grupoetareo = Nino: 1D (0.0)
| departamento = LA LIBERTAD
| | hospitalizado = False
| | | grupoetareo = Adulto
| | | | positividad = True: 1D (24.0/8.0)
| | | | positividad = False: 2D (35.0/15.0)
| | | grupoetareo = Tercera Edad: 1D (306.0/127.0)
| | | grupoetareo = Joven: 2D (1.0)
| | | grupoetareo = Adolescente: 1D (0.0)
| | | grupoetareo = Infante: 1D (0.0)
| | | grupoetareo = Nino: 1D (0.0)
| | hospitalizado = True: 2D (2.0)
| departamento = CUSCO
| | positividad = True
| | | grupoetareo = Adulto
| | | | sexo = M: 1D (8.0/3.0)
| | | | sexo = F: 2D (4.0)
| | | grupoetareo = Tercera Edad: 1D (113.0/35.0)
| | | grupoetareo = Joven: 1D (1.0)
| | | grupoetareo = Adolescente: 1D (0.0)
| | | grupoetareo = Infante: 1D (0.0)
| | | grupoetareo = Nino: 1D (0.0)
| | positividad = False: 2D (162.0/72.0)
| departamento = ICA
| | con_ventilacion = False
| | | grupoetareo = Adulto: 2D (52.0/24.0)
| | | grupoetareo = Tercera Edad
| | | | sexo = M
| | | | | con_oxigeno = False
| | | | | | positividad = True: 2D (30.0/13.0)
| | | | | | positividad = False: 1D (133.0/62.0)
| | | | | con_oxigeno = True
| | | | | | diasuci <= 2
| | | | | | | diashospitalizado <= 12
| | | | | | | | positividad = True: 1D (4.0)
| | | | | | | | positividad = False
| | | | | | | | | diashospitalizado <= 3: 2D (4.0)
| | | | | | | | | diashospitalizado > 3: 1D (16.0/6.0)
| | | | | | | diashospitalizado > 12: 2D (6.0)
| | | | | | diasuci > 2: 1D (5.0)
| | | | sexo = F
| | | | | positividad = True: 1D (27.0/12.0)
| | | | | positividad = False: 2D (104.0/44.0)
| | | grupoetareo = Joven: 2D (4.0)
| | | grupoetareo = Adolescente: 2D (0.0)
| | | grupoetareo = Infante: 2D (0.0)
| | | grupoetareo = Nino: 2D (0.0)
| | con_ventilacion = True
| | | sexo = M
| | | | diashospitalizado <= 14
| | | | | positividad = True: 2D (4.0)
| | | | | positividad = False
| | | | | | diashospitalizado <= 6: 2D (5.0)
| | | | | | diashospitalizado > 6: 1D (2.0)
| | | | diashospitalizado > 14: 1D (2.0)
| | | sexo = F: 2D (3.0)
| departamento = UCAYALI
| | positividad = True: 1D (3.0/1.0)
| | positividad = False: 2D (10.0/2.0)
| departamento = LORETO: 2D (91.0/33.0)
| departamento = HUANCAVELICA
| | diashospitalizado <= 16: 2D (12.0/2.0)
| | diashospitalizado > 16: 1D (2.0)
| departamento = MOQUEGUA
| | grupoetareo = Adulto
| | | sexo = M: 1D (7.0)
| | | sexo = F
| | | | positividad = True
| | | | | hospitalizado = False: 2D (5.0)
| | | | | hospitalizado = True: 1D (4.0)
| | | | positividad = False: 1D (3.0)
| | grupoetareo = Tercera Edad: 1D (54.0/27.0)
| | grupoetareo = Joven: 1D (0.0)
| | grupoetareo = Adolescente: 1D (0.0)
| | grupoetareo = Infante: 1D (0.0)
| | grupoetareo = Nino: 1D (0.0)
| departamento = CAJAMARCA
| | grupoetareo = Adulto
| | | diashospitalizado <= 2: 2D (19.0/7.0)
| | | diashospitalizado > 2: 1D (9.0)
| | grupoetareo = Tercera Edad
| | | fallecido_post_alta_hospital <= 0: 1D (113.0/45.0)
| | | fallecido_post_alta_hospital > 0: 2D (4.0/1.0)
| | grupoetareo = Joven: 2D (3.0)
| | grupoetareo = Adolescente: 1D (0.0)
| | grupoetareo = Infante: 1D (0.0)
| | grupoetareo = Nino: 1D (0.0)
| departamento = TUMBES: 2D (17.0/4.0)
| departamento = HUANUCO: 1D (16.0/7.0)
| departamento = MADRE DE DIOS: 1D (2.0/1.0)
| departamento = SAN MARTIN: 1D (133.0/63.0)
| departamento = AMAZONAS: 1D (7.0/1.0)
| departamento = TACNA
| | diashospitalizado <= 2
| | | hospitalizado = False: 1D (60.0/16.0)
| | | hospitalizado = True: 2D (6.0/1.0)
| | diashospitalizado > 2: 1D (33.0/2.0)
| departamento = PASCO: 2D (13.0/2.0)
vacuna = ASTRAZENECA: 1D (925.0/286.0)
vacuna = SINOPHARM
| hospitalizado = False: 2D (894.0/338.0)
| hospitalizado = True
| | fallecido_post_alta_hospital <= 0: 1D (135.0/52.0)
| | fallecido_post_alta_hospital > 0: 2D (29.0/8.0)

Number of Leaves : 128

Size of the tree : 190


Time taken to build model: 0.57 seconds

=== Evaluation on training set ===

Time taken to test model on training data: 0.24 seconds

=== Summary ===

Correctly Classified Instances 193905 98.2255 %
Incorrectly Classified Instances 3503 1.7745 %
Kappa statistic 0.8039
Mean absolute error 0.0142
Root mean squared error 0.0843
Relative absolute error 23.559 %
Root relative squared error 48.54 %
Total Number of Instances 197408

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class
1,000 0,000 1,000 1,000 1,000 1,000 1,000 1,000 S
0,761 0,012 0,621 0,761 0,684 0,679 0,992 0,674 1D
0,459 0,006 0,622 0,459 0,528 0,526 0,991 0,618 2D
Weighted Avg. 0,982 0,000 0,982 0,982 0,982 0,982 1,000 0,983

=== Confusion Matrix ===

a b c <-- classified as
188148 0 0 | a = S
0 3794 1192 | b = 1D
0 2311 1963 | c = 2D

5. Descripción de los resultados obtenidos con la técnica Random Forest

La clasificación por árboles de decisión cuenta con una precisión mayor al 98.44% y con una predicción de fallecidos sin vacunación al 100%, los fallecidos con una dosis al 65.7% y los fallecidos dos dosis al 68.7%.

=== Run information ===

Scheme: weka.classifiers.trees.RandomForest -P 100 -I 100 -num-slots 1 -K 0 -M 1.0 -V 0.001 -S 1
Relation: FallecidosCovid2-weka.filters.unsupervised.attribute.Remove-R2-weka.filters.unsupervised.attribute.Remove-R1-weka.filters.unsupervised.attribute.Remove-R3-weka.filters.unsupervised.attribute.Remove-R1
Instances: 197408
Attributes: 12
sexo
departamento
positividad
hospitalizado
diashospitalizado
diasuci
con_oxigeno
con_ventilacion
fallecido_post_alta_hospital
grupoetareo
vacuna
vacunado
Test mode: evaluate on training data

=== Classifier model (full training set) ===

RandomForest

Bagging with 100 iterations and base learner

weka.classifiers.trees.RandomTree -K 0 -M 1.0 -V 0.001 -S 1 -do-not-check-capabilities

Time taken to build model: 17.42 seconds

=== Evaluation on training set ===

Time taken to test model on training data: 3.7 seconds

=== Summary ===

Correctly Classified Instances 194331 98.4413 %
Incorrectly Classified Instances 3077 1.5587 %
Kappa statistic 0.8277
Mean absolute error 0.0128
Root mean squared error 0.0787
Relative absolute error 21.2124 %
Root relative squared error 45.3261 %
Total Number of Instances 197408

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class
1,000 0,000 1,000 1,000 1,000 1,000 1,000 1,000 S
0,800 0,011 0,657 0,800 0,722 0,717 0,994 0,781 1D
0,514 0,005 0,687 0,514 0,588 0,587 0,994 0,730 2D
Weighted Avg. 0,984 0,000 0,985 0,984 0,984 0,984 1,000 0,989

=== Confusion Matrix ===

a b c <-- classified as
188148 0 0 | a = S
0 3987 999 | b = 1D
0 2078 2196 | c = 2D

6. Descripción de los resultados obtenidos con la técnica SVM

Para aplicar el algoritmo SVM se tuvo que reducir la muestra de datos a un 50% aproximadamente 100,000 registros y la cantidad de variables para que considere sólo 7 entre ellas: sexo, departamento, positividad, hospitalizado, grupoetareo, vacuna y vacunado; con el propósito de viabilizar la ejecución del algoritmo toda vez que sólo puede utilizar 4 Gb de memoria RAM. Por ello, el procesamiento con el dataset completo se veía interrumpido por superar la capacidad de memoria gestionada por Weka.
La clasificación por Máquina de Soporte Vectorial cuenta con una precisión mayor al 98.027% y con una predicción de fallecidos sin vacunación al 100%, los fallecidos con una dosis al 87.24% y los fallecidos dos dosis al 22.2%.

=== Run information ===

Scheme: weka.classifiers.functions.LibSVM -S 0 -K 2 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 40.0 -C 1.0 -E 0.001 -P 0.1 -model "C:\\Program Files\\Weka-3-8-5" -seed 1
Relation: FallecidosCovid3-weka.filters.unsupervised.attribute.Remove-R1-3-weka.filters.unsupervised.attribute.Remove-R2-weka.filters.unsupervised.attribute.Remove-R5-6-weka.filters.unsupervised.attribute.Remove-R5-6-weka.filters.unsupervised.attribute.Remove-R5
Instances: 100000
Attributes: 7
sexo
departamento
positividad
hospitalizado
grupoetareo
vacuna
vacunado
Test mode: 10-fold cross-validation

=== Classifier model (full training set) ===

LibSVM wrapper, original code by Yasser EL-Manzalawy (= WLSVM)

Time taken to build model: 43.58 seconds

=== Stratified cross-validation ===
=== Summary ===

Correctly Classified Instances 98027 98.027 %
Incorrectly Classified Instances 1973 1.973 %
Kappa statistic 0.782
Mean absolute error 0.0132
Root mean squared error 0.1147
Relative absolute error 21.781 %
Root relative squared error 66.0085 %
Total Number of Instances 100000

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class
1,000 0,000 1,000 1,000 1,000 1,000 1,000 1,000 S
0,874 0,017 0,577 0,874 0,695 0,701 0,928 0,508 1D
0,222 0,003 0,591 0,222 0,322 0,354 0,609 0,147 2D
Weighted Avg. 0,980 0,001 0,980 0,980 0,978 0,979 0,990 0,969

=== Confusion Matrix ===

a b c <-- classified as
95306 0 0 | a = S
0 2252 325 | b = 1D
0 1648 469 | c = 2D


7. Descripción de los resultados obtenidos con la técnica Reyes Bayesianas

La clasificación por reyes Bayesianas cuenta con una precisión mayor al 98.33% y con una predicción de fallecidos sin vacunación al 100%, los fallecidos con una dosis al 66.1% y los fallecidos dos dosis al 62.4%.

=== Run information ===

Scheme: weka.classifiers.bayes.BayesNet -D -Q weka.classifiers.bayes.net.search.local.K2 -- -P 1 -S BAYES -E weka.classifiers.bayes.net.estimate.SimpleEstimator -- -A 0.5
Relation: FallecidosCovid2-weka.filters.unsupervised.attribute.Remove-R1-3
Instances: 197408
Attributes: 13
sexo
criterio_fallecido
departamento
positividad
hospitalizado
diashospitalizado
diasuci
con_oxigeno
con_ventilacion
fallecido_post_alta_hospital
grupoetareo
vacuna
vacunado
Test mode: 10-fold cross-validation

=== Classifier model (full training set) ===

Bayes Network Classifier
not using ADTree
#attributes=13 #classindex=12
Network structure (nodes followed by parents)
sexo(2): vacunado
criterio_fallecido(7): vacunado
departamento(25): vacunado
positividad(2): vacunado
hospitalizado(2): vacunado
diashospitalizado(2): vacunado
diasuci(1): vacunado
con_oxigeno(2): vacunado
con_ventilacion(2): vacunado
fallecido_post_alta_hospital(2): vacunado
grupoetareo(6): vacunado
vacuna(4): vacunado
vacunado(3):
LogScore Bayes: -1540214.6236542063
LogScore BDeu: -1540688.4969293356
LogScore MDL: -1540753.9146289928
LogScore ENTROPY: -1539918.69221565
LogScore AIC: -1540055.69221565


Time taken to build model: 1.31 seconds

=== Stratified cross-validation ===
=== Summary ===

Correctly Classified Instances 194122 98.3354 %
Incorrectly Classified Instances 3286 1.6646 %
Kappa statistic 0.8161
Mean absolute error 0.0133
Root mean squared error 0.0836
Relative absolute error 21.994 %
Root relative squared error 48.1517 %
Total Number of Instances 197408

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class
1,000 0,000 1,000 1,000 1,000 1,000 1,000 1,000 S
0,699 0,009 0,661 0,699 0,680 0,671 0,993 0,694 1D
0,583 0,008 0,624 0,583 0,602 0,594 0,992 0,655 2D
Weighted Avg. 0,983 0,000 0,983 0,983 0,983 0,983 1,000 0,985

=== Confusion Matrix ===

a b c <-- classified as
188148 0 0 | a = S
0 3484 1502 | b = 1D
0 1784 2490 | c = 2D


8. Conclusión

Arboles de decisión Random Forest SVM Redes Bayesianas
Precisión 98.22% 98.44% 98.027% 98.33%

Comparando los 4 modelos analizados, se aprecia que los algoritmos de árboles de decisión, random forest, SVM y Redes Bayesianas tienen precisiones similares; sin embargo, Random Forest presenta el mejor resultado de clasificación.


Responder