5.8 Inferencia sobre los parámetros del modelo

Una vez evaluado el correcto ajuste del modelo utilizando las metodologías vistas anteriormente y corroboradas las propiedades distribucionales de los errores —y, en consecuencia, de la variable respuesta \(y\)—, el siguiente paso consiste en verificar si los parámetros estimados son estadísticamente significativos. Esto permite determinar si las covariables incluidas en el modelo aportan de manera sustantiva a la explicación o predicción de la variable de estudio.

En los modelos de regresión, el enfoque clásico para contrastar hipótesis sobre los parámetros \(\beta_k\) se basa en las propiedades distribucionales de sus estimadores. Un estadístico de prueba natural para evaluar la significancia de un coeficiente se construye a partir de la distribución t-Student y se define como:

\[ 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 muestral. Este estadístico permite contrastar la hipótesis nula \(H_{0}:\beta_{k}=0\) frente a la alternativa \(H_{1}:\beta_{k}\neq 0\).

En consecuencia, cuando \(|t|\) es lo suficientemente grande, se rechaza la hipótesis nula, concluyendo que la covariable asociada al parámetro \(\beta_k\) tiene un efecto significativo en la variable respuesta.

De igual manera, las propiedades distribucionales de los \(\beta\) permiten construir intervalos de confianza al nivel \((1-\alpha)\times100%\), definidos como:

\[ \hat{\beta}_{k}\pm t_{1-\frac{\alpha}{2},\,df}\,se\left(\hat{\beta}_{k}\right) \]

donde \(se(\hat{\beta}*k)\) es el error estándar del estimador y \(t*{1-\frac{\alpha}{2},,df}\) corresponde al percentil de la distribución t-Student con \(df\) grados de libertad.

En el caso particular de las encuestas de hogares con diseños muestrales complejos, los grados de libertad no se calculan simplemente como \(n-p\) (como en el enfoque clásico), sino que deben ajustarse para reflejar la estructura del muestreo. De acuerdo con la teoría de diseño, se establece que:

\[ df = \sum_{h} a_{h} - H \]

donde \(\sum_{h}a_{h}\) es el número total de conglomerados finales de la primera etapa y \(H\) el número de estratos de dicha etapa.

Este ajuste es fundamental porque asegura que la inferencia refleje de manera adecuada la variabilidad introducida por la estratificación, la conglomeración y las probabilidades de selección desiguales, evitando conclusiones erróneas sobre la significancia de los parámetros en el análisis de encuestas complejas.

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:

survey:::summary.svyglm(mod_svy)
## 
## 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
survey:::confint.svyglm(mod_svy)
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:

xobs <- model.matrix(mod_svy) %>%
        data.frame() %>% slice(1) %>% as.matrix()

cov_beta <- vcov(mod_svy) %>% as.matrix()

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:

pred <- data.frame(predict(mod_svy, type = "link"))
pred_IC <- data.frame(confint(predict(mod_svy, type = "link")))
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:

pred <- bind_cols(pred, pred_IC)
pred$Expenditure <- encuesta$Expenditure
pred %>% slice(1:6L)
pd <- position_dodge(width = 0.2)
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:

datos_nuevos <- data.frame(Expenditure = 1600,
                           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:

x_noObs = matrix(c(1,1600,1,1,40^2),nrow = 1)
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