Moim zdaniem model, który opisałeś, tak naprawdę nie nadaje się do kreślenia, ponieważ wykresy działają najlepiej, gdy wyświetlają złożone informacje, które trudno zrozumieć inaczej (np. Złożone interakcje). Jeśli jednak chcesz wyświetlić wykres relacji w swoim modelu, masz dwie główne opcje:
- Wyświetl serię wykresów dwuwymiarowych relacji między każdym z twoich predyktorów zainteresowania i wyniku, z wykreślnym wykresem surowych punktów danych. Drukuj koperty błędów wokół linii.
- Wyświetl wykres z opcji 1, ale zamiast pokazywać nieprzetworzone punkty danych, pokaż punkty danych z innymi zminimalizowanymi innymi predyktorami (tj. Po odjęciu wkładu innych predyktorów)
Zaletą opcji 1 jest to, że pozwala widzowi ocenić rozproszenie w surowych danych. Zaletą opcji 2 jest to, że pokazuje błąd na poziomie obserwacji, który faktycznie spowodował błąd standardowy wyświetlanego współczynnika ogniskowej.
Poniżej umieściłem kod R i wykres każdej opcji, używając danych z Prestige
zestawu danych w car
pakiecie w języku 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