Definición.

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}\)

Datos.

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)

Diagrama de dispersión.

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")

Ecuación lineal de regresión.

modelo<-lm(y~x)

Coeficientes.

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\)

diagrama de dispersión y la ecuación lineal de regresión.

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)

Resumen del 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:

  1. información sobre los residuales (errores): mmínimo, primer cuartil, mediana, tercer cuartil y máximo).

  2. 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|)\)

  1. En la parte inferior aparece el cuadrado medio del error (Residual standard error), el coeficiente de determinación (Multiple R-squared) y el valor de F (F-statistic) para probar la significancia del modelo.

análisis de varianza.

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

Coeficiente de correlación.

cor(x,y)
## [1] 0.9893568

valores estimados o predichos por el modelo.

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

Estimación pa ra un valor particular.

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

intervalo de confianza para \(\beta_{0}\) y \(\beta_{1}\)

confint(modelo,level=0.95)
##                  2.5 %    97.5 %
## (Intercept) 0.01868393 0.5869969
## x           0.67543261 0.8439339

intervalo de confianza para la respuesta media.

predict.lm(modelo,newdata=nuevo,interval="prediction")
##        fit      lwr      upr
## 1 3.645447 3.342879 3.948014

intervalo de predicción.

predict.lm(modelo,newdata=nuevo,interval="confidence")
##        fit      lwr    upr
## 1 3.645447 3.516693 3.7742

Intervalos de confianza.

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.

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)