No exemplo, o objetivo é visualizar graficamente a variável stfdem em todos os passos. Por fim, você deseja calcular um modelo de regressão em stfdem, incluindo os efeitos de stfeco, district, gndr, trstlgl, trstprl e agea.
Primeiro, você calcula o modelo antes de começar as representações gráficas:
model1 <- lm(
stfdem ~ 1 + stfeco + district + gndr + trstlgl + trstprl + agea,
pss
)
summary(model1)
##
## Call:
## lm(formula = stfdem ~ 1 + stfeco + district + gndr + trstlgl +
## trstprl + agea, data = pss)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5.7191 -1.0880 0.0338 1.1554 5.7564
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.582230 0.179506 3.244 0.001189 **
## stfeco 0.878646 0.014100 62.314 < 2e-16 ***
## districtDistrikt 5 0.013212 0.082147 0.161 0.872229
## districtDistrikt 7 0.067992 0.084835 0.801 0.422900
## districtDistrikt 10 0.073204 0.089332 0.819 0.412567
## districtDistrikt 12 0.175263 0.097254 1.802 0.071593 .
## gndrmale -0.089675 0.050657 -1.770 0.076754 .
## trstlgl -0.048787 0.013905 -3.509 0.000455 ***
## trstprl -0.001430 0.012900 -0.111 0.911713
## agea 0.001942 0.002268 0.856 0.391970
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.734 on 4695 degrees of freedom
## (295 observations deleted due to missingness)
## Multiple R-squared: 0.4593, Adjusted R-squared: 0.4583
## F-statistic: 443.2 on 9 and 4695 DF, p-value: < 2.2e-16
No modelo, você identifica efeitos significativos de stfeco, gndrmale e trstlgl. Vamos representá-los a seguir. Mas antes, repita a representação dos coeficientes de regressão de todos os blocos de aprendizado 4 com dwplot().
Frequentemente, o objetivo não é apenas apresentar modelos de regressão em tabelas, mas também representar graficamente efeitos específicos, como os efeitos significativos. Aqui apresentamos uma maneira de fazer isso: manualmente através de suas próprias previsões.
Existem bibliotecas como ggraphExtra, mas elas têm limitações na plotagem.
No entanto, uma vez que temos um modelo multivariado, não é mais tão simples. Devemos manter os outros efeitos constantes para representar corretamente o gráfico. Mas ainda é fácil de fazer, desde que se entenda o que significa manter constante.
Queremos plotar o efeito de stfeco em stfdem. Esse efeito deve ser interpretado juntamente com os outros efeitos. Para plotar o efeito, mantemos o(s) outro(s) efeito(s) constante(s). Para isso, usamos a biblioteca sjPlot e a função plot_model(). Você também precisa carregar o ggplot.
install.packages("sjPlot")
library("sjPlot")
library("tidyverse")
Na função plot_model(), primeiro você chama o objeto do modelo de regressão (aqui model1), indica no segundo argumento que é um gráfico marginal, que inclui valores previstos (type = pred), e então especifica no argumento terms qual efeito deve ser plotado. A função automaticamente mantém todas as variáveis métricas no valor médio e as variáveis categóricas na categoria de referência.
plot_model(
model1,
type = "pred",
terms = "stfeco"
)

Portanto, na figura, você vê o efeito de stfeco em stfdem, mantendo constante (média) de trstlgl, trstprl e agea para pessoas do sexo feminino (nível de referência gndr) do Distrito 1 (nível de referência district).
Se você quiser adicionar o efeito para diferentes grupos da variável categórica, basta adicionar a variável adicional em terms:
plot_model(
model1,
type = "pred",
terms = c(
"stfeco",
"gndr"
)
)

Da mesma forma, você poderia adicionar facilmente a próxima variável categórica:
plot_model(
model1,
type = "pred",
terms = c(
"stfeco",
"gndr",
"district"
)
)

Você também pode restringir a saída para determinados levels (valores de uma variável) ao colocar os levels entre colchetes [..] após os nomes das variáveis (mas dentro das "..."):
# levels von district
levels(pss$district)
## [1] "Distrikt 1" "Distrikt 5" "Distrikt 7" "Distrikt 10" "Distrikt 12"
plot_model(
model1,
type = "pred",
terms = c(
"stfeco",
"gndr",
"district[Distrikt 1, Distrikt 12]")
)

Modificações em um ggplot também funcionam aqui: Vamos alterar os eixos e as cores!
plot_model(
model1,
type = "pred",
terms = c(
"stfeco",
"gndr",
"district"
)
) +
scale_x_continuous(
breaks = seq(
0,
10,
1
)
) +
scale_y_continuous(
breaks = seq(
0,
10,
1
)
) +
scale_color_manual(values = beyonce_palette(72))

Agora represente a relação entre trstlgl e stfdem. Para cada distrito, uma linha própria deve ser exibida e os gráficos devem ser separados por sexo. Experimente primeiro por conta própria antes de ver a solução.
plot_model(
model1,
type = “pred”,
terms = c(
“trstlgl”,
“district”,
“gndr”
)
) +
scale_x_continuous(
breaks = seq(
0,
10,
1
)
) +
scale_y_continuous(
breaks = seq(
0,
10,
1
)
) +
scale_color_manual(values = beyonce_palette(18))
Isso é tudo! Você praticou neste capítulo como representar gráficos para métodos individuais e agora domina os primeiros passos com ggplot!