Comenzamos por cargar los datos y ver algunas estadísticas de nuestros datos:
# Cargamos los datos
library(GGally)
Datos=read.csv("ejemplo1RLM.csv", header=TRUE )
summary(Datos)
## y X1 X2
## Min. : 5.8 Min. :10.4 Min. :15.4
## 1st Qu.: 8.0 1st Qu.:14.0 1st Qu.:19.0
## Median : 8.7 Median :15.1 Median :20.1
## Mean : 8.7 Mean :15.2 Mean :20.1
## 3rd Qu.: 9.6 3rd Qu.:16.4 3rd Qu.:21.2
## Max. :12.6 Max. :19.4 Max. :24.6
Con base en lo anterior podemos ver que tenemos dos variables explicativas \(x_{1}\) y \(x_{2}\). Nos apoyamos mediante un gráfico para ver el comportamiento de nuestros datos
par(mfrow=c(1,2), mar=c(4.5, 4.5, 2, 2))
pairs(Datos)
notamos que nuestras variables explicativas están altamente correlacionadas. De manera intuitiva nos dice que, al incluir ya una variable al modelo, la otro ya no está aportando información adicional para describir nuestro modelo.
# Alternativamente con el paquete GGally:
ggpairs(Datos)
Un posible modelo es: \(\mathbb{E}(Y; X_{1}, X_{2})=\beta_{0}+\beta_{1}X_{1}+\beta_{2}X_{2}\). Para ello, realizamos el ajuste del modelo
# Ajuste del modelo
fit <- lm(y ~ X1 + X2, data=Datos)
# Informacion del ajuste
summary(fit)
##
## Call:
## lm(formula = y ~ X1 + X2, data = Datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.873 -0.661 -0.124 0.621 2.080
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.7370 1.8599 0.93 0.35
## X1 0.3540 0.3315 1.07 0.29
## X2 0.0794 0.3300 0.24 0.81
##
## Residual standard error: 0.95 on 97 degrees of freedom
## Multiple R-squared: 0.413, Adjusted R-squared: 0.401
## F-statistic: 34.2 on 2 and 97 DF, p-value: 5.83e-12
donde en la prueba F se nos marca un \(p-value\) muy pequeño, es decir, encontramos evidencia estadística para asumir que nuestro modelo tiene sentido, esto es, hay evidencia para rechazar la hipótesis nula:
\[ H_0: \beta_1=0\ \ y\ \ \beta_2=0 \ \ \ vs \ \ \ H_a: \beta_1\neq 0\ \ o \ \ \beta_2\neq 0 \]
Considerando también la parte de Coefficients
, en las
pruebas t individuales de cada variable, notamos que los \(p-values\) son grandes y tendremos que
realizar alguna consideración sobre nuestras variables explicativas, lo
cual veremos más adelante.
Podemos obtener los valores de las principales estimaciones puntuales:
# \hat{\beta}
coef(fit)
## (Intercept) X1 X2
## 1.737 0.354 0.079
# \hat{V(\hat{\beta})}
vcov(fit)
## (Intercept) X1 X2
## (Intercept) 3.46 0.51 -0.55
## X1 0.51 0.11 -0.11
## X2 -0.55 -0.11 0.11
# \hat{\sigma}=\sqrt{SCE/(n-p-1)}
sigma(fit)
## [1] 0.95
Luego, procederemos a obtener la prueba de la tabla Anova mediante la prueba lineal general:
library(multcomp)
K <- matrix(c(0,1,0,
0,0,1), ncol=3, nrow=2, byrow=TRUE)
m <- c(0,0)
# Utilizamos la prueba lineal general
summary(glht(fit, linfct=K, rhs=m), test=Ftest())
##
## General Linear Hypotheses
##
## Linear Hypotheses:
## Estimate
## 1 == 0 0.3540
## 2 == 0 0.0794
##
## Global Test:
## F DF1 DF2 Pr(>F)
## 1 34.2 2 97 5.83e-12
donde
\[ H_{0}: \left(\begin{array}{cc}\beta_{1}\\\beta_2\\\end{array}\right)=\left(\begin{array}{cc}0 \\ 0 \end{array}\right) \]
Una vez que se realiza la prueba asociada a la tabla Anova, la
pregunta es si ambas variables aportan información al modelado. Para
esto podemos hacer pruebas individuales sobre cada coeficiente usando
las pruebas t como vimos antes, o bien utilizando la prueba lineal
general. Notemos que las pruebas realizadas en el
summary(fit)
no están hechas de manera simultánea, y en él,
para la primera línea, se considera \(x_{1}=0\) por lo que estamos contrastando
el modelo reducido \(\mathbb{E}(Y; X_{1},
X_{2})=\beta_{0}+\beta_{2}X_{2}\) versus el modelo completo \(\mathbb{E}(Y; X_{1},
X_{2})=\beta_{0}+\beta_{1}X_{1}+\beta_{2}X_{2}\), en otras
palabras estamos constrastando \(H_0:
\beta_1=0 \ \ \ vs\ \ \ H_a: \beta_1\neq 0\), y dado que
obtuvimos un \(p-value\) grande,
entonces no encontramos evidencia suficiente para poder rechazar la
hipótesis nula. De manera análoga con la prueba t para la variable \(x_{2}\).
Luego, podemos realizar una prueba análoga pero ahora utilizando la
paquetería multcom
# H0: b1 = 0 vs Ha: b1 != 0
K <- matrix(c(0,1,0), ncol=3, nrow=1, byrow=TRUE)
m <- c(0)
# Usando prueba F equivalente (no permite pruebas de una cola con alternativa > o <)
summary(glht(fit, linfct=K, rhs=m), test=Ftest())
##
## General Linear Hypotheses
##
## Linear Hypotheses:
## Estimate
## 1 == 0 0.354
##
## Global Test:
## F DF1 DF2 Pr(>F)
## 1 1.14 1 97 0.288
Ahora bien, la prueba anterior es sólo un caso particular en donde se
comparan modelos anidados, es decir, donde se comparan el modelo
reducido versus el completo. R
tiene otras formas de
obtener las pruebas usando el lenguaje de modelos anidados, por ejemplo,
la función anova nos sirve para comparar dos modelos anidados sin
necesidad de usar la definición matricial (K y m).
# Por ejemplo si b1=0, entonces el modelo reducido es
# y = b0 + b2 X2 + e
# Lo ajustamos en R
fitred1 <- lm(y ~ X2, data=Datos)
summary(fitred1)
##
## Call:
## lm(formula = y ~ X2, data = Datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.9186 -0.7020 -0.0832 0.5960 2.2209
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1010 1.0553 0.10 0.92
## X2 0.4273 0.0522 8.19 9.8e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.95 on 98 degrees of freedom
## Multiple R-squared: 0.406, Adjusted R-squared: 0.4
## F-statistic: 67.1 on 1 and 98 DF, p-value: 9.84e-13
Ahora comparamos el modelo completo y el reducido:
# H0: El modelo reducido es plausible
# Ha: El modelo completo es plausible
anova(fit, fitred1)
## Analysis of Variance Table
##
## Model 1: y ~ X1 + X2
## Model 2: y ~ X2
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 97 87.8
## 2 98 88.8 -1 -1.03 1.14 0.29
donde no se rechaza la hipótesis nula por lo cual hay evidencia estadística para considerar plausible el modelo reducido.
Algo similar para obtener la prueba de la tabla anova, donde contrastabamos si las betas eran en simultáneo cero o no, consideraremos la comparación entre el modelo reducido \(y=\beta_0+e\) cuando \(H_0: \beta_1=0 \ \ y \ \ \beta_2=0\) versus el modelo completo
# Modelo reducido simple, b0=0=b1
fitred2 <- lm(y ~ 1, data=Datos)
# Realizamos la prueba de hipotesis pertienente
anova(fitred2, fit)
## Analysis of Variance Table
##
## Model 1: y ~ 1
## Model 2: y ~ X1 + X2
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 99 149.6
## 2 97 87.8 2 61.9 34.2 5.8e-12 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
se rechaza \(H_{0}\), lo que nos dice que es plausible asumir el modelo completo versus el modelo reducido.
Aquí casi los tres modelos indican un mismo coeficiente de
determinación, se seleccionaría en general el de menor número de
parámetros y con el mayor coeficiente de determinación, aunque más
adelante se considerarían otros criterios (BIC
y
AIC
) o bien se realiza un análisis del poder predictivo del
modelo.
summary(fit)
##
## Call:
## lm(formula = y ~ X1 + X2, data = Datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.873 -0.661 -0.124 0.621 2.080
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.7370 1.8599 0.93 0.35
## X1 0.3540 0.3315 1.07 0.29
## X2 0.0794 0.3300 0.24 0.81
##
## Residual standard error: 0.95 on 97 degrees of freedom
## Multiple R-squared: 0.413, Adjusted R-squared: 0.401
## F-statistic: 34.2 on 2 and 97 DF, p-value: 5.83e-12
fitred1 <- lm(y ~ X2, data=Datos)
summary(fitred1)
##
## Call:
## lm(formula = y ~ X2, data = Datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.9186 -0.7020 -0.0832 0.5960 2.2209
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.1010 1.0553 0.10 0.92
## X2 0.4273 0.0522 8.19 9.8e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.95 on 98 degrees of freedom
## Multiple R-squared: 0.406, Adjusted R-squared: 0.4
## F-statistic: 67.1 on 1 and 98 DF, p-value: 9.84e-13
fitred2 <- lm(y ~ X1, data=Datos)
summary(fitred2)
##
## Call:
## lm(formula = y ~ X1, data = Datos)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.882 -0.670 -0.145 0.605 2.053
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.1408 0.7968 2.69 0.0085 **
## X1 0.4328 0.0521 8.30 5.7e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.95 on 98 degrees of freedom
## Multiple R-squared: 0.413, Adjusted R-squared: 0.407
## F-statistic: 69 on 1 and 98 DF, p-value: 5.67e-13
con base en lo dicho anteriormente elegiremos el segundo modelo: \(y = \beta_{0}+\beta_{1}x_{1}+e\).