1-Preparación

   

Instalación de paquete:

(library(plyr))
## [1] "plyr"      "stats"     "graphics"  "grDevices" "utils"     "datasets" 
## [7] "methods"   "base"

 

Carga de datos:

source("cargar_datos.R")
nombre1 = "JAVIER ALEJANDRO BAHAMONDES CORDOVA"
nombre2 = "JAVIER ALEJANDRO BAHAMONDES CORDOVA"

datos = cargar_datos(nombre1,nombre2)

 

Revisión de datos:

knitr::kable(head(datos[,2:ncol(datos)]))
diagnostico comorbilidad sexo prom_edad ds_edad egreso DE freq
3rd Degree Sideburns Alien DNA Femenino 116 4.14 Alta 51 45
3rd Degree Sideburns Alien DNA Femenino 4 1.61 Fallecido(a) 70 1
3rd Degree Sideburns Alien DNA Masculino 96 2.27 Alta 49 38
3rd Degree Sideburns Alien DNA Masculino 36 4.99 Fallecido(a) 174 3
3rd Degree Sideburns Alien DNA Otro 26 1.42 Alta 130 11
3rd Degree Sideburns Baldness Femenino 68 1.67 Alta 155 40

   

2-Desarrollo de Actividad

 

2.1. Describa cada una de las variables del conjunto de datos indicando su clasificación según tipo: medición y precisión.

  • diagnóstico: Enfermedad, sindrome o estado de salud que afecta al paciente. Su clasificación con medición es cualitativa nominal y con precisión es cualitativa politómica.

  • comorbilidad: La presencia de uno o más trastornos (o enfermedades) además de la enfermedad o trastorno primario. Su clasificación con medición es cualitativa nominal y con precisión es cualitativa politómica.

  • sexo: Corresponde al sexo con el que se identifica el paciente, el cual puede ser “Masculino”, “Femenino” u “Otro”. Su clasificación con medición es cualitativa nominal y con precisión es cualitativa dicotómica.

  • prom_edad: Representa la media de los datos de las edades de los pacientes según diagnóstico. Su clasificación con medición es cuantitativa ratio y con precisión cuantitativa discreta.

  • ds_edad: Corresponde a la desviación estándar de la edad de los pacientes por diagnóstico. Su clasificación con medición es cuantitativa intervalo y con precisión cuantitativa continua.

  • egreso: Corresponde a la salida del Hospital de un paciente internado. Puede tomar los valores de “Alta” o “Fallecido(a)”. Su clasificación con medición corresponde a cualitativa nominal y con precisión cualitativa dicotómica.

  • DE: Corresponde al total de días que el paciente permaneció internado en el Hospital, desde la fecha de ingreso hasta la fecha de egreso. Su clasificación con medición es cuantitativa ratio y con precisión es cuantitativa discreta.

  • freq: Representa la cantidad de pacientes atendidos que tienen dicho diagnóstico y cumplen con las condiciones de comorbilidades, sexo y egreso. Su clasificación con medición es cuantitativa ratio y con precisión es cuantitativa discreta.

 

2.2. Considerando la letalidad de los/las pacientes atendidos/atendidas en su establecimiento hospitalario:

1-¿Cuál es la probabilidad que tiene un/una paciente de fallecer en su establecimiento hospitalario? Indique la tasa de mortalidad hospitalaria de su establecimiento.

# Total de fallecidos
fallecido = datos[datos$egreso == "Fallecido(a)",]
total_fallecidos = sum(fallecido$freq)

# Total de pacientes
total_pacientes = sum(datos$freq)

# Total de pacientes dados de alta
alta = datos[datos$egreso == "Alta",]
total_alta = sum(alta$freq)

probabilidad = total_fallecidos/total_pacientes
mortalidad = (total_fallecidos * 100)/total_alta

cat("La probabilidad que tiene un/una paciente de fallecer en nuestro establecimiento hospitalario es de", probabilidad, ", mientras que la tasa de mortalidad hospitalaria de nuestro establicimiento es de", mortalidad)
## La probabilidad que tiene un/una paciente de fallecer en nuestro establecimiento hospitalario es de 0.05955 , mientras que la tasa de mortalidad hospitalaria de nuestro establicimiento es de 6.332075

   

2-¿Cuál es el diagnóstico principal que tienen mayor probabilidad de fallecimiento (letalidad) en su hospital según cada sexo biológico?

hombres = datos[datos$sexo == 'Masculino',]
mujeres = datos[datos$sexo == 'Femenino',]
otros = datos[datos$sexo == 'Otro',]

