##IMPORTAR DATOS##
library(readxl)
datosinforme <- read_excel("C:/Users/57310/Downloads/datosinforme.xlsx")
View(datosinforme)
#Nombre de las variables Y: Riesgo de infección X1: Duración de la estadía X2: Rutina de cultivos X3: Número de camas X4: Censo promedio diario X5: Número de enfermeras
##PLANTEANDO MODELO##
modelo=lm(Y ~ X1 + X2 + X3 + X4 + X5, data = datosinforme)
summary(modelo)
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3 + X4 + X5, data = datosinforme)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.03944 -0.80043 -0.00266 0.60450 2.23292
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.5986009 1.5159559 -0.395 0.694365
## X1 0.2106683 0.0785765 2.681 0.009501 **
## X2 0.0197512 0.0277108 0.713 0.478803
## X3 0.0470925 0.0132888 3.544 0.000779 ***
## X4 0.0105604 0.0073166 1.443 0.154213
## X5 0.0008996 0.0007379 1.219 0.227679
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.035 on 59 degrees of freedom
## Multiple R-squared: 0.4468, Adjusted R-squared: 0.3999
## F-statistic: 9.53 on 5 and 59 DF, p-value: 1.058e-06
Evaluaremos la significancia de la regresión con el medidor de R cuadrado ajustado, esto debido a que penaliza al modelo en cuanto mas variables tenga (el R cuadrado aumenta entre más variables son añadidas al modelo), por lo que podemos decir que las variables independientes explican el 39.99% de nuestra Y, es decir de la variabilidad del riesgo de infección. También podemos evaluar la signifancia de la regresión por medio del estadístico F, donde las hipotesis son H0: X1 = X2 = X3 = X4 = X5 = 0 H1: X1 ≠ X2 ≠ X3 = X4 = X5 ≠ 0 Nos da un valor p de 1.058e-06 = 0.00262, lo cual es menor a 0.05 por lo que podemos decir que rechazamos H0 y podemos concluir que las variables independientes son diferentes de 0
Interpretación de los parametros: B0 no es interpretable ya que no es posible interpretar un riesgo de infección menor a 0 y mucho menos una probabilidad negativa B1 es duración de la estadía cuyo coeficiente es 0.2106 , lo cual significa que por cada día que se encuentre en el hospital, aumenta en un 0.2106 el riesgo de infección B2 representa rutina de cultivos, cada aumento de estos significa un aumento del 0.0197 en el riesgo de infección B3 es 0.0470925, esto nos indica que, si aumenta en una unidad el número de camas promedio en el hospital, la probabilidad promedio de adquirir infección en el hospital aumenta en 0.0470925. B4 es el número de pacientes promedio en el hospital, la probabilidad promedio de adquirir infección en el hospital aumenta en promedio en 0.0105604 con cada paciente que entra . B5 es 0.0008996, esto nos indica que con cada amento de una unidad el número de enfermedades promedio en el hospital, la probabilidad promedio de adquirir infección en el hospital aumenta en promedio en 0.0008996. Bajo el supuesto de que las demás variables permanezcan constantes.
Ahora, respecto a su significancia individual: B0 no es significativo al 95% B1 es significativo al 95% B2 no es significativo al 95% El parámetro B3 que representa el número de camas, es significativo al 95% para el conjunto del modelo de regresión lineal, dado que su p valor es de 0.000779 lo que es menor a 0.05 Bajo el mismo porcentaje de significancia de los parámetros anteriores, el parámetro B4 que representa el número de pacientes promedios en el hospital, no es significativo para el conjunto del modelo de regresión lineal, dado que su p valor es de 0.154213 lo que es mayor a 0.05 Con un porcentaje de significancia de 95% ,el parámetro B5 que representa el número de enfermedades en el hospital, no es significativo dado que su p valor es de 0.227679 lo que es mayor a 0.05
##2. Use la tabla de todas las regresiones posibles, para probar la significancia simultánea del subconjunto de tres variables con los valores p mayores del punto anterior. Según el resultado de la prueba es posible descartar del modelo las variables del subconjunto?##
combinacionderegre <- function(lm.model, response = model.response(model.frame(lm.model)), MSE = F){
regTable <- summary(regsubsets(model.matrix(lm.model)[, -1], response,
nbest = 2^(lm.model$rank - 1) - 1, really.big = T))
pvCount <- as.vector(apply(regTable$which[, -1], 1, sum))
pvIDs <- apply(regTable$which[, -1], 1, function(x) as.character(paste(colnames(model.matrix(lm.model)[, -1])[x],
collapse = " ")))
result <- if(MSE){
data.frame(k = pvCount, R_sq = round(regTable$rsq, 3), adj_R_sq = round(regTable$adjr2, 3),
MSE = round(regTable$rss/(nrow(model.matrix(lm.model)[,-1]) - (pvCount + 1)), 3),
Cp = round(regTable$cp, 3), Variables_in_model = pvIDs)
} else {
data.frame(k = pvCount, R_sq = round(regTable$rsq, 3), adj_R_sq = round(regTable$adjr2, 3),
SSE = round(regTable$rss, 3),
Cp = round(regTable$cp, 3), Variables_in_model = pvIDs)
}
format(result, digits = 6)
}
library(leaps)
## Warning: package 'leaps' was built under R version 4.0.5
combinacionderegre(modelo)
## k R_sq adj_R_sq SSE Cp Variables_in_model
## 1 1 0.249 0.237 85.813 19.106 X3
## 2 1 0.244 0.232 86.376 19.632 X1
## 3 1 0.182 0.169 93.468 26.252 X4
## 4 1 0.068 0.053 106.508 38.425 X5
## 5 1 0.001 -0.014 114.090 45.503 X2
## 6 2 0.411 0.392 67.257 3.784 X1 X3
## 7 2 0.319 0.297 77.804 13.629 X3 X4
## 8 2 0.311 0.289 78.739 14.503 X1 X4
## 9 2 0.293 0.270 80.764 16.392 X3 X5
## 10 2 0.276 0.253 82.667 18.169 X2 X3
## 11 2 0.258 0.235 84.721 20.087 X1 X5
## 12 2 0.248 0.224 85.877 21.166 X1 X2
## 13 2 0.234 0.209 87.519 22.698 X4 X5
## 14 2 0.182 0.156 93.416 28.203 X2 X4
## 15 2 0.071 0.041 106.102 40.046 X2 X5
## 16 3 0.430 0.402 65.108 3.778 X1 X3 X4
## 17 3 0.422 0.393 66.088 4.693 X1 X3 X5
## 18 3 0.415 0.386 66.850 5.404 X1 X2 X3
## 19 3 0.359 0.327 73.279 11.405 X3 X4 X5
## 20 3 0.336 0.303 75.868 13.822 X2 X3 X4
## 21 3 0.328 0.295 76.791 14.684 X1 X4 X5
## 22 3 0.325 0.292 77.090 14.963 X2 X3 X5
## 23 3 0.314 0.280 78.400 16.186 X1 X2 X4
## 24 3 0.261 0.224 84.459 21.842 X1 X2 X5
## 25 3 0.236 0.198 87.321 24.514 X2 X4 X5
## 26 4 0.442 0.405 63.748 4.508 X1 X3 X4 X5
## 27 4 0.433 0.395 64.795 5.486 X1 X2 X3 X4
## 28 4 0.427 0.389 65.435 6.083 X1 X2 X3 X5
## 29 4 0.379 0.338 70.904 11.188 X2 X3 X4 X5
## 30 4 0.329 0.284 76.656 16.558 X1 X2 X4 X5
## 31 5 0.447 0.400 63.203 6.000 X1 X2 X3 X4 X5
##3. Plantee una pregunta donde su solución implique el uso exclusivo de una prueba de hipótesis linealgeneral de la forma H0 : Lβ = 0 (solo se puede usar este procedimiento y no SSextra), donde especifique claramente la matriz L, el modelo reducido y la expresión para el estadístico de prueba## Supongamos que B3 y B5 son iguales debido a que cada cama requiere una enfermera , siendo los coeficientes iguales H0: B3=B5 Ha: B3≠B5
##4. Realice una validación de los supuestos en los errores y examine si hay valores atípicos, de balanceo e influenciales. Qué puede decir acerca de la validez de éste modelo?. Argumente##
hist(modelo$residuals,col="gray")
qqnorm(modelo$residuals)
qqline(modelo$residuals,col="red")
shapiro.test(modelo$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo$residuals
## W = 0.98462, p-value = 0.5979
par(mfrow=c(1,1))
plot(modelo)
La normalidad de los errores del modelo la analizamos por medio de la gráfica de probabilidad normal de los residuales, mientras que la prueba de normalidad la probamos con la Shapiro-Wilk.La gráfica contiene una pequeña dispersión en los extremos pero una fuerte concentración de datos cerca a la línea de normalidad, con lo cual podemos decir que se distribuyen de manera normal, de igual manera la prueba Shapiro-Wilk nos indica que podemos aceptar la normalidad de los errores con una significancia del 95%, esto es gracias a que el p-value =0.5979 ,con esto no rechazamos la hipotesis nula de que los errores distribuyen normal. Para chequear el supuesto de varianza constante, utilizamos el gráfico de residuals vs adjusted values de la respuesta. El cual nos arrojó una línea de tendencia semi recta, lo que nos indica una leve aceptación del supuesto de varianza constante.
##5. Verificar la presencia de multicolinealidad usando graficos y/o indicadores apropiados##
library(ggplot2)
ggplot(datosinforme , lower = list(continuous = "smooth"),
diag = list(continuous = "barDiag"), axisLabels = "none")
Mirando la grafica y los coeficientes de correlación, podemos decir que no hay presencia de multicolinealidad, ninguno de los coeficientes en mayor a 0.5 por lo que no hay presencia de correlacion leve y menos alguno myor a 0.7 u 0.8 que seria presencia de una fuerte, las variables que más presentan correlación son: X1 (Duración de la estadía) con Y (Riesgo de infección) que es comprensible ya que por logica entre más tiempo se pase en un lugar donde residen personas con algun tipo de infeccion es lógico contagiarse, que la correlación se puede ver reducida con la proteción de ciertos elementos como guantes, tapabocas, etc. X3 (Número de camas) con Y (Riesgo de infección) que podría ser explicada debido a que entre mayor número de camas, mayor número de personas con diversas enfermedades, que tienen más probabilidad de contagiar X4 (Censo promedio diario) con Y (Riesgo de infección) que puede ser explicada debido a que entre mayor cantidad de personas diarias en un hospital mayor es la probabilidad de infección X4 (Censo promedio diario) con X1 (Duración de la estadía) puede ser explicada por el hecho de que entre más estadía, más se puede prolongar el internernamiento de una persona en un hospital y así aumentar el promedio diario de las mismas ya que no se va por unos días X4 (Censo promedio diario) con X3 (Número de camas) que puede ser explicada por el hecho de que entre más camas más pacientes en el hospital hay y por ende resulta en un promedio diario myor de personas (tiene que ver mucho a su vez con el tamaño del hospital) Las que menos presentan con relación al modelo X3 (Número de camas) con X2 (Rutina de cultivos) X5 (Número de enfermeras) con Y (Riesgo de infección) X5 (Número de enfermeras) con X1 (Duración de la estadía)