Ejercicio de regresión lineal simple

En este Notebook presentamos las instrucciones básica del programa R para la realización del análisis de regresión lineal simple. para ello trabajeremos con los datos de la pluviosisdad acuosa y la altitud de 12 ciudades (en cientos de metros) para determinar la relación entre estas dos variables mediante un modelo de regresión lineal simple .

  1. Realizando la entrada de los datos directamente en R

#Lectura de los datos
altitud <- c(9.3,6.1, 15.0, 23, 21,4,1.0, 14, 17, 0.5, 1.5, 10) # variable dependiente Y
precipitacion <- c(7.6,9.5,17.7,12.3,9.2,6.3,7.2,10.7,13.1,7.5,9.1,9.5 ) # variable predictora X
  1. Aplicamos la función lm (linear model) para ajustar el modelo de regresión lineal y se presenta el gráfico de dispersión con la linea ajustada.

plot(altitud,precipitacion,main="Precipitación ~ altitud")# Gráfico de dispersión 
# Ajuste del modelo lineal
modreg <- lm(precipitacion~altitud) 
modreg
## 
## Call:
## lm(formula = precipitacion ~ altitud)
## 
## Coefficients:
## (Intercept)      altitud  
##      7.4566       0.2469
abline(modreg,col="green") # Pueden cambiar el el color a la linea, ejemplor , escribiendo red , blue...etc

El modelo de regresión lineal muestral es \(pluviosidad_i= 7.4566 + 0.2469*precipitación_i\)

  1. Análisis de varianza del modelo lineal simple

#Anova del modelo
anova(modreg) 
## Analysis of Variance Table
## 
## Response: precipitacion
##           Df Sum Sq Mean Sq F value  Pr(>F)  
## altitud    1 41.131  41.131  5.9584 0.03479 *
## Residuals 10 69.031   6.903                  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# resumen del modelo, prueba sobre los parámetros y Coeficiente de determinación r^2

summary(modreg) 
## 
## Call:
## lm(formula = precipitacion ~ altitud)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.4415 -1.1626 -0.3194  0.7212  6.5399 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   7.4566     1.2805   5.823 0.000168 ***
## altitud       0.2469     0.1011   2.441 0.034790 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.627 on 10 degrees of freedom
## Multiple R-squared:  0.3734, Adjusted R-squared:  0.3107 
## F-statistic: 5.958 on 1 and 10 DF,  p-value: 0.03479
  1. Intervalo de confianza para los parámetros del modelo

# I.C del 95% para los parámetros del modelo (beta0 y beta1)
confint(modreg)
##                  2.5 %     97.5 %
## (Intercept) 4.60344782 10.3097428
## altitud     0.02152904  0.4722758
  1. Verificación de los supuestos del modelo.

Análisis gráficos

# Graficas de verificación de normalidad , homogeneidad,  independencia y datos influyente
par(mfrow=c(2,2))
plot(modreg)

# Obteniendo los residuales del modelo de regresión lineal muestral (error= observado - pronósticado)
errores <- modreg$residuals 

# mostramos los errores redondeado a 3 cifras decimales con la función round()
round(errores,3)
##      1      2      3      4      5      6      7      8      9     10     11 
## -2.153  0.537  6.540 -0.835 -3.442 -2.144 -0.503 -0.213  1.446 -0.080  1.273 
##     12 
## -0.426

Verificando el supuesto de normalidad
aplicamos el gráfico quantil-quantil o mejor conocido como el qqplot

qqnorm(errores)
qqline(errores,col="green")

Aplicando la prueba de Kolmogorov-Smirnoff y la prueba de Shapiro-Wilk

Las pruebas de normalidad más aplicadas son las pruebas de Shapiro-Wilk y de Kolmogorov-Smirnov . En estas pruebas se busca aceptar la \(H_0\): los errores se distribuye normal

ks.test(errores,"pnorm",mean=0,sd=sqrt(6.903)) # errores con media cero y desviación raiz(CME)
## 
##  Exact one-sample Kolmogorov-Smirnov test
## 
## data:  errores
## D = 0.20769, p-value = 0.6074
## alternative hypothesis: two-sided
shapiro.test(errores) # 
## 
##  Shapiro-Wilk normality test
## 
## data:  errores
## W = 0.86474, p-value = 0.05608

Verificación del supuesto de Homogeneidad de varianza y Autocorrelación Se prueba la hipótesis de que la varianza de los residuales son iguales, es decir \(H_0\): la varianza de los errores es constante. aplicaremos la prueba de Breusch-Pagan Test, La función bptest del paquete lmtest 1 Zeileis and Hothorn (2002) implementa esta prueba.

# Carga de la libreria lmtest para la prueba de homogeneidad de varianza
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
bptest(modreg)
## 
##  studentized Breusch-Pagan test
## 
## data:  modreg
## BP = 1.0272, df = 1, p-value = 0.3108

De la salida anterior se observa que valor-P < del 5%, por lo tanto, se decide que se cumple la homogeneidad de los \(e_i\)

Prueba de autocorrelación o de independencia se estudian la siguiente hipótesis.\(H_0\):los errores son independientes.

implementando el test de Durbin-Watson

dwtest(modreg)
## 
##  Durbin-Watson test
## 
## data:  modreg
## DW = 1.7197, p-value = 0.2854
## alternative hypothesis: true autocorrelation is greater than 0

Bibliografia

Acevedo, Miguel. 2013. Data Analysis and Statistics for Geography, Environmental Science, and Engineering. Estados Unidos – Boca Ratón: CRC Press Taylor & Francis Group

Breusch, T. S. y Pagan, A. R. (1979). A simple test for heteroscedasticity and random coefficient variation. Econometrica, 47(5):1287–94.

CHATTERJEE, S. (1977). Regression analysis by example. New York: Wiley.

Ebdon, David. 1982. Estadística para geógrafos. España – Barcelona: Oikos-tau, s.a. – ediciones

R Core Team (2023). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria. https://www.R-project.org/

Zeileis, Achim, and Torsten Hothorn. 2002. “Diagnostic Checking in Regression Relationships.” R News 2 (3): 7–10. https://CRAN.R-project.org/doc/Rnews/.


  1. En el siguiente link se presenta como se realiza la descarga y carga de libreria en R como descargar y cargar libreria en R↩︎