diagnostico_letalidad = function(tabla){

  diagnostico = ""
  total_muertos = 0
  total_personas = 0
  probabilidad_alta = -1
  
  for(i in 1:nrow(tabla)) {
    if (diagnostico == ""){
      diagnostico_fila = tabla[i, 2]
      diagnostico = diagnostico_fila
    }
    diagnostico_fila = tabla[i, 2]
    
    if (diagnostico_fila == diagnostico){
      total_personas = total_personas + tabla[i, 9]
      
      #total fallecidos
      if (tabla[i,7] == "Fallecido(a)"){
        total_muertos = total_muertos + tabla[i, 9]
      }
    }
    else{
      probabilidad = total_muertos/total_personas
      i = i-1
      if (probabilidad > probabilidad_alta){
        probabilidad_alta = probabilidad
        diagnostico_mortal = diagnostico
      }
      diagnostico = diagnostico_fila
      total_personas = 0
      total_muertos = 0
    }
  }
  
  return(c(diagnostico_mortal,probabilidad_alta))
}

#llamada a la funcion para cada sexo
diagnostico_hombres = diagnostico_letalidad(hombres)
diagnostico_mujeres = diagnostico_letalidad(mujeres)
diagnostico_otros = diagnostico_letalidad(otros)

 

Resulatdos:

cat("Para los hombres, el diagnostico principal que tiene mayor probabilidad de fallecimiento en el hospital es ", diagnostico_hombres[1], ", con una probabilidad de fallecimiento de ", diagnostico_hombres[2])
## Para los hombres, el diagnostico principal que tiene mayor probabilidad de fallecimiento en el hospital es  Spare Ribs , con una probabilidad de fallecimiento de  0.0849056603773585
cat("Para las mujeres, el diagnostico principal que tiene mayor probabilidad de fallecimiento en el hospital es ", diagnostico_mujeres[1], ", con una probabilidad de fallecimiento de ", diagnostico_mujeres[2])
## Para las mujeres, el diagnostico principal que tiene mayor probabilidad de fallecimiento en el hospital es  Broken Heart , con una probabilidad de fallecimiento de  0.0965732087227414
cat("Para otros, el diagnostico principal que tiene mayor probabilidad de fallecimiento en el hospital es ", diagnostico_otros[1], ", con una probabilidad de fallecimiento de ", diagnostico_otros[2])
## Para otros, el diagnostico principal que tiene mayor probabilidad de fallecimiento en el hospital es  Ruptured Nodules , con una probabilidad de fallecimiento de  0.109375

   

3-¿Cuál es la comorbilidad que presenta mayor probabilidad de aparición en personas adultas fallecidas en su establecimiento hospitalario?

adultos = datos[datos$prom_edad >= 18,]
adultos = adultos[order(adultos$comorbilidad, decreasing = FALSE), ]
adultos_fallecidos = adultos[adultos$egreso == "Fallecido(a)",]

comorbilidad_letal = function(tabla){

  comorbilidad = ""
  total_muertos = sum(tabla$freq)
  total_personas = 0
  probabilidad_alta = -1

  for(i in 1:nrow(tabla)) {
    if (comorbilidad == ""){
      comorbilidad_fila = tabla[i, 3]
      comorbilidad = comorbilidad_fila
    }
    comorbilidad_fila = tabla[i, 3]
    if (comorbilidad_fila == comorbilidad){
      total_personas = total_personas + tabla[i, 9]
    }

    else{
      probabilidad = total_personas/total_muertos
      i = i-1
      if (probabilidad > probabilidad_alta){
        probabilidad_alta = probabilidad
        comorbilidad_mortal = comorbilidad
      }
      comorbilidad = comorbilidad_fila
      total_personas = 0
    }
  }
  cat("La comorbilidad que presenta mayor probabilidad de aparición en personas adultas fallecidas en el hospital es", comorbilidad_mortal, "con una probabilidad de aparición de", probabilidad_alta)
}
comorbilidad_letal(adultos_fallecidos)
## La comorbilidad que presenta mayor probabilidad de aparición en personas adultas fallecidas en el hospital es Fractured Bones con una probabilidad de aparición de 0.1236611

   

4-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?

