วิธีที่ดีที่สุดในการแสดงความสัมพันธ์จากแบบจำลองเชิงเส้นหลายแบบ


15

ฉันมีโมเดลเชิงเส้นพร้อมตัวทำนายประมาณ 6 ตัวและฉันจะนำเสนอการประมาณค่า F ค่า p ฯลฯ ตัวแปรการตอบสนอง? scatterplot? พล็อตตามเงื่อนไข? พล็อตเอฟเฟกต์? etc? ฉันจะตีความพล็อตนั้นได้อย่างไร

ฉันจะทำสิ่งนี้ใน R ดังนั้นอย่าลังเลที่จะให้ตัวอย่างถ้าคุณทำได้

แก้ไข: ฉันเกี่ยวข้องกับการนำเสนอความสัมพันธ์ระหว่างตัวทำนายที่ได้รับและตัวแปรการตอบสนองเป็นหลัก


คุณมีคำศัพท์หรือไม่? การพล็อตจะยากกว่านี้ถ้าคุณมีมัน
Hotaka

ไม่เพียง 6 ตัวแปรอย่างต่อเนื่อง
AMathew

คุณมีสัมประสิทธิ์การถดถอยหกตัวแล้วหนึ่งตัวสำหรับแต่ละตัวทำนายซึ่งน่าจะถูกนำเสนอในรูปแบบตารางเหตุผลของการทำซ้ำจุดเดิมอีกครั้งด้วยกราฟคืออะไร?
Penguin_Knight

3
สำหรับผู้ชมที่ไม่ใช่ด้านเทคนิคฉันควรแสดงโครงเรื่องให้พวกเขามากกว่าพูดคุยเกี่ยวกับการประมาณค่าหรือวิธีคำนวณค่าสัมประสิทธิ์
AMathew

2
@tony ฉันเห็น บางทีเว็บไซต์ทั้งสองนี้อาจให้แรงบันดาลใจกับคุณ: การใช้แพ็คเกจ R visregและแถบข้อผิดพลาดในการมองเห็นโมเดลการถดถอย
Penguin_Knight

คำตอบ:


12

ในความคิดของฉันโมเดลที่คุณอธิบายไม่ได้ให้ยืมตัวจริงกับการวางแผนเนื่องจากพล็อตจะทำงานได้ดีที่สุดเมื่อพวกมันแสดงข้อมูลที่ซับซ้อนซึ่งยากที่จะเข้าใจอย่างอื่น (เช่นการโต้ตอบที่ซับซ้อน) อย่างไรก็ตามหากคุณต้องการแสดงพล็อตความสัมพันธ์ในแบบจำลองของคุณคุณมีสองตัวเลือกหลัก:

  1. แสดงชุดของความสัมพันธ์ที่แปรปรวนระหว่างตัวทำนายแต่ละตัวที่คุณสนใจและผลลัพธ์ของคุณพร้อมกับการกระจายของดาต้าพอยน์ดิบ พล็อตข้อผิดพลาดล้อมรอบเส้นของคุณ
  2. แสดงพล็อตจากตัวเลือกที่ 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

ปรับข้อมูลแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.