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 | 30 | 4.95 | Alta | 80 | 33 |
| 3rd Degree Sideburns | Alien DNA | Femenino | 7 | 4.53 | Fallecido(a) | 85 | 7 |
| 3rd Degree Sideburns | Alien DNA | Masculino | 12 | 2.91 | Alta | 98 | 37 |
| 3rd Degree Sideburns | Alien DNA | Masculino | 32 | 0.87 | Fallecido(a) | 122 | 1 |
| 3rd Degree Sideburns | Alien DNA | Otro | 20 | 1.97 | Alta | 24 | 6 |
| 3rd Degree Sideburns | Alien DNA | Otro | 8 | 2.82 | Fallecido(a) | 59 | 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.
2.1 Descripcion de cada variable del conjunto de datos segun medicion y presicion. Desarrollo:
Diagnostico : Es la determinación del estado de salud de un paciente, Medicion: cualitativa nominal/ Politomica
Comorbilidad : Es la señalización de uno o más transtornos Medicion: cualitativa nominal/ Politomica
Sexo: Se refiere al sexo biológico de los pacientes. Medicion: cualitativa nominal/ Politomica
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ó. Cualitativa /Dicotomica
DE Es el total de días que el paciente estuvo dentro del hospital.Discreta
Freq:cantidad de pacientes dentro de las Patologias. Discreta
La mortalidad hospitalaria es de :
fallecidos = 0
tpacientes = 0
temp = which(datos$egreso=="Fallecido(a)")
fallecidos = sum(datos$freq[temp])
tpacientes= sum(datos$freq)
tasa_mortalidad = fallecidos/tpacientes
tasa_mortalidad
## [1] 0.16565
2.2. Considerando la letalidad de los/las pacientes atendidos/atendidas en su establecimiento hospitalario:
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.05245461
probabilidadHombre
## [1] 0.05555556
probabilidadOtro
## [1] 0.06793478
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
## 7 Fake Blood 78
maximoDiagnosticoEnHombre
## diagnostico mortalidad
## 2 Broken Heart 25
maximoDiagnosticoEnOtro
## diagnostico mortalidad
## 7 Fake Blood 81
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)))
print("Probabilidad de morir para las personas mayores de 18 es : " )
return(prob)
}
mprob(18)
## [1] "Probabilidad de morir para las personas mayores de 18 es : "
## [1] 0.1353088
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] 126 135 123 134 134 129 177 144 120 120 139 117 134 128 137 138 114 128 144
## [20] 154 117 133 132 122 134
a = listaMuertesEnDiagnostico("Fallecido(a)")
b = listaMuertesEnDiagnostico("Alta")
suma = a+b
Mortalidadtotal= (100+max(a))/sum(suma)
print("Usando como base el diagnóstico principal con mayor probabilidad de fallecimiento (letalidad) en su hospital: ¿cuál es la probabilidad de que si el próximo año se hospitalizan 100 personas con esa patología, N de ellas fallezcan?")
## [1] "Usando como base el diagnóstico principal con mayor probabilidad de fallecimiento (letalidad) en su hospital: ¿cuál es la probabilidad de que si el próximo año se hospitalizan 100 personas con esa patología, N de ellas fallezcan?"
Mortalidadtotal
## [1] 0.01385
Nuestra tasa de mortalidad corresponde al 16% , acorde a la investigacion 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%.
2.3. Considerando la estancia de los/las pacientes atendidos/atendidas en su establecimiento hospitalario:
a=sum(datos[8])
b=nrow(datos)
prom=a/b
print("El promedio de dias de estadia de nuestro hospital publico es de :")
## [1] "El promedio de dias de estadia de nuestro hospital publico es de :"
prom
## [1] 99.34303
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)
probdesv
## [1] 0.1699098
3)¿Cuál es la probabilidad de que si usted es o ustedes son hospitalizados en su establecimiento hospitalario sean dados de alta antes de los 10 días? Al igual que el ejercicio anterior, asuma una distribución normal y una desviación estándar típica de 0.2 para los DE.
## La probabilidad es: 0
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%.