El análisis de regresión consiste en establecer una relación funcional entre una variable (llamada dependiente o explicada) y otras u otras variables (llamadas independientes o explicatorias) con el objeto de utilizarla para predecir el valor de la variable dependiente si se conoce o suponen el (los) valor (es) de la(s) variable(s) independiente (s).
En el caso de la regresión lineal simple se tienen dos variables: una variable dependiente y una variable independiente.
A partir de los datos de una muestra de n elementos a los cuales se les estudian las dos variables, se trata de estimar una ecuación lineal que las relacione. esta ecuación lineal tiene la forma:
\(\hat{y}_{i}=\hat\beta_{0}+\hat\beta_{1}x_{i}\)
Los ingresos mensuales (x: millones$) y los gastos mensuales de consumo (y: millones) de una muestra de 11 personas.
x<-c(2.4,1.8,3.5,2.9,3.4,4.5,2.0,2.3,4.8,4.2,3.7)
y<-c(2.2,1.6,2.8,2.5,2.7,3.8,1.9,2.1,4.0,3.4,3.3)
El diagrama de dispersión es un gráfico en el cual se representan las parejas de valores \((x_{i},y_{i})\) de la muestra de n elementos. Este gráfico es una ayuda para observar la relación existente entre las dos variables y su forma funcional.
plot(x,y,pch=16,xlab="Ingreso",ylab="consumo")
modelo<-lm(y~x)
coefficients(modelo)
## (Intercept) x
## 0.3028404 0.7596833
Se pueden obtener individualmente los coeficientes.
modelo$coefficients[1]
## (Intercept)
## 0.3028404
modelo$coefficients[2]
## x
## 0.7596833
La ecuación lineal de regresión sería:
\(y_{i}= 0.3028404 +0.7596833 x_{}i\)
La ecuación lineal obtenida para la relación entre el ingreso y el consumo se puede graficar junto con el diagrama de dispersión.
plot(x,y,pch=16,xlab="Ingreso",ylab="consumo")
abline(modelo)
summary(modelo)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.18576 -0.08189 0.04989 0.07586 0.18633
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.30284 0.12561 2.411 0.0392 *
## x 0.75968 0.03724 20.398 7.63e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.121 on 9 degrees of freedom
## Multiple R-squared: 0.9788, Adjusted R-squared: 0.9765
## F-statistic: 416.1 on 1 and 9 DF, p-value: 7.631e-09
En este resumen se puede observar:
información sobre los residuales (errores): mmínimo, primer cuartil, mediana, tercer cuartil y máximo).
Los coeficientes del modelo (estimate) con sus correspondientes errores estándar (Std. Error); los valores de t que pueden ser utilizados para probar las hipótesis:
\(H_{0}: \beta_{0}=0\) Vs \(H_{1}: \beta_{0}\not=0\)
\(H_{0}: \beta_{1}=0\) Vs \(H_{1}: \beta_{1}\not=0\)
A su lado aparecen los correspondientes valores p. \(Pr(>|t|)\)
anova(modelo)
## Analysis of Variance Table
##
## Response: y
## Df Sum Sq Mean Sq F value Pr(>F)
## x 1 6.0954 6.0954 416.07 7.631e-09 ***
## Residuals 9 0.1319 0.0147
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
cor(x,y)
## [1] 0.9893568
pre<-predict(modelo);pre
## 1 2 3 4 5 6 7 8
## 2.126080 1.670270 2.961732 2.505922 2.885763 3.721415 1.822207 2.050112
## 9 10 11
## 3.949320 3.493510 3.113668
Para x=4.4
modelo$coefficients[1]+modelo$coefficients[2]*4.4
## (Intercept)
## 3.645447
De otra forma
nuevo<-data.frame(x=4.4)
predict.lm(modelo,newdata=nuevo)
## 1
## 3.645447
confint(modelo,level=0.95)
## 2.5 % 97.5 %
## (Intercept) 0.01868393 0.5869969
## x 0.67543261 0.8439339
predict.lm(modelo,newdata=nuevo,interval="prediction")
## fit lwr upr
## 1 3.645447 3.342879 3.948014
predict.lm(modelo,newdata=nuevo,interval="confidence")
## fit lwr upr
## 1 3.645447 3.516693 3.7742
nuevas<-data.frame(x =seq(min(x),max(x)))
plot(x,y, xlab="ingreso", ylab="consumo",pch=16)
abline(modelo)
ic <- predict(modelo, nuevas, interval = "confidence")
lines(nuevas$x, ic[,2], lty = 2,col="blue")
lines(nuevas$x, ic[,3], lty = 2,col="blue")
ic <- predict(modelo, nuevas, interval = "prediction")
lines(nuevas$x, ic[,2], lty = 2, col = "red")
lines(nuevas$x, ic[,3], lty = 2, col = "red")
residuos<-resid(modelo);residuos
## 1 2 3 4 5 6
## 0.073919780 -0.070270270 -0.161731795 -0.005921845 -0.185763470 0.078584954
## 7 8 9 10 11
## 0.077793080 0.049888105 0.050679979 -0.093510071 0.186331554
ks.test(residuos,"pnorm")
##
## One-sample Kolmogorov-Smirnov test
##
## data: residuos
## D = 0.42632, p-value = 0.02491
## alternative hypothesis: two-sided
qqnorm(residuos)
qqline(residuos)