library("plyr") #Previamente descargue install.packages("plyr)
source("cargar_datos.R") #Descargue y guarde en la carpeta principal de su respuesta
nombre1= "CARLOS ESTEBAN MORA GALAZ"
nombre2= "JAVIER ANDRES COLLAO CALLPA"
datos = cargar_datos(nombre1,nombre2)
knitr::kable(head(datos[,2:ncol(datos)])) #kable pertenece a la biblioteca knitr
| diagnostico | comorbilidad | sexo | prom_edad | ds_edad | egreso | DE | freq |
|---|---|---|---|---|---|---|---|
| 3rd Degree Sideburns | Alien DNA | Femenino | 2 | 4.36 | Alta | 118 | 31 |
| 3rd Degree Sideburns | Alien DNA | Femenino | 114 | 0.56 | Fallecido(a) | 193 | 9 |
| 3rd Degree Sideburns | Alien DNA | Masculino | 118 | 2.47 | Alta | 86 | 22 |
| 3rd Degree Sideburns | Alien DNA | Masculino | 88 | 2.02 | Fallecido(a) | 155 | 10 |
| 3rd Degree Sideburns | Alien DNA | Otro | 104 | 2.83 | Alta | 37 | 5 |
| 3rd Degree Sideburns | Alien DNA | Otro | 5 | 1.88 | Fallecido(a) | 158 | 2 |
El conjunto de datos proviene de 5,000 pacientes de egresados el año 2021 desde un hospital ficticio. Cada fila corresponde al número de pacientes atendidos para cada diagnóstico principal con su respectiva comorbilidad en inglés, dividido según sexo biológico, edad, (promedio y desviación estándar), condición de egreso y días de estada en el hospital. Para evitar la herida de susceptibilidades, el listado de diagnósticos principales y comorbilidades se extrajo del videojuego Theme hospital.
| Variable | Descripción | Medición | Precisión |
|---|---|---|---|
| diagnostico | Es la determinación del estado de salud de un paciente | Nominal | Politómica |
| comorbilidad | Es la señalización de uno o más transtornos | Nominal | Politómica |
| sexo | Se refiere al sexo biológico de los pacientes | Nominal | Politómica |
| prom_edad | Es el promedio de edad de los pacientes que han sido atendidos por el hospital | Intervalo | Discreta |
| ds_edad | Se refiere a la desviación estándar de la edad o qué tan dispersa es la edad de los distintos pacientes atendidos. | Intervalo | Continua |
| egreso | Nombra la forma de salida del hospital; si salió de alta o este falleció. | Nominal | Dicotómica |
| DE | Es el total de días que el paciente estuvo dentro del hospital | Intervalo | Discreta |
| freq | cantidad de pacientes dentro de las Patologias | Intervalo | Discreta |
fallecidos = 0
tpacientes = 0
dealta = 0
temp= which(datos$egreso=="Fallecido(a)")
fallecidos = sum(datos$freq[temp])
temp3= which(datos$egreso=="Alta")
dealta = sum(datos$freq[temp3])
tpacientes= sum(datos$freq)
prob_mortalidad = fallecidos/tpacientes
tasa_mortalidad = (fallecidos/dealta)*100
cat("La probabilidad que tiene un/una paciente de fallecer en nuestro establecimiento hospitalario es de", prob_mortalidad, " y la tasa de mortalidad hospitalaria ", tasa_mortalidad)
## La probabilidad que tiene un/una paciente de fallecer en nuestro establecimiento hospitalario es de 0.29295 y la tasa de mortalidad hospitalaria 41.43271
fallecidosPorSexo = function(sexo){
temp = which(datos$sexo == sexo & datos$egreso == "Fallecido(a)")
fallecidos = sum(datos$freq[temp])
return(fallecidos)
}
fallecidosMujer = fallecidosPorSexo("Femenino")
fallecidosHombre = fallecidosPorSexo("Masculino")
fallecidosOtro = fallecidosPorSexo("Otro")
diagnosticolist <- split(datos, datos$diagnostico)
listaParaMaximos = function (sexo){
i <- 1
mylist <- c()
while (i <= length(diagnosticolist)) {
temp = which(diagnosticolist[[i]]$egreso == "Fallecido(a)" & diagnosticolist[[i]]$sexo == sexo)
mylist <- c(mylist, sum(diagnosticolist[[i]]$freq[temp]))
i <- i+1
}
return(mylist)
}
maximoDiagnosticoConFallecidosMujer = max(listaParaMaximos("Femenino"))
maximoDiagnosticoConFallecidosHombre = max(listaParaMaximos("Masculino"))
maximoDiagnosticoConFallecidosOtro = max(listaParaMaximos("Otro"))
probabilidadMujer = maximoDiagnosticoConFallecidosMujer/fallecidosMujer
probabilidadHombre = maximoDiagnosticoConFallecidosHombre/fallecidosHombre
probabilidadOtro = maximoDiagnosticoConFallecidosOtro/fallecidosOtro
probabilidadMujer
## [1] 0.05251142
probabilidadHombre
## [1] 0.04835082
probabilidadOtro
## [1] 0.05328597
fallecidosPorSexo = function(sexo){
temp = which(datos$sexo == sexo & datos$egreso == "Fallecido(a)")
fallecidos = sum(datos$freq[temp])
return(fallecidos)
}
fallecidosMujer = fallecidosPorSexo("Femenino")
fallecidosHombre = fallecidosPorSexo("Masculino")
fallecidosOtro = fallecidosPorSexo("Otro")
diagnosticolist <- split(datos, datos$diagnostico)
listaParaMaximos = function (sexo){
i <- 1
mylist <- c()
while (i <= length(diagnosticolist)) {
temp = which(diagnosticolist[[i]]$egreso == "Fallecido(a)" & diagnosticolist[[i]]$sexo == sexo)
mylist <- c(mylist, sum(diagnosticolist[[i]]$freq[temp]))
i <- i+1
}
return(mylist)
}
maximoDiagnosticoConFallecidosMujer = max(listaParaMaximos("Femenino"))
maximoDiagnosticoConFallecidosHombre = max(listaParaMaximos("Masculino"))
maximoDiagnosticoConFallecidosOtro = max(listaParaMaximos("Otro"))
probabilidadMujer = maximoDiagnosticoConFallecidosMujer/fallecidosMujer
probabilidadHombre = maximoDiagnosticoConFallecidosHombre/fallecidosHombre
probabilidadOtro = maximoDiagnosticoConFallecidosOtro/fallecidosOtro
subDataDiagnosticoConFallecidos = function (sexo) {
tablaDiagnostico = matrix(c(unique(datos$diagnostico),listaParaMaximos(sexo)),nrow=length(unique(datos$diagnostico)),ncol=2)
colnames(tablaDiagnostico)=c("diagnostico","mortalidad")
datadiag = data.frame(tablaDiagnostico)
rr = which.max(datadiag$mortalidad)
return(datadiag [rr,])
}
maximoDiagnosticoEnMujer = subDataDiagnosticoConFallecidos("Femenino")
maximoDiagnosticoEnHombre = subDataDiagnosticoConFallecidos("Otro")
maximoDiagnosticoEnOtro = subDataDiagnosticoConFallecidos("Masculino")
maximoDiagnosticoEnMujer
## diagnostico mortalidad
## 6 Discrete Itching 138
maximoDiagnosticoEnHombre
## diagnostico mortalidad
## 16 King Complex 30
maximoDiagnosticoEnOtro
## diagnostico mortalidad
## 25 Unexpected Swelling 129
i <- 1
mylist <- c()
comorbilidadlist <- split(datos, datos$comorbilidad)
while (i <= length(comorbilidadlist)) {
temp44 = which(comorbilidadlist[[i]]$egreso == "Fallecido(a)" & comorbilidadlist[[i]]$sexo == "Femenino")
mylist <- c(mylist, sum(comorbilidadlist[[i]]$freq[temp44]))
i <- i+1
}
d = xtabs(freq~comorbilidad-egreso-sexo,datos)
mm = max(mylist)
listaParaComorbilidadMaximos = function (edad){
i <- 1
mylist <- c()
while (i <= length(comorbilidadlist)) {
temp44 = which(comorbilidadlist[[i]]$egreso == "Fallecido(a)" & comorbilidadlist[[i]]$prom_edad>=edad)
mylist <- c(mylist, sum(comorbilidadlist[[i]]$freq[temp44]))
i <- i+1
}
mylist
return(mylist)
}
mprob = function (edad){
prob = (max(listaParaComorbilidadMaximos(edad))/sum(listaParaComorbilidadMaximos(edad)))
return(prob)
}
cat("Probabilidad de morir para las personas mayores de 18 es : ", mprob(18))
## Probabilidad de morir para las personas mayores de 18 es : 0.1263823
diagnosticolist <- split(datos, datos$diagnostico)
listaMuertesEnDiagnostico = function (egreso){
i <- 1
mylist <- c()
while (i <= length(diagnosticolist)) {
temp = which(diagnosticolist[[i]]$egreso == egreso)
mylist <- c(mylist, sum(diagnosticolist[[i]]$freq[temp]))
i <- i+1
}
return(mylist)
}
listaMuertesEnDiagnostico("Fallecido(a)")
## [1] 221 230 253 227 228 277 229 265 207 203 227 248 232 214 230 231 208 236 230
## [20] 233 237 244 235 240 274
a = listaMuertesEnDiagnostico("Fallecido(a)")
b = listaMuertesEnDiagnostico("Alta")
suma = a+b
Mortalidadtotal= (100+max(a))/sum(suma)
cat("Usando como base el diagnóstico principal con mayor probabilidad de fallecimiento (letalidad) en nuestro hospital, la probabilidad de que si el próximo año se hospitalizan 100 personas con esa patología, N de ellas fallezcan es de:", Mortalidadtotal)
## Usando como base el diagnóstico principal con mayor probabilidad de fallecimiento (letalidad) en nuestro hospital, la probabilidad de que si el próximo año se hospitalizan 100 personas con esa patología, N de ellas fallezcan es de: 0.01885
dFallecimiento = function(datos){
diagnostico = ""
totalMuertos = 0
totalPersonas = 0
probabilidadAlta = -1
for(i in 1:nrow(datos)) {
if (diagnostico == ""){
diagnosticoFila = datos[i, 2]
diagnostico = diagnosticoFila
}
diagnosticoFila = datos[i, 2]
if (diagnosticoFila == diagnostico){
totalPersonas = totalPersonas + datos[i, 9]
if (datos[i,7] == "Fallecido(a)"){
totalMuertos = totalMuertos + datos[i, 9]
}
}
else{
probabilidad = totalMuertos/totalPersonas
i = i-1
if (probabilidad > probabilidadAlta){
probabilidadAlta = probabilidad
diagnosticoMortal = diagnostico
}
diagnostico = diagnosticoFila
totalPersonas = 0
totalMuertos = 0
}
}
cat("En nuestro hospital la patología con mayor letalidad es", diagnosticoMortal)
return(probabilidadAlta)
}
MayorLetalidad = dFallecimiento(datos)
## En nuestro hospital la patología con mayor letalidad es Discrete Itching
N = sample(seq(5,50),1)
probabilidadFallecidos = dbinom(x = N, size = 100, MayorLetalidad)
cat("Si el próximo año se hospitalizan 100 personas con esa patología, la probabilidad de que ", N, "personas fallezcan es de ", probabilidadFallecidos)
## Si el próximo año se hospitalizan 100 personas con esa patología, la probabilidad de que 37 personas fallezcan es de 0.06712088
2.5¿Qué puede concluir de los resultados con relación a las características y gestión de su establecimiento hospitalario?
Nuestra tasa de mortalidad corresponde al 16% , acorde a la investigación desarrollada por Ciper :Tasa de mortalidad del sector público supera a las clínicas privadas: https://www.elmostrador.cl/dia/2020/06/22/tasa-de-mortalidad-del-sector-publico-supera-a-las-clinicas-privadas-subsecretario-zuniga-descarta-que-se-deba-a-una-diferencia-en-la-atencion/
Nuestros indices de mortalidad estarian acordes a los de un hospital publica dentro del rango: l San José muestra una tasa de 21,3%; Del Salvador, con 20,1%; la ex Posta Central, con 17,7%; el San Juan de Dios, con 18%.
a=sum(datos[8])
b=nrow(datos)
prom=a/b
cat("El promedio de dias de estadia de nuestro hospital publico es de :", prom)
## El promedio de dias de estadia de nuestro hospital publico es de : 101.4849
comorbilidadlist <- split(datos, datos$comorbilidad)
listaParaComorbilidadMaximos = function (edad){
i <- 1
mylist <- c()
while (i <= length(comorbilidadlist)) {
temp = which(comorbilidadlist[[i]]$egreso == "Alta" & comorbilidadlist[[i]]$prom_edad<edad & comorbilidadlist[[i]]$DE>30)
mylist <- c(mylist, sum(comorbilidadlist[[i]]$freq[temp]))
i <- i+1
}
mylist
return(mylist)
}
a =listaParaComorbilidadMaximos(18)
b=max(a)
suma = sum(a)
probdesv= (b/suma)/pnorm(30,prom,0.2,lower.tail=FALSE)
cat("la probabilidad de que un paciente pediátrico (menor a 18 años) sea dado de alta de la patología más frecuente después de 30 días de estada es de :", probdesv)
## la probabilidad de que un paciente pediátrico (menor a 18 años) sea dado de alta de la patología más frecuente después de 30 días de estada es de : 0.1426527
nProm = sum(subset(subset(subset(datos, prom_edad==27), DE<10), egreso== "Alta")$DE * subset(subset(subset(datos, prom_edad==27), DE<10),
egreso== "Alta")$freq)
media = nProm/(sum(subset(datos, prom_edad==27)$freq))
cat("la probabilidad de que si somos hospitalizados en nuestro establecimiento hospitalario y seamos dados de alta antes de 10 días es de:",dnorm(10, media, 0.2))
## la probabilidad de que si somos hospitalizados en nuestro establecimiento hospitalario y seamos dados de alta antes de 10 días es de: 0
Fuente: El Mercurio
En general, el estudio concluye que un enfermo pasa, en promedio, 6,8 días internado en un hospital y en una clínica esa espera es de 4,1 días.
Según Saldías, esto se explica porque el sector público de salud es menos eficiente que el privado.
En base al promedio dado por nuestro recinto hospitalario que fue alrededor de 99 dias, la probabilidad de ser dado de alta antes de los 10 dias es 0%.
patologiaConMasFrecuencia = function(data){
diagnostico = ""
totalPacientes = sum(data$freq)
totalPersonas = 0
probabilidadAlta = -1
for(i in 1:nrow(data)) {
if (diagnostico == ""){
diagnosticoFila = data[i, 2]
diagnostico = diagnosticoFila
}
diagnosticoFila = data[i, 2]
if (diagnosticoFila == diagnostico){
totalPersonas = totalPersonas + data[i, 9]
}
else{
probabilidad = totalPersonas/totalPacientes
i = i-1
if (probabilidad > probabilidadAlta){
probabilidadAlta = probabilidad
diagnostico_frecuente = diagnostico
}
diagnostico = diagnosticoFila
totalPersonas = 0
}
}
return(probabilidadAlta)
}
probabilidadDiagnosticoFrecuente = patologiaConMasFrecuencia(datos)
probabilidadBinomial = dbinom(x = 4, size = 4, probabilidadDiagnosticoFrecuente)
cat("La probabilidad de que los pacientes hayan tenido la patología con mayor probabilidad de aparición es de ", probabilidadBinomial)
## La probabilidad de que los pacientes hayan tenido la patología con mayor probabilidad de aparición es de 2.825761e-06
N = sample(seq(5,50),1)
probabilidadAtencion = dpois(N,30) #donde 30 es la cantidad de pacientes
cat("La probabilidad de que en la siguiente hora se atienda como mínimo a ", N, " pacientes es de ", probabilidadAtencion)
## La probabilidad de que en la siguiente hora se atienda como mínimo a 38 pacientes es de 0.02416867