6.3 Inferencia sobre los parámetros del Modelo
Una vez evaluado el correcto ajuste del modelo utilizando las metodologías vistas anteriormente y corroborando las propiedades distribucionales de los errores y por ende, de la variable respuesta \(y\), el paso siguiente es verificar si los parámetros estimados son significativos y por ende, las covariables utilizadas para ajustar el modelo aportan significativamente para explicar o predecir a la variable de estudio \(y\).
Dada las propiedades distribucionales de los \(\beta's\), un estadístico de prueba natural para evaluar la significancia de dicho parámetro se basa en la distribución “t-student” y se describe a continuación:
\[ t=\frac{\hat{\beta}_{k}-\beta_{k}}{se\left(\hat{\beta}_{k}\right)}\sim t_{n-p} \]
Donde \(p\) es el número de parámetros del modelo y \(n\) el tamaño de la muestra de la encuesta. En este sentido, el estadístico de prueba anterior evalúa las hipótesis \(H_{0}:\beta_{k}=0\) versus la alternativa \(H_{1}:\beta_{k}\neq0\).
De las propiedades distribucionales de los \(\beta\), se puede construir un intervalo de confianza al \((1-\alpha)\times100\%\) para \(\beta_{k}\) está dado por:
\[ \hat{\beta}_{k}\pm t_{1-\frac{\alpha}{2},\,df}\,se\left(\hat{\beta}_{k}\right) \]
Donde, los grados de libertad para el intervalo (\(df\)) en una encuesta de hogares (muestras complejas) está dado por el número de conglomerados finales de la primera etapa menos el número de estratos de la etapa primaria \(\left(df=\sum_{h}a_{h}-H\right)\).
Para la aplicación de las temáticas vistas, es decir, realizar la prueba de hipótesis y los intervalos de confianza para los parámetros utilizaremos el modelo que se ha venido trabajando y aplicaremos las funciones summary.svyglm
para las pruebas t y confint.svyglm
para los intervalos de confianza como sigue:
:::summary.svyglm(mod_svy) survey
##
## Call:
## svyglm(formula = Income ~ Expenditure + Zone + Sex + Age2, design = diseno_qwgt)
##
## Survey design:
## Called via srvyr
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 62.18419 62.98928 0.99 0.33
## Expenditure 1.22548 0.19798 6.19 9.5e-09 ***
## ZoneUrban 63.46000 40.09025 1.58 0.12
## SexMale 21.73256 15.78081 1.38 0.17
## Age2 0.00852 0.00557 1.53 0.13
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for gaussian family taken to be 118297)
##
## Number of Fisher Scoring iterations: 2
:::confint.svyglm(mod_svy) survey
2.5 % | 97.5 % | |
---|---|---|
(Intercept) | -62.5855 | 186.9538 |
Expenditure | 0.8333 | 1.6176 |
ZoneUrban | -15.9511 | 142.8711 |
SexMale | -9.5262 | 52.9913 |
Age2 | -0.0025 | 0.0196 |
De lo anterior se puede observar que, con una confianza del 95% el único parámetro significativo del modelo es Expenditure y ese mismo resultado lo reflejan los intervalos de confianza.
Estimación de una observación
Los modelos de regresión lineales, según (Neter et al., 1996)., son utilizado esencialmente con 2 fines, el primero es tratar de explicar la variable respuesta en términos de covariables que pueden encontrarse en la encuesta o en registros administrativos, censos, etc. Adicionalmente, también son usados para predecir valores de la variable en estudio ya sea dentro del intervalo de valores recogidos en la muestra o por fuera de dicho intervalo. Lo primero se ha abordado a lo largo de todo el capítulo y lo segundo se obtiene de la siguiente manera:
\[ \hat{E}(y_{i}\mid\boldsymbol{x}_{obs,i})=\boldsymbol{x}_{obs,i}\hat{\boldsymbol{\beta}} \]
De manera explícita, si se ajusta un modelo con 4 covariables la expresión sería:
\[ \hat{E}(y_{i}\mid\boldsymbol{x}_{obs,i})=\hat{\beta}_{0}+\hat{\beta}_{1}x_{1i}+\hat{\beta}_{2}x_{2i}+\hat{\beta}_{3}x_{3i}+\hat{\beta}_{4}x_{4i} \]
La varianza de la estimación se calcula de la siguiente manera:
\[ var\left(\hat{E}\left(y_{i}\mid x_{obs,i}\right)\right) = x'_{obs,i}cov\left(\hat{\beta}\right)x{}_{obs,i} \]
A continuación, se presenta cómo se realiza la estimación del valor esperado, primero se estiman los parámetros del modelo:
term | estimate | std.error | statistic | p.value |
---|---|---|---|---|
(Intercept) | 62.1842 | 62.9893 | 0.9872 | 0.3256 |
Expenditure | 1.2255 | 0.1980 | 6.1901 | 0.0000 |
ZoneUrban | 63.4600 | 40.0902 | 1.5829 | 0.1162 |
SexMale | 21.7326 | 15.7808 | 1.3772 | 0.1711 |
Age2 | 0.0085 | 0.0056 | 1.5297 | 0.1288 |
Por lo anterior, la estimación del valor esperado o predicción queda:
\[ \hat{E}(y_{i}\mid\boldsymbol{x}_{obs,i})=62.2+1.2x_{1i}+63.5x_{2i}+21.7x_{3i}+0.01x_{4i} \] Para calcular la varianza de la estimación, primero se deben obtener las varianzas de la estimación de los parámetros:
vcov(mod_svy)
(Intercept) | Expenditure | ZoneUrban | SexMale | Age2 | |
---|---|---|---|---|---|
(Intercept) | 3967.6496 | -11.3101 | 275.9858 | 312.4533 | -0.1852 |
Expenditure | -11.3101 | 0.0392 | -3.5526 | -0.5004 | 0.0005 |
ZoneUrban | 275.9858 | -3.5526 | 1607.2280 | -130.7108 | -0.0559 |
SexMale | 312.4533 | -0.5004 | -130.7108 | 249.0339 | -0.0043 |
Age2 | -0.1852 | 0.0005 | -0.0559 | -0.0043 | 0.0000 |
Ahora bien, se procede a realizar los cálculos como lo indica la expresión mostrada anteriormente:
<- model.matrix(mod_svy) %>%
xobs data.frame() %>% slice(1) %>% as.matrix()
<- vcov(mod_svy) %>% as.matrix()
cov_beta
as.numeric(xobs %*% cov_beta %*% t(xobs))
## [1] 1921
Si el objetivo ahora es calcular el intervalo de confianza para la predicción se utiliza la siguiente ecuación:
\[ \boldsymbol{x}_{obs,i}\hat{\beta}\pm t_{\left(1-\frac{\alpha}{2},n-p\right)}\sqrt{var\left(\hat{E}\left(y_{i}\mid\boldsymbol{x}_{obs,i}\right)\right)} \]
Para realizar los cálculos en R, se utiliza la función confint
y predict
como sigue:
<- data.frame(predict(mod_svy, type = "link"))
pred <- data.frame(confint(predict(mod_svy, type = "link")))
pred_IC colnames(pred_IC) <- c("Lim_Inf", "Lim_Sup")
pred_IC
Ahora, de manera gráfica las predicciones e intervalos se vería de la siguiente manera:
<- bind_cols(pred, pred_IC)
pred $Expenditure <- encuesta$Expenditure
pred%>% slice(1:6L)
pred <- position_dodge(width = 0.2)
pd ggplot(pred %>% slice(1:100L),
aes(x = Expenditure , y = link)) +
geom_errorbar(aes(ymin = Lim_Inf,
ymax = Lim_Sup),
width = .1,
linetype = 1) +
geom_point(size = 2, position = pd) +
theme_bw()
Por último, si el interés es hacer una predicción fuera del rango de valores que fue capturado en la muestra. Para esto, supongamos que se desea predecir:
<- data.frame(Expenditure = 1600,
datos_nuevos Age2 = 40^2, Sex = "Male",
Zone = "Urban")
La varianza para la predicción se hace siguiendo la siguiente ecuación:
\[ var\left(\hat{E}\left(y_{i}\mid\boldsymbol{x}_{obs,i}\right)\right)=\boldsymbol{x}_{obs,i}^{t}cov\left(\boldsymbol{\beta}\right)\boldsymbol{x}_{obs,i} + \hat{\sigma}^2_{yx} \]
Por tanto, se construye la matriz de observaciones y se calcula la varianza como sigue:
= matrix(c(1,1600,1,1,40^2),nrow = 1)
x_noObs as.numeric(sqrt(x_noObs%*%cov_beta%*%t(x_noObs)))
## [1] 244.6
Por último, el intervalo de confianza sigue la siguiente ecuación:
\[
\boldsymbol{x}_{obs,i}\hat{\beta}\pm t_{\left(1-\frac{\alpha}{2},n-p\right)}\sqrt{var\left(\hat{E}\left(y_{i}\mid\boldsymbol{x}_{obs,i}\right)\right)+\hat{\sigma}_{yx}^{2}}
\]
En R
se hace la predicción de la siguiente manera:
predict(mod_svy, newdata = datos_nuevos, type = "link")
## link SE
## 1 2122 245
y el intervalo:
confint(predict(mod_svy,newdata = datos_nuevos))
2.5 % | 97.5 % |
---|---|
1642 | 2601 |