Este notebook muestra como usar algunas instrucciones propias del lenguaje y programa estadístico de software libre R, útiles en el Análisis de Regresión, sin pretender ser exhaustivo ni agotar cada capacidad que ofrece el mismo. Se asume que lector esta familiarizado con los fundamentos de pruebas de hipotesis, así como los conceptos básicos del análisis de regresión y sus supuestos.
No olvide repdoducir este ejercicio escribiendo el código. Recuerde: no copiar y pegar. Cuando copia y pega, casi siempre tiene una vista general que concluye con “claro, ya entiendo la lógica” (pero no es así). Cuando escribe cada linea de código, está viendo cada instrucción y se ve obligado a inspeccionarla con mayor detalle (y probar sus propias variaciones para mejorarla). Como resultado, aprende mucho mejor.
Finalmente, sería beneficioso si aplicara las instrucciones de código presentadas aquí a sus propios datos.
#Test Kolmogorov-Smirnov
ks.test(estudiantes$Altura,pnorm,mean(estudiantes$Altura),sd(estudiantes$Altura))
## Warning in ks.test(estudiantes$Altura, pnorm, mean(estudiantes$Altura), :
## ties should not be present for the Kolmogorov-Smirnov test
##
## One-sample Kolmogorov-Smirnov test
##
## data: estudiantes$Altura
## D = 0.17965, p-value = 0.7569
## alternative hypothesis: two-sided
#Test Shapiro Will
shapiro.test(estudiantes$Altura)
##
## Shapiro-Wilk normality test
##
## data: estudiantes$Altura
## W = 0.92237, p-value = 0.2378
qqnorm(estudiantes$Altura, xlab="Cuantiles teóricos", ylab="Cuantiles empíricos",main="Diagrama Cuantil-Cuantil Altura")
qqline(estudiantes$Altura, col="red")
cor.test(estudiantes$Peso,estudiantes$Altura)
##
## Pearson's product-moment correlation
##
## data: estudiantes$Peso and estudiantes$Altura
## t = 3.0738, df = 12, p-value = 0.009649
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.2054984 0.8832521
## sample estimates:
## cor
## 0.6637113
#Diagrama dispersión
plot(estudiantes$Peso~estudiantes$Altura, main="Diagrama de Dispersión", xlab="Altura", ylab="Peso")
abline(lm(estudiantes$Peso~estudiantes$Altura), col="red")
#Modelo regresión lineal simple
modelo<-lm(estudiantes$Peso~estudiantes$Altura)
#Resumen del modelo
summary(modelo)
##
## Call:
## lm(formula = estudiantes$Peso ~ estudiantes$Altura)
##
## Residuals:
## Min 1Q Median 3Q Max
## -12.708 -5.011 1.225 3.571 16.143
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -58.18 40.15 -1.449 0.17293
## estudiantes$Altura 72.59 23.62 3.074 0.00965 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 7.698 on 12 degrees of freedom
## Multiple R-squared: 0.4405, Adjusted R-squared: 0.3939
## F-statistic: 9.448 on 1 and 12 DF, p-value: 0.009649
#Análisis de varianza - ANOVA
anova(modelo)
## Analysis of Variance Table
##
## Response: estudiantes$Peso
## Df Sum Sq Mean Sq F value Pr(>F)
## estudiantes$Altura 1 559.86 559.86 9.4482 0.009649 **
## Residuals 12 711.07 59.26
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Interavlo de confianza coeficientes
confint(modelo)
## 2.5 % 97.5 %
## (Intercept) -145.66650 29.29872
## estudiantes$Altura 21.13701 124.05226
#Test Kolmogorot-Smirnov
ks.test(modelo$residuals,pnorm, mean(modelo$residuals),sd(modelo$residuals))
##
## One-sample Kolmogorov-Smirnov test
##
## data: modelo$residuals
## D = 0.12755, p-value = 0.9548
## alternative hypothesis: two-sided
#Test Shapiro Will
shapiro.test(modelo$residuals)
##
## Shapiro-Wilk normality test
##
## data: modelo$residuals
## W = 0.9694, p-value = 0.8685
#Diagrama Cuantil-Cuantil Residuales
qqnorm(modelo$residuals, xlab="Cuantiles teóricos ", ylab="Cuantiles empíricos",main="Diagrama Cuantil-Cuantil Residuales")
qqline(modelo$residuals, col="red")
#Test Durbin-Watson
library(lmtest)
## Loading required package: zoo
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
dwtest(modelo)
##
## Durbin-Watson test
##
## data: modelo
## DW = 2.9917, p-value = 0.9825
## alternative hypothesis: true autocorrelation is greater than 0
#Test Breusch-Pagan
library(lmtest)
bptest(modelo)
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 0.22658, df = 1, p-value = 0.6341
#Factor de inflación de varianza VIF
#require(car)
#vif(modelo)
#Predicción observaciones
predict(modelo)
## 1 2 3 4 5 6 7 8
## 68.85672 71.03456 67.40483 64.50104 66.67888 73.21240 57.96753 65.22699
## 9 10 11 12 13 14
## 50.70806 68.85672 72.48645 67.40483 55.78969 60.87131
#Interavalo confianza
predict(modelo,interval = "prediction")
## Warning in predict.lm(modelo, interval = "prediction"): predictions on current data refer to _future_ responses
## fit lwr upr
## 1 68.85672 51.28992 86.42352
## 2 71.03456 53.16672 88.90239
## 3 67.40483 49.96554 84.84411
## 4 64.50104 47.13566 81.86642
## 5 66.67888 49.28086 84.07691
## 6 73.21240 54.91778 91.50701
## 7 57.96753 39.89132 76.04373
## 8 65.22699 47.86596 82.58801
## 9 50.70806 30.58218 70.83394
## 10 68.85672 51.28992 86.42352
## 11 72.48645 54.34758 90.62533
## 12 67.40483 49.96554 84.84411
## 13 55.78969 37.22415 74.35522
## 14 60.87131 43.25721 78.48542