diagnostico_fallecimiento = function(tabla){

  diagnostico = ""
  total_muertos = 0
  total_personas = 0
  probabilidad_alta = -1
  
  for(i in 1:nrow(tabla)) {
    if (diagnostico == ""){
      diagnostico_fila = tabla[i, 2]
      diagnostico = diagnostico_fila
    }
    diagnostico_fila = tabla[i, 2]
    if (diagnostico_fila == diagnostico){
      total_personas = total_personas + tabla[i, 9]
      if (tabla[i,7] == "Fallecido(a)"){
        total_muertos = total_muertos + tabla[i, 9]
      }
    }
    else{
      probabilidad = total_muertos/total_personas
      i = i-1
      if (probabilidad > probabilidad_alta){
        probabilidad_alta = probabilidad
        diagnostico_mortal = diagnostico
      }
      diagnostico = diagnostico_fila
      total_personas = 0
      total_muertos = 0
    }
  }
  cat("La patología con mayor letalidad en nuestro hospital es", diagnostico_mortal)
  return(probabilidad_alta)
}
mayor_letalidad = diagnostico_fallecimiento(datos)
## La patología con mayor letalidad en nuestro hospital es Heaped Piles
N = sample(seq(5,50),1)
probabilidad_fallecidos = dbinom(x = N, size = 100, mayor_letalidad)
cat("La probabilidad de que ", N, "personas fallezcan si el próximo año se hospitalizan 100 personas con esa patología, es de ", probabilidad_fallecidos)
## La probabilidad de que  30 personas fallezcan si el próximo año se hospitalizan 100 personas con esa patología, es de  3.652325e-11

   

5-¿Qué puede concluir de los resultados con relación a las características y gestión de su establecimiento hospitalario?

La probalidad de que un paciente pueda fallecer en nuestro hostpital es muy baja, en torno al 0.059, ademas se puede notar que la mayor probalidad de fallecimiento esta liderada por personas que no se identifican como hombre o mujer, se identifican como “otro” sexo, con un diagnostico de “Ruptured Nodales” (Nódulos rotos) y una probalidad de 0.109375. La conmorbilidad que presenta mayor probabilidad de aparicion en adultos fallecidos es “Fractured Bones” (huesos frecturados) con una probabilidad de aparicionm de 0.1236611. En resumen las probalidades son favorables para nuestro hospital, siendo uno de los mejores del país.

   

2.3. Considerando la estancia de los/las pacientes atendidos/atendidas en su establecimiento hospitalario:

1-¿Cuál es el promedio de día de estadias (DE) de su establecimiento hospitalario?

dias_estadia = 0
for(i in 1:nrow(datos)){
  dias_estadia = dias_estadia + datos[i,8]*datos[i,9]
}
promedio_DE = dias_estadia/total_pacientes
cat("El promedio de días de estadias (DE) de nuestro establecimiento hospitalario es de ", promedio_DE, "días.")
## El promedio de días de estadias (DE) de nuestro establecimiento hospitalario es de  96.75135 días.

 

2-¿Cuál es 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 estadia? Asuma en ambos casos una distribución normal y una desviación estándar típica de 0.2 para los DE.

numero_promedio= sum(subset(subset((subset((subset(datos, prom_edad<18)), 
                                           DE>=30)), diagnostico=="Infectious Laughter"), 
                                          egreso== "Alta")$DE * subset(subset((subset((subset(datos, prom_edad<18)), DE>=30)), 
                                          diagnostico=="Infectious Laughter"), egreso== "Alta")$freq)

media=numero_promedio/sum((subset(datos, prom_edad<18))$freq)

cat("La probalidad de que un paciente pediátrico sea dado de alta despues de 30 días es de" , dnorm(30, media, 0.2))
## La probalidad de que un paciente pediátrico sea dado de alta despues de 30 días es de 0

Representación gráfica para entender el resultado anterior:

x = seq(0,30,by=0.1)
y = dnorm(seq(0,30,by=0.1), media ,0.2)
z = y
z[which(x>60)] = 0
datos_grafico = data.frame(x,y,z)

#Gráfico
library("ggplot2")
p = ggplot(data.frame(x = x, y = y)) + aes(x = x, y = y)
p = p+geom_line(color="darkred") + labs(x = "Días", y = "Densidad")
p = p + theme_classic()
p = p + geom_area(data = datos_grafico, aes(x=x,y=z), fill="lightblue", alpha=0.4)
p = p + scale_x_continuous(breaks = c(0,15,30))
plot(p) 

 

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.

numero_promedio2 = sum(subset(subset(subset(datos, prom_edad==33), DE<10), 
                          egreso== "Alta")$DE * subset(subset(subset(datos, prom_edad==33), DE<10), 
                                                       egreso== "Alta")$freq)

