El análisis de regresión es una metodología estadística que se utiliza para establecer la posible relación entre dos tipos de variables: independientes (regresoras) y dependientes (o predichas o estimadas). El modelo de regresión lineal simple a ajustar es:
En este caso se considera la dosis de hormona (en UI) como variable independiente (regresora) y el incremento de peso de pollos de engorde (en libras) como variable dependiente a estimar.
Para incluir estas variables en vectores se emplea los siguientes comandos
dosis<-c(10,15,20,25,30,35) #Datos de la variable independiente o regresora
pesos<-c(1.35,1.42,1.64,1.80,1.94,2.0) #Datos de la variable dependiente a estimar
Es importante construir un diagrama de dispersión y observar la tendencia (directa, inversa o aleatoria).
plot(dosis,pesos, xlab="Dosis (UI)", ylab="Ganancia de peso (Libras)")
El gráfico presenta una relación con tendencia lineal directamente proporcional.
Para realizar el análisis de regresión lineal simple es necesario contar con un modelo lineal de los datos, para esto se utiliza la función “lm(y~x)” en la que se coloca los nombres de la variable regresora (y) y la variable a estimar (x) separadas por una tílde “~”.
regresion<-lm(pesos~dosis) #lm = linear models
summary(regresion) #Resumen del análisis de regresión
##
## Call:
## lm(formula = pesos ~ dosis)
##
## Residuals:
## 1 2 3 4 5 6
## 0.01333 -0.05867 0.01933 0.03733 0.03533 -0.04667
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.052667 0.054007 19.49 4.09e-05 ***
## dosis 0.028400 0.002244 12.65 0.000225 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.04694 on 4 degrees of freedom
## Multiple R-squared: 0.9756, Adjusted R-squared: 0.9695
## F-statistic: 160.2 on 1 and 4 DF, p-value: 0.0002245
El modelo queda almacenado en un vector llamado “regresion”.
Para agregar la recta de mínimos cuadrados se emplea la función “abline()”, que agrega una línea de acuerdo a los parámetros especificados dentro del paréntesis, correspondiendo en este caso al vector “regresion”.
plot(dosis,pesos, xlab="Dosis (UI)", ylab="Ganancia de peso (lb)")
abline(regresion)
La predicción del peso de los pollos se consigue mediante el uso del modelo lineal, empleando nuevos valores de dosis. En el ejemplo se creará un nuevo vector que incluirá valores de dosis de 10 a 35 (UI) en secuencias de 5 en 5, a partir de eso será posible predecir el peso con la función “predict()”. La función “round()” permitirá aproximar los decimales de un vector en la cantidad especificada, en este caso, a 2 decimales. Para calcular los intervalos de confianza de los estimadores se utilizará la función “confint()”; definiendo la confiabilidad, fijada en el ejemplo a 0.9.
nuevas.dosis <- data.frame(dosis = seq(10, 35,5))
round(predict(regresion, nuevas.dosis),2)
## 1 2 3 4 5 6
## 1.34 1.48 1.62 1.76 1.90 2.05
confint(regresion, level = 0.90)
## 5 % 95 %
## (Intercept) 0.93753128 1.16780206
## dosis 0.02361582 0.03318418
anova(regresion)
## Analysis of Variance Table
##
## Response: pesos
## Df Sum Sq Mean Sq F value Pr(>F)
## dosis 1 0.35287 0.35287 160.15 0.0002245 ***
## Residuals 4 0.00881 0.00220
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
El intervalo de confianza con una confiabilidad de 0.90 para los estimadores es de 0.93 - 1.16 para el intercepto y de 0.023 - 0.033 para la dosis.
El análisis de varianza (anova) indica que el modelo de regresión lineal simple es significativo considerando que el valor de p < 0.05. Significa que el peso de los pollos puede predecirse en función de la dosis de la hormona.
Para predecir algún valor se utiliza la función predict(#modelo, #valores).
predict(regresion,data.frame(dosis=15))
## 1
## 1.478667
predict(regresion,data.frame(dosis=c(15,16,17,18)))
## 1 2 3 4
## 1.478667 1.507067 1.535467 1.563867
nuevas.dosis <- data.frame(dosis = seq(5, 40))
plot(dosis,pesos,xlab="Dosis (UI)", ylab="Ganancia de peso (lb)")
abline(regresion)
icc<-predict(regresion, nuevas.dosis, interval="confidence") #intervalos de confianza
lines(nuevas.dosis$dosis, icc[, 2], lty=2, col="red")
lines(nuevas.dosis$dosis, icc[, 3], lty=2, col="red")
icp<-predict(regresion, nuevas.dosis, interval="prediction") #intervalos de confianza para las predicciones
lines(nuevas.dosis$dosis, icp[, 2], lty=6, col="blue")
lines(nuevas.dosis$dosis, icp[, 3], lty=6, col="blue")
A través de la función “predict()” también es posible estimar los intervalos de confianza. En el gráfico se observa los intervalos de confianza de color rojo y los intervalos de confianza para las predicciones de color azul.