ในความคิดของฉันโมเดลที่คุณอธิบายไม่ได้ให้ยืมตัวจริงกับการวางแผนเนื่องจากพล็อตจะทำงานได้ดีที่สุดเมื่อพวกมันแสดงข้อมูลที่ซับซ้อนซึ่งยากที่จะเข้าใจอย่างอื่น (เช่นการโต้ตอบที่ซับซ้อน) อย่างไรก็ตามหากคุณต้องการแสดงพล็อตความสัมพันธ์ในแบบจำลองของคุณคุณมีสองตัวเลือกหลัก:
- แสดงชุดของความสัมพันธ์ที่แปรปรวนระหว่างตัวทำนายแต่ละตัวที่คุณสนใจและผลลัพธ์ของคุณพร้อมกับการกระจายของดาต้าพอยน์ดิบ พล็อตข้อผิดพลาดล้อมรอบเส้นของคุณ
- แสดงพล็อตจากตัวเลือกที่ 1 แต่แทนที่จะแสดงดาต้าพอยน์แบบดิบให้แสดงดาต้าพอยน์กับตัวทำนายอื่น ๆ ที่อยู่นอกกรอบ (เช่นหลังจากลบการสนับสนุนของตัวทำนายอื่น)
ประโยชน์ของตัวเลือกที่ 1 คือช่วยให้ผู้ดูประเมินการกระจายในข้อมูลดิบ ประโยชน์ของตัวเลือกที่ 2 คือมันแสดงข้อผิดพลาดระดับการสังเกตที่จริงทำให้เกิดข้อผิดพลาดมาตรฐานของสัมประสิทธิ์โฟกัสที่คุณกำลังแสดง
ฉันรวมรหัส R และกราฟของแต่ละตัวเลือกด้านล่างโดยใช้ข้อมูลจากPrestige
ชุดข้อมูลในcar
แพ็คเกจใน 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