Il modo migliore per presentare visivamente le relazioni da un modello lineare multiplo


15

Ho un modello lineare con circa 6 predittori e presenterò le stime, i valori F, i valori p, ecc. Tuttavia, mi chiedevo quale sarebbe stato il miglior diagramma visivo per rappresentare l'effetto individuale di un singolo predittore su la variabile di risposta? Dispersione? Trama condizionale? Trama degli effetti? eccetera? Come interpreterei quella trama?

Lo farò in R, quindi sentiti libero di fornire esempi se puoi.

EDIT: mi occupo principalmente di presentare la relazione tra un dato predittore e la variabile di risposta.


Hai termini di interazione? Tracciare sarebbe molto più difficile se li hai.
Hotaka,

No, solo 6 variabili continue
AMathew

Hai già sei coefficienti di regressione, uno per ciascun predittore, che probabilmente verranno presentati in forma tabellare, qual è la ragione per ripetere di nuovo lo stesso punto con il grafico?
Penguin_Knight

3
Per un pubblico non tecnico, preferirei mostrare loro una trama piuttosto che parlare di stima o di come vengono calcolati i coefficienti.
AMathew,

2
@tony, capisco. Forse questi due siti Web possono darti qualche spunto: usare il pacchetto R visreg e la trama della barra degli errori per visualizzare i modelli di regressione.
Penguin_Knight,

Risposte:


12

A mio avviso, il modello che hai descritto non si presta davvero alla stampa, poiché le trame funzionano meglio quando visualizzano informazioni complesse che sono difficili da capire altrimenti (ad esempio, interazioni complesse). Tuttavia, se desideri visualizzare un grafico delle relazioni nel tuo modello, hai due opzioni principali:

  1. Mostra una serie di grafici delle relazioni bivariate tra ciascuno dei tuoi predittori di interesse e il tuo risultato, con un diagramma a dispersione dei punti di dati grezzi. Traccia buste di errore attorno alle linee.
  2. Visualizza il grafico dall'opzione 1, ma invece di mostrare i punti dati grezzi, mostra i punti dati con gli altri predittori emarginati (ovvero, dopo aver sottratto i contributi degli altri predittori)

Il vantaggio dell'opzione 1 è che consente allo spettatore di valutare la dispersione nei dati grezzi. Il vantaggio dell'opzione 2 è che mostra l'errore a livello di osservazione che ha effettivamente provocato l'errore standard del coefficiente focale che si sta visualizzando.

Ho incluso il codice R e un grafico di ciascuna opzione di seguito, utilizzando i dati del Prestigeset di dati nel carpacchetto in 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

Grafico usando punti dati grezzi

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

Dati corretti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.