Na minha opinião, o modelo que você descreveu não se presta à plotagem, pois os gráficos funcionam melhor quando exibem informações complexas que são difíceis de entender de outra forma (por exemplo, interações complexas). No entanto, se você deseja exibir um gráfico dos relacionamentos em seu modelo, você tem duas opções principais:
- Exiba uma série de gráficos das relações bivariadas entre cada um dos seus preditores de interesse e seu resultado, com um gráfico de dispersão dos pontos de dados brutos. Plote envelopes com erro em torno de suas linhas.
- Exiba o gráfico da opção 1, mas em vez de mostrar os pontos de dados brutos, mostre os pontos de dados com seus outros preditores marginalizados (ou seja, depois de subtrair as contribuições dos outros preditores)
O benefício da opção 1 é que ela permite ao espectador avaliar a dispersão nos dados brutos. O benefício da opção 2 é que ela mostra o erro no nível de observação que realmente resultou no erro padrão do coeficiente focal que você está exibindo.
Eu incluí o código R e um gráfico de cada opção abaixo, usando dados do Prestige
conjunto de dados no car
pacote em R.
## Raw data ##
mod <- lm(income ~ education + women, data = Prestige)
summary(mod)
# Create a scatterplot of education against income
plot(Prestige$education, Prestige$income, xlab = "Years of education",
ylab = "Occupational income", bty = "n", pch = 16, col = "grey")
# Create a dataframe representing the values on the predictors for which we
# want predictions
pX <- expand.grid(education = seq(min(Prestige$education), max(Prestige$education), by = .1),
women = mean(Prestige$women))
# Get predicted values
pY <- predict(mod, pX, se.fit = T)
lines(pX$education, pY$fit, lwd = 2) # Prediction line
lines(pX$education, pY$fit - pY$se.fit) # -1 SE
lines(pX$education, pY$fit + pY$se.fit) # +1 SE
## Adjusted (marginalized) data ##
mod <- lm(income ~ education + women, data = Prestige)
summary(mod)
# Calculate the values of income, marginalizing out the effect of percentage women
margin_income <- coef(mod)["(Intercept)"] + coef(mod)["education"] * Prestige$education +
coef(mod)["women"] * mean(Prestige$women) + residuals(mod)
# Create a scatterplot of education against income
plot(Prestige$education, margin_income, xlab = "Years of education",
ylab = "Adjusted income", bty = "n", pch = 16, col = "grey")
# Create a dataframe representing the values on the predictors for which we
# want predictions
pX <- expand.grid(education = seq(min(Prestige$education), max(Prestige$education), by = .1),
women = mean(Prestige$women))
# Get predicted values
pY <- predict(mod, pX, se.fit = T)
lines(pX$education, pY$fit, lwd = 2) # Prediction line
lines(pX$education, pY$fit - pY$se.fit) # -1 SE
lines(pX$education, pY$fit + pY$se.fit) # +1 SE