media2 = numero_promedio2/(sum(subset(datos, prom_edad==33)$freq))

#dnorm(10, media2, 0.2)

cat("La probalidad de que un paciente pediátrico sea dado de alta despues de 30 días es de" , dnorm(10, media2, 0.2))
## La probalidad de que un paciente pediátrico sea dado de alta despues de 30 días es de 0

Representación gráfica para entender el resultado anterior:

x = seq(0,10,by=0.1)
y = dnorm(seq(0,10,by=0.1), media2 ,0.2)
z = y
z[which(x>60)] = 0
datos_grafico2 = data.frame(x,y,z)
#Gráfico
library("ggplot2")
p = ggplot(data.frame(x = x, y = y)) + aes(x = x, y = y)
p = p+geom_line(color="darkred") + labs(x = "Días", y = "Densidad")
p = p + theme_classic()
p = p + geom_area(data = datos_grafico2, aes(x=x,y=z), fill="lightblue", alpha=0.4)
p = p + scale_x_continuous(breaks = c(0,5,10))
plot(p)

 

4-¿Qué puede concluir de los resultados con relación a las características y gestión de su establecimiento hospitalario? (Ayuda)

El promedio de estancia en nuestro hospital bordea los 96.7 días. Mucho mas alto que el promedio de clínicas privadas. Nuestro hospital triplica el promedio de las clínicas. Segun los estudios realizados por la agrupación de clinicas de chile, la situación se da por distintos factores, siendo algunos como por ejemplo, la cantidad de especialistas disponibles en los hospitales vs la cantidad con la que cuentan las clínicas privadas, otro de los factores, tambien es la posición geográfica y la cantidad de población que atiende cada institución.

   

2.4. Considerando elementos propios de la atención hospitalaria.

1-Si usted ve/ustedes ven salir de su hospital a cuatro pacientes dados de alta del hospital caminando uno tras otro: ¿cuál es la probabilidad de que todos/todas ellos/ellas hayan tenido la patología con mayor probabilidad de aparición atendida en su establecimiento?

patologia_mas_frecuente = function(tabla){

  #Inicio variables
  diagnostico = ""
  total_pacientes = sum(tabla$freq)
  total_personas = 0
  probabilidad_alta = -1

  for(i in 1:nrow(tabla)) {
    if (diagnostico == ""){
      diagnostico_fila = tabla[i, 2]
      diagnostico = diagnostico_fila
    }
    diagnostico_fila = tabla[i, 2]
    
    if (diagnostico_fila == diagnostico){
      total_personas = total_personas + tabla[i, 9]
    }

    else{
      probabilidad = total_personas/total_pacientes
      i = i-1
      if (probabilidad > probabilidad_alta){
        probabilidad_alta = probabilidad
        diagnostico_frecuente = diagnostico
      }
      diagnostico = diagnostico_fila
      total_personas = 0
    }
  }
  return(probabilidad_alta)
}

probabilidad_diagnostico_frecuente = patologia_mas_frecuente(datos)
probabilidad_binomial = dbinom(x = 4, size = 4, probabilidad_diagnostico_frecuente)

cat("La probabilidad de que los cuatro pacientes hayan tenido la patología con mayor probabilidad de aparición es de ", probabilidad_binomial)
## La probabilidad de que los cuatro pacientes hayan tenido la patología con mayor probabilidad de aparición es de  2.881303e-06

   

2-Usted ha/ustedes han decidido ir al área ambulatoria de consultas médicas. Si entre todos/todas los/las especialistas médicos se está atendiendo un promedio a treinta pacientes por hora ¿cuál es la probabilidad que en la siguiente hora se atienda como mínimo a N pacientes?

N = sample(seq(5,50),1)
probabilidad_atencion = 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 ", probabilidad_atencion)
## La probabilidad de que en la siguiente hora se atienda como mínimo a  34  pacientes es de  0.05285957

Representación gráfica para entender el resultado anterior:

personas=seq(10:60)
lambda=30
distribucion = dpois(personas,lambda)
datos=data.frame(personas,distribucion)
library("ggplot2")
grafico = ggplot(data=datos,aes(x=personas,y=distribucion))
grafico = grafico + geom_bar(stat="identity",fill="red")
grafico = grafico + theme_bw() + ggtitle("Probabilidad que en la siguiente hora se atienda como mínimo a N pacientes")
grafico = grafico + xlab("Pacientes(N)") + ylab("Probabilidad")
plot(grafico)