Melhor maneira de apresentar visualmente relacionamentos de um modelo linear múltiplo


14

Eu tenho um modelo linear com cerca de 6 preditores e vou apresentar as estimativas, valores F, valores p, etc. No entanto, eu queria saber qual seria o melhor gráfico visual para representar o efeito individual de um único preditor em a variável de resposta? Gráfico de dispersão? Gráfico condicional? Gráfico de efeitos? etc? Como eu interpretaria esse enredo?

Eu vou fazer isso no R, então fique à vontade para fornecer exemplos, se puder.

EDIT: Estou preocupado principalmente em apresentar a relação entre um determinado preditor e a variável de resposta.


Você tem termos de interação? Plotar seria muito mais difícil se você os tiver.
Hotaka

Não, apenas 6 variáveis contínuas
AMathew

Você já possui seis coeficientes de regressão, um para cada preditor, que provavelmente serão apresentados em forma de tabela; por que repetir o mesmo ponto novamente com o gráfico?
Penguin_Knight

3
Para públicos não técnicos, prefiro mostrar um gráfico a eles do que falar sobre estimativa ou como os coeficientes são calculados.
AMathew

2
@ tony, entendo. Talvez esses dois sites possam lhe dar alguma inspiração: usar o pacote R visreg e o gráfico de barras de erro para visualizar modelos de regressão.
Penguin_Knight

Respostas:


11

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:

  1. 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.
  2. 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 Prestigeconjunto de dados no carpacote 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

Gráfico usando pontos de dados brutos

## 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

Dados ajustados

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.