Die beste Möglichkeit, Beziehungen aus einem multiplen linearen Modell visuell darzustellen


14

Ich habe ein lineares Modell mit ungefähr 6 Prädiktoren und werde die Schätzungen, F-Werte, p-Werte usw. präsentieren. Ich habe mich jedoch gefragt, was das beste visuelle Diagramm wäre, um den individuellen Effekt eines einzelnen Prädiktors darzustellen die Antwortvariable? Streudiagramm? Bedingte Handlung? Effektplot? etc? Wie würde ich diese Handlung interpretieren?

Ich werde dies in R tun, also zögern Sie nicht, Beispiele zu nennen, wenn Sie können.

EDIT: Ich befasse mich hauptsächlich mit der Darstellung der Beziehung zwischen einem bestimmten Prädiktor und der Antwortvariablen.


Haben Sie Interaktionsbedingungen? Plotten wäre viel schwieriger, wenn Sie sie haben.
Hotaka

Nein, nur 6 kontinuierliche Variablen
AMathew

Sie haben bereits sechs Regressionskoeffizienten, einen für jeden Prädiktor, die wahrscheinlich in tabellarischer Form dargestellt werden. Warum wird derselbe Punkt mit dem Diagramm erneut wiederholt?
Penguin_Knight

3
Für nicht-technische Zielgruppen würde ich ihnen lieber einen Plot zeigen, als über die Schätzung oder die Berechnung der Koeffizienten zu sprechen.
Amathew

2
@tony, ich verstehe. Vielleicht können Sie sich von diesen beiden Websites inspirieren lassen: Verwenden des R-Visreg-Pakets und des Fehlerbalkendiagramms zur Visualisierung von Regressionsmodellen.
Penguin_Knight

Antworten:


11

Meiner Meinung nach eignet sich das von Ihnen beschriebene Modell nicht wirklich zum Plotten, da Plots am besten funktionieren, wenn sie komplexe Informationen enthalten, die ansonsten schwer zu verstehen sind (z. B. komplexe Interaktionen). Wenn Sie jedoch eine grafische Darstellung der Beziehungen in Ihrem Modell anzeigen möchten, haben Sie zwei Hauptoptionen:

  1. Zeigen Sie eine Reihe von Diagrammen der bivariaten Beziehungen zwischen jedem Ihrer interessierenden Prädiktoren und Ihrem Ergebnis mit einem Streudiagramm der Rohdatenpunkte an. Zeichnen Sie Fehlerumschläge um Ihre Linien.
  2. Zeigen Sie den Plot von Option 1 an, aber anstatt die Rohdatenpunkte anzuzeigen, zeigen Sie die Datenpunkte mit Ihren anderen Prädiktoren an, die an den Rand gedrängt wurden (dh nachdem Sie die Beiträge der anderen Prädiktoren abgezogen haben).

Der Vorteil von Option 1 besteht darin, dass der Betrachter die Streuung in den Rohdaten beurteilen kann. Der Vorteil von Option 2 besteht darin, dass der Fehler auf Beobachtungsebene angezeigt wird, der tatsächlich zum Standardfehler des von Ihnen angezeigten Fokuskoeffizienten geführt hat.

Ich habe unten einen R-Code und eine Grafik für jede Option eingefügt, wobei Daten aus dem PrestigeDatensatz in dem carPaket in R verwendet wurden.

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

Grafik mit Rohdatenpunkten

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

Angepasste Daten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.