9.2 The estimation and interpretation of standardized regression coefficients in a moderation analysis
9.2.1 Variant 1.
We’ve already computed standardized predictors. Now we just need to standardize the criterion, govact
.
glbwarm <-
glbwarm %>%
mutate(govact_z = (govact - mean(govact))/sd(govact))
Fit:
model3 <-
update(model1, newdata = glbwarm,
govact_z ~ 1 + negemot_z + age_z + negemot_z:age_z,
chains = 4, cores = 4)
bayes_R2(model3) %>% round(digits = 3)
## Estimate Est.Error Q2.5 Q97.5
## R2 0.354 0.022 0.309 0.396
print(model3, digits = 3)
## Family: gaussian
## Links: mu = identity; sigma = identity
## Formula: govact_z ~ negemot_z + age_z + negemot_z:age_z
## Data: glbwarm (Number of observations: 815)
## Samples: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
## total post-warmup samples = 4000
##
## Population-Level Effects:
## Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
## Intercept 0.008 0.028 -0.045 0.061 4000 1.000
## negemot_z 0.563 0.029 0.504 0.619 4000 1.000
## age_z -0.063 0.028 -0.117 -0.007 4000 1.000
## negemot_z:age_z 0.131 0.029 0.074 0.188 4000 1.000
##
## Family Specific Parameters:
## Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
## sigma 0.806 0.020 0.769 0.847 4000 1.000
##
## Samples were drawn using sampling(NUTS). For each parameter, Eff.Sample
## is a crude measure of effective sample size, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
9.2.2 Variant 2.
This time we need to standardize our interaction term, negemot_x_age_z
, by hand.
glbwarm <-
glbwarm %>%
mutate(negemot_x_age_z = (negemot_x_age - mean(negemot_x_age))/sd(negemot_x_age))
Now we’re ready to fit.
model4 <-
update(model1, newdata = glbwarm,
govact_z ~ 1 + negemot_z + age_z + negemot_x_age_z,
chains = 4, cores = 4)
bayes_R2(model4) %>% round(digits = 3)
## Estimate Est.Error Q2.5 Q97.5
## R2 0.354 0.021 0.31 0.394
print(model4, digits = 3)
## Family: gaussian
## Links: mu = identity; sigma = identity
## Formula: govact_z ~ negemot_z + age_z + negemot_x_age_z
## Data: glbwarm (Number of observations: 815)
## Samples: 4 chains, each with iter = 2000; warmup = 1000; thin = 1;
## total post-warmup samples = 4000
##
## Population-Level Effects:
## Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
## Intercept 0.000 0.029 -0.056 0.056 3171 1.000
## negemot_z 0.168 0.094 -0.020 0.349 1211 1.004
## age_z -0.366 0.072 -0.510 -0.226 1196 1.005
## negemot_x_age_z 0.508 0.112 0.285 0.728 1172 1.005
##
## Family Specific Parameters:
## Estimate Est.Error l-95% CI u-95% CI Eff.Sample Rhat
## sigma 0.807 0.021 0.767 0.849 2907 1.001
##
## Samples were drawn using sampling(NUTS). For each parameter, Eff.Sample
## is a crude measure of effective sample size, and Rhat is the potential
## scale reduction factor on split chains (at convergence, Rhat = 1).
The results correspond nicely to those in Table 9.1.