library(ggplot2)
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.6.1
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(xlsx)
library(plyr)
## -------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## -------------------------------------------------------------------------
##
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
##
## arrange, count, desc, failwith, id, mutate, rename, summarise,
## summarize
library(pROC)
## Type 'citation("pROC")' for a citation.
##
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
##
## cov, smooth, var
Para determinar la capacidad discriminante de la escala PIM3 se partio de la informacion contenida en un archivo .CSV el cual pesa 459 KM y tiene una dimension de 395 filas x 32 columnas. Este archivo tuvo un proceso previo de limpieza de la información.
setwd("C:/Users/Javier/Downloads/Alexandro")
leer <- read.xlsx("DATASET.xlsx", colNames = TRUE, sheetIndex = 1)
dim(leer)
## [1] 395 32
str(leer)
## 'data.frame': 395 obs. of 32 variables:
## $ conteo : num 1 1 1 1 1 1 1 1 1 1 ...
## $ Meses : num 2 1 12 11 6 2 2 1 1 1 ...
## $ anios : num 0.2 0.1 1 0.9 0.5 0.2 0.2 0.1 0.1 0.1 ...
## $ anios_rango : Factor w/ 5 levels "1 - 3 Años",..: 5 5 1 5 5 5 5 5 5 5 ...
## $ sexo : Factor w/ 2 levels "H","M": 1 1 1 2 1 1 1 1 2 2 ...
## $ peso. : num 2.65 2.5 7.5 8.4 12 4.4 4 4.8 2.5 3.5 ...
## $ PRISM : num 1 19 22 24 28 25 14 NA 41 20 ...
## $ Mortalidad : num 15.3 29.9 44.3 54 72.8 ...
## $ ventilacion : num 15 10 NA 5 NA NA NA NA 150 90 ...
## $ FC : num 115 110 154 156 190 124 190 175 132 109 ...
## $ PAM : num 45 48 56 50 70 70 NA NA 111 76 ...
## $ pres.sis : num 64 66 73 68 98 99 NA NA 132 98 ...
## $ gluc : num 263 152 206 198 51 64 NA NA 153 205 ...
## $ Creat : num 0.4 0.4 0.4 0.3 1 0.4 NA NA 0.7 2 ...
## $ Modo : Factor w/ 9 levels "Ac","AC","Alto ",..: 2 2 2 2 2 2 6 6 2 2 ...
## $ po2 : num 169 96 150 145 53 106 NA NA 39 35.7 ...
## $ hco3 : num 18.9 25 21 22 15 23 NA NA 19 12.4 ...
## $ eb : num -5.6 2.1 -2.2 -1.7 -8.9 -1.9 NA NA -19 -11 ...
## $ pafi : num 193 241 250 136 262 176 NA NA 303 404 ...
## $ rec_cirugia : num 0 0 0 0 0 0 0 0 0 0 ...
## $ dx_ar : Factor w/ 3 levels "0","1","Ninguno ": NA NA NA NA NA NA NA NA NA NA ...
## $ Dx.MAR : Factor w/ 5 levels "0","1","3","5",..: NA NA NA NA NA NA NA NA NA NA ...
## $ Tipo.de.Ingreso: num NA 2 2 NA 2 NA 2 2 2 2 ...
## $ dias.estancia : num NA 7 NA NA NA NA NA NA NA 114 ...
## $ Egreso : num 0 1 0 0 2 0 0 0 1 1 ...
## $ causa.muerte : Factor w/ 96 levels "/","Bronquolitis, SDRA severo, choque septico. ",..: 1 1 1 1 81 1 1 1 1 1 ...
## $ PIM3.mortalidad: num 31 68.7 45.7 9.3 32 ...
## $ PIM3 : num 31 69 46 9 32 13 3 3 43 38 ...
## $ Fallecio : num 0 0 0 0 1 0 0 0 0 0 ...
## $ Riesgo : num 3 3 3 3 3 3 1 1 3 3 ...
## $ Fallece : num 1 1 1 1 1 1 0 0 1 1 ...
## $ colNames : logi TRUE TRUE TRUE TRUE TRUE TRUE ...
El 69% de pacientes tienen menos de un ano de edad
leer$anios <- as.double(leer$anios)
edad_temp <- as.factor(ifelse(leer$anios < 1, "menor 1 año",
ifelse(leer$anios >= 1 & leer$anios < 3, "1 - 3 años",
ifelse(leer$anios >= 3 & leer$anios < 6, "3 - 6 años",
ifelse(leer$anios >= 6 & leer$anios < 9, "6 - 9 años",
ifelse(leer$anios >= 9, "9 - 12 años",""))))))
ggplot(data.frame(edad_temp), aes(x=edad_temp)) + geom_bar(fill = "royalblue3") + xlab("Rango de edad")+ ylab("Frecuencia") + ggtitle("Cantidad de pacientes por rango de edad")
El 63% de pacientes salen del hospital con vida mientra que un 35% de ellos fallece (el 2% restante no ha tenido egreso aun)
egreso <- ifelse(leer$Egreso == 0, "sin egreso",
ifelse(leer$Egreso == 1, "vivo", "fallecido"))
ggplot(data.frame(egreso), aes(x=egreso)) + geom_bar(fill = "slateblue") + xlab("Motivo de Egreso")+ ylab("Frecuencia") + ggtitle("Cantidad de pacientes por motivo de egreso")
El 56% de pacientes son hombres y el 44% restante mujeres
sexo <- ifelse(as.factor(as.data.frame(leer$sexo)[complete.cases(as.data.frame(leer$sexo)),]) == "H", "Hombre", "Mujer")
ggplot(data.frame(sexo), aes(x=sexo)) + geom_bar(fill = "green4") + xlab("Sexo")+ ylab("Frecuencia") + ggtitle("Sexo de los pacientes")
Para cada una de las variables numericas que conforman la escala se muestra: minimo, maximo, cuartil 1, cuartil 3, media y mediana.
FC <- summary(
as.numeric(
as.data.frame(
leer$FC)[complete.cases(
as.data.frame(leer$FC)),]))
PAM <- summary(
as.numeric(
as.data.frame(
leer$PAM)[complete.cases(
as.data.frame(leer$PAM)),]))
pre.sis <- summary(as.numeric(as.data.frame(leer$pres.sis)[complete.cases(as.data.frame(leer$pres.sis)),]))
gluc <- summary(as.numeric(as.data.frame(leer$gluc)[complete.cases(as.data.frame(leer$gluc)),]))
creat <- summary(as.numeric(as.data.frame(leer$Creat)[complete.cases(as.data.frame(leer$Creat)),]))
po2 <- summary(as.numeric(as.data.frame(leer$po2)[complete.cases(as.data.frame(leer$po2)),]))
hco3 <- summary(as.numeric(as.data.frame(leer$hco3)[complete.cases(as.data.frame(leer$hco3)),]))
eb <- summary(as.numeric(as.data.frame(leer$eb)[complete.cases(as.data.frame(leer$eb)),]))
pafi <- summary(as.numeric(as.data.frame(leer$pafi)[complete.cases(as.data.frame(leer$pafi)),]))
rbind(FC, PAM, pre.sis, gluc, creat, po2, hco3, eb, pafi)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## FC 60.0 115.000 138.00 137.053165 156.50 250.0
## PAM 24.0 53.000 66.00 66.168975 77.00 127.0
## pre.sis 41.0 77.000 90.00 89.097276 100.00 151.0
## gluc 2.3 87.000 108.00 125.560477 138.00 595.0
## creat 0.2 0.390 0.46 0.588489 0.59 8.1
## po2 17.8 58.000 108.00 114.922597 165.00 377.0
## hco3 3.2 16.725 19.95 19.913212 22.80 225.0
## eb -28.0 -7.000 -3.50 -4.447668 -1.20 25.0
## pafi 22.3 140.000 192.00 202.851524 263.00 505.0
De quienes fallecieron, el 22% fue por Choque Septico + otra enfermedad (distinta de Neumonia) mientras que un 12% fallecieron debido a Choque Septico + Neumonia.
causas <- as.factor(subset(leer, leer$Fallecio == 1)$causa.muerte)
causas <- revalue(causas,
c(
'/' = '.Otros',
'Bronquolitis, SDRA severo, choque septico. ' = '.Choque septico + Otros',
'Catarata Congenita, DPE Severo ERGE' = '.Otros',
'Choque cardiogenico' = '.Otros',
'Choque cardiogenico, endo carditis bacteriana.' = '.Otros',
'Choque cardiogenico, neumonia bacteriana. ' = '.Otros',
'Choque Cardiogenico, Post calostomia, CCA.' = '.Otros',
'Choque Dengue, Dengue hemoragico. ' = '.Otros',
'Choque distribuitivo, IRA, hipoglicemia e hipokalemia' = '.Otros',
'Choque distributivo, SDA, TSV, PCR' = '.Otros',
'Choque refractario a aminas, FMO' = '.Otros',
'choque septico' = '.Choque septico',
'Choque septico ' = '.Choque septico',
'Choque septico refractario aminas' = '.Choque septico + Otros',
'Choque septico, aciclosis metabolica, IRA' = '.Choque septico + Otros',
'Choque septico, CID, neumonia bacteriana' = '.Choque septico + Neumonia',
'Choque septico, falla renal. ' = '.Choque septico + Otros',
'Choque septico, FMO' = '.Choque septico',
'Choque septico, FMO, CID' = '.Choque septico + Otros',
'Choque septico, HTPPRN, Post PCR' = '.Choque septico + Otros',
'Choque septico, IRA poliurico' = '.Choque septico + Otros',
'choque septico, IRA, Sx. Comvulsivo, hipernatremia, DPE severo' = '.Choque septico + Otros',
'choque septico, LLA, Sepsis nosocomial, FMO' = '.Choque septico + Otros',
'Choque septico, Meningitis. ' = '.Choque septico + Otros',
'Choque Septico, neumonia bacteriana, Post PCR. CID' = '.Choque septico + Neumonia',
'Choque septico, neumonia bacteriana.' = '.Choque septico + Neumonia',
'choque septico, neumonia neonatal, hernia. ' = '.Choque septico + Neumonia',
'Choque septico, neumonia viral.' = '.Choque septico + Neumonia',
'Choque septico, NTA, IRA' = '.Choque septico + Otros',
'Choque septico, SDRA, FMO' = '.Choque septico + Otros',
'Choque septico, SDRA.' = '.Choque septico + Otros',
'Choque septico, sepsis neonatal' = '.Choque septico + Otros',
'Choque septico, sepsis neonatal tardia-' = '.Choque septico + Otros',
'Choque septico, sepsis neonatal temprana, EMH G-III' = '.Choque septico + Otros',
'Choque septico, sepsis nosocomial' = '.Choque septico + Otros',
'Choque septico, sespsis nosocomial' = '.Choque septico + Otros',
'Choque septico, Tb pulmonar y miliar, SDRA' = '.Choque septico + Otros',
'Choque septico, Varicela s/infectada.' = '.Choque septico + Otros',
'Chque refractario aminas, CID,FMO' = '.Otros',
'CID, Choque septico, HPPRN.' = '.Choque septico + Otros',
'CID/TCE G III' = '.Otros',
'Correcion de Onfalocele, choque septico' = '.Choque septico + Otros',
'Edema cerebral' = '.Otros',
'Falla hepatica, choque septico' = '.Choque septico + Otros',
'FMO, Cheque refractario aminas, CID' = '.Otros',
'FMO, CID, choque refractario aminas' = '.Otros',
'FMO; SDRA' = '.Otros',
'HPPRN' = '.Otros',
'Infeccion SNC, Sepsis nosocomial, ' = '.Sepsis nosocomial',
'Neumonia' = '.Neumonia',
'neumonia bacteriana, choque cardiogenico. ' = '.Neumonia + Otros',
'Neumonia bacteriana, choque septico' = '.Choque septico + Neumonia',
'Neumonia bacteriana, choque septico, DPE severo, PCI' = '.Choque septico + Neumonia',
'Neumonia bacteriana, choque septico,. ' = '.Choque septico + Neumonia',
'neumonia bacteriana, choque septico.' = '.Choque septico + Neumonia',
'Neumonia bacteriana, choque septico. ' = '.Choque septico + Neumonia',
'Neumonia bacteriana, diabetes, PCR' = '.Neumonia + Otros',
'neumonia bacteriana, falla ventilatoria' = '.Neumonia + Otros',
'Neumonia bacteriana, sepsis grave' = '.Choque septico + Neumonia',
'neumonia bacteriana, sepsis neonatal tardia' = '.Choque septico + Neumonia',
'neumonia complicada' = '.Neumonia',
'Neumonia neonatal' = '.Neumonia',
'Neumonia neonatal, choque septico' = '.Choque septico + Neumonia',
'Neumonia neonatal, sepsis nosocomial, HTPPRN' = '.Neumonia + Otros',
'Neumonia nosocomial' = '.Neumonia',
'Neumonia, escape via aerea, sepsis neonatal. ' = '.Neumonia + Otros',
'Neuroblastoma' = '.Otros',
'otro' = '.Otros',
'Post PCR #3, Neumonia bacteriana, FMO' = '.Neumonia + Otros',
'Post PCR 12, hemorragia Intraparenquimatosa, edema cerebral,herniacion subfalcina' = '.Otros',
'Prematurez, neumonia neonatal.' = '.Otros',
'SAM, APN, HTPRN' = '.Otros',
'SDRA, FMO, LLA' = '.Otros',
'SDRA, Neumonia bacteriana, PCR, Choque septico.' = '.Choque septico + Neumonia',
'SDRA, TCE G. III, Edema Cerebral, Hemorragia Intraparenquimatosa' = '.Otros',
'Sepsis grave, choque retractorio, CID' = '.Choque septico + Otros',
'sepsis nosocomial' = '.Sepsis nosocomial',
'Sepsis nosocomial ' = '.Sepsis nosocomial',
'Sepsis nosocomial, choque septico.' = '.Choque septico + Otros',
'Sepsis nosocomial, CID, FMO' = '.Sepsis nosocomial',
'Sepsis nosocomial, neumonia nosocomial. ' = '.Neumonia + Otros',
'Sepsis nosocomial, Quilotorax, choque septico' = '.Choque septico + Otros',
'sepsis nosocomial, SDRA' = '.Sepsis nosocomial',
'Sepsis nosocomial.' = '.Sepsis nosocomial',
'Sepsis nsocomial, fungemia' = '.Sepsis nosocomial',
'Septis nosocomial, choque septico' = '.Choque septico + Otros',
'Shock Refractario aminas, sepsis nosocomial, FMO' = '.Sepsis nosocomial',
'Sx. Nefrotico, IRA, edema agudo del pulmon' = '.Otros',
'TCE grado III, edema cerebral' = '.Otros',
'TCE grado III, edema cerebral, Post PCR, SDRA' = '.Otros',
'TCE III, TSV' = '.Otros'
))
causas2 <- causas
causas2 <- revalue(causas2,
c(
'.Sepsis nosocomial' = 'SepsisNosoc',
'.Choque septico' = 'ChoqueSep',
'.Choque septico + Otros' = 'ChoqueSep+Otro',
'Sepsis nosocomial' = 'SepsisNosoc',
'.Otros' = 'Otro',
'Choque septico' = 'ChoqueSep',
'.Neumonia' = 'Neumo',
'CHOQUE SEPTICO, SEPSIS NEONATAL' = 'ChoqueSep+Otro',
'.Neumonia + Otros' = 'Neumo',
'.Choque septico + Neumonia' = 'ChoqueSep+Neumo',
'neumonia bacteriana, choque septico' = 'ChoqueSep+Neumo',
'neumonia nosocomial' = 'Neumo'
))
ggplot(data.frame(causas2), aes(x=causas2)) + geom_bar(fill = "firebrick4") + xlab("Causa")+ ylab("Frecuencia") + ggtitle("Principales causas de fallecimiento")
La escala PIM3 se interpretara de la siguiente manera: 1-3 riesgo bajo, 4-6 riesgo medio y >= 7 riesgo alto.
Se estima que los pacientes con valor >= 7 en dicha escala van a fallecer por lo tanto el valor para la variable Fallece sera 1 (0 en caso contrario).
Una correlacion de Pearson alta (cercana a -1 o cercana a +1) indica una relacion entre dos variables. Por otra parte, un P-Value <= 0.05 significa que la variable independiente explica significativamente los cambios en la variable dependiente.
Se medira la correlacion de pearson y el P-Value contra la variable binaria (0,1) que indica el pronostico respecto a si el paciente va a fallecer, esto debido a que se necesita evaluar la capacidad predictiva de la escala.
Para cada variable de la escala se muestra el porcentaje de valores en blanco, el P-Value y la Correlacion de Pearson.
Las variables que logran explicar si el paciente fallecera son: glucosa, hco3 y pafi.
Y <- leer$Fallece
X <- leer$FC
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "FC"
FC <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$PAM
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "PAM"
PAM <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$pres.sis
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "pres.sis"
pres.sis <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$gluc
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "gluc"
gluc <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$Creat
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "Creat"
Creat <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$po2
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "po2"
po2 <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$hco3
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "hco3"
hco3 <- cbind("hco3", blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$eb
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "eb"
eb <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$pafi
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "pafi"
pafi <- cbind(nombre, blanco, correlacion, pvalue)
Y <- leer$Fallece
X <- leer$rec_cirugia
T <- as.data.frame(cbind(Y,X))
T <- T[complete.cases(T),]
blanco <- 1 - round(nrow(T) / 395,2)
correlacion <- round(cor.test(Y,X)$estimate,2)
pvalue <- round(cor.test(Y,X)$p.value,2)
nombre <- "rec.ciru"
rec_cirugia <- cbind(nombre, blanco, correlacion, pvalue)
rbind(FC, PAM, pres.sis, gluc, Creat, po2, hco3, eb, pafi, rec_cirugia)
## nombre blanco correlacion pvalue
## cor "FC" "0" "-0.02" "0.7"
## cor "PAM" "0.09" "-0.04" "0.46"
## cor "pres.sis" "0.35" "-0.04" "0.53"
## cor "gluc" "0.05" "0.1" "0.06"
## cor "Creat" "0.08" "0.06" "0.22"
## cor "po2" "0.03" "0.02" "0.66"
## cor "hco3" "0.02" "-0.13" "0.01"
## cor "eb" "0.02" "-0.07" "0.2"
## cor "pafi" "0.17" "-0.11" "0.04"
## cor "rec.ciru" "0" "0.07" "0.19"
La correlacion entre las escalas PIM3 y PRISM es 0.25 lo cual se considera baja.
No es posible hacer una prueba T para ver si son distribuciones estadÃsticamente significativas ya que al ser binarias no darian positivo en una prueba de normalidad.
A <- leer$PIM3.mortalidad
B <- leer$PRISM
T <- as.data.frame(cbind(A,B))
T <- T[complete.cases(T),]
round(cor(T$A, T$B),2)
## [1] 0.25
Accuracy: 0.57
Puede interpretarse como que la escala PIM3 logra predecir correctamente 57 de cada 100 casos.
R <- leer$Fallecio
P <- leer$Fallece
tabla <- table(R,P)
round(sum(diag(tabla)) / sum(tabla),2)
## [1] 0.57
AUC: 0.70 GINI: 0.4
El AUC (Area Under Curve) debe estar entre .70-.80 para que el modelo sea aceptable y entre .80 - .90 para que el modelo se considere bueno.
Un AUC de 0.70 (como lo es en este caso) significa que el modelo (dicho en otras palabras) es un 20% mejor para predecir que una moneda en donde las probabilidades son (0.50) y (1 - 0.50), es decir, 50% y 50%.
Por otra parte, un GINI aceptable deberia ser de al menos 0.40 (deseablemente de 0.50). El GINI no es mas que (2 x AUC) - 1.
Se puede concluir que la escala PIM3 no tiene una capacidad discriminante satisfactoria o aceptable, sobre todo considerando que corresponde al ambito medico.
round(as.numeric(roc(P,R)$auc),2)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## [1] 0.7
round((2 * as.numeric(roc(P,R)$auc)) - 1,2)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
## [1] 0.41
plot(roc(P,R))
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
Por ultimo, la escala tiene un TPR de 0.97 y un TNR de 0.35. Esto significa que la escala logro predecir correctamente cada 97 de 100 pacientes que iban a fallecer pero en contraste solamente logro predecir 35 de cada 100 pacientes que egresarian del hospital con vida.
Retomando que se considera que el paciente va a fallecer si el valor devuelto por la escala PIM3 es >= 7…
summary(leer$PIM3)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 7.00 14.00 20.79 27.50 85.00
Podemos ver que la media de la escala es de 20.79 y la mediana de 14.00 lo cual significa que el modelo/escala esta sobre estimando, es decir, tiende a arrojar valores bastante altos, razon por la cual pudo predecir casi todos los que iban a fallecer (TPR) pero fallo en predecir a los que no lo iban a hacer (TNR).
En conclusion:
TPR <- tabla[2,2] / (tabla[2,1] + tabla[2,2])
TNR <- tabla[1,1] / (tabla[1,1] + tabla[1,2])
round(TPR,2)
## [1] 0.97
round(TNR,2)
## [1] 0.35