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
!