สมมติว่าสมการถดถอยหลายตัวของคุณคือ
y^=2x1+5x2+3
ที่ปีหมายความว่า "คาดการณ์ปี "y^y
ตอนนี้ใช้เวลาเพียงแค่จุดเหล่านั้นที่ 1 แล้วถ้าคุณวางแผนYกับx 1 , จุดเหล่านี้จะตอบสนองความสมการ:x2=1y^x1
y^=2x1+5(1)+3=2x1+8
ดังนั้นพวกเขาจะต้องนอนอยู่บนแนวลาดชัน 2 และกับตัด 8y
ตอนนี้ใช้จุดเหล่านั้นที่ 2 เมื่อคุณวางแผนYกับx 1แล้วจุดเหล่านี้ตอบสนอง:x2=2y^x1
y^=2x1+5(2)+3=2x1+13
นั่นก็คือเส้นของความชัน 2 และกับ -intercept 13 คุณสามารถตรวจสอบด้วยตัวคุณเองว่าถ้าx 2 = 3คุณก็จะได้อีกเส้นของความชัน 2 และy- จุดตัดคือ 18yx2=3y
เราเห็นว่าคะแนนที่มีค่าต่างกันของจะอยู่บนเส้นที่ต่างกัน แต่ทั้งหมดมีการไล่ระดับสีเดียวกัน: ความหมายของสัมประสิทธิ์ของ2 x 1ในสมการการถดถอยดั้งเดิมคือceteris paribusคือการทำนายค่าคงที่อื่น เพิ่มขึ้นในหน่วยx 1เพิ่มคาดการณ์การตอบสนองเฉลี่ยปีสองคันขณะที่ความหมายของการสกัดกั้นของ3ในสมการถดถอยเป็นอย่างนี้เมื่อx 1 = 0และx 2 = 0แล้วการตอบสนองเฉลี่ยที่คาดการณ์ไว้คือ3x22x1x1y^3x1=0x2=03. แต่ไม่ทั้งหมดคะแนนของคุณมีเหมือนกันซึ่งหมายความว่าพวกเขาอยู่บนเส้นที่มีความแตกต่างกันตัด - บรรทัดจะมีเพียงตัด3สำหรับจุดเหล่านั้นที่x 2 = 0 ดังนั้นแทนที่จะเห็นเพียงบรรทัดเดียวคุณอาจเห็น (หากมีค่าเฉพาะของx 2ที่เกิดขึ้นเช่นถ้าx 2เป็นจำนวนเต็มเสมอ) ชุดของ "เส้นริ้ว" ในแนวทแยง พิจารณาข้อมูลต่อไปนี้ที่Y = 2 x 1 + 5 x 2 + 3x23x2=0x2x2y^=2x1+5x2+3
ที่นี่มี "ลายเส้น" ที่สังเกตได้ ทีนี้ถ้าผมวาดในจุดเหล่านั้นซึ่งเป็นวงกลมสีแดง, x 2 = 2เป็นสามเหลี่ยมทองคำและx 2 = 3เป็นสี่เหลี่ยมสีน้ำเงินที่เราเห็นว่ามันอยู่ในสามบรรทัดที่แตกต่างกัน, ความชัน 2 ทั้งหมดและy-ตัด 8, 13 และ 18 ตามที่คำนวณไว้ข้างต้น แน่นอนว่าถ้าx 2ไม่ได้ถูก จำกัด ให้ใช้ค่าจำนวนเต็มหรือสถานการณ์นั้นซับซ้อนโดยตัวแปรตัวทำนายอื่น ๆ ที่รวมอยู่ในการถดถอยแล้วเส้นทแยงมุมจะมีความชัดเจนน้อยลง แต่ก็ยังคงเป็นกรณีที่แต่ละจุดที่ทำนายไว้ อยู่บนเส้นแยกx2=1x2=2x2=3yx2ขึ้นอยู่กับค่าของทำนายอื่น ๆ ไม่ได้แสดงบนกราฟ
yx1x2y^=2x1+5x2+3yx1x2yx1แกนจะชี้ไปทางขวาของคุณ
yy
y^x1x2x2y^x1x2yx1 x2yx1
รหัสสำหรับแปลง R
library(scatterplot3d)
data.df <- data.frame(
x1 = c(0,2,4,5,8, 1,3,4,7,8, 0,3,5,6,7),
x2 = c(1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3)
)
data.df$yhat <- with(data.df, 2*x1 + 5*x2 + 3)
data1.df <- data.df[data.df$x2==1,]
data2.df <- data.df[data.df$x2==2,]
data3.df <- data.df[data.df$x2==3,]
#Before lines added
mar.default <- c(5,4,4,2) + 0.1
par(mar = mar.default + c(0, 1, 0, 0))
plot(data.df[c("x1","yhat")], main=expression("Predicted y against "*x[1]),
xlab=expression(x[1]), ylab=expression(hat(y)))
#After lines added
plot(data.df[c("x1","yhat")], main=expression("Predicted y against "*x[1]),
xlab=expression(x[1]), ylab=expression(hat(y)), pch=".")
points(data1.df[c("x1","yhat")], pch=19, col="red")
abline(lm(yhat ~ x1, data=data1.df), col="red")
points(data2.df[c("x1","yhat")], pch=17, col="gold")
abline(lm(yhat ~ x1, data=data2.df), col="gold")
points(data3.df[c("x1","yhat")], pch=15, col="blue")
abline(lm(yhat ~ x1, data=data3.df), col="blue")
#3d plot
myPlot <- scatterplot3d(data.df, pch=".", xlab=expression(x[1]),
ylab=expression(x[2]), zlab=expression(hat(y)),
main=expression("Predicted y against "*x[1]*" and "*x[2]))
myPlot$plane3d(Intercept=3, x.coef=2, y.coef=5, col="darkgrey")
myPlot$points3d(data1.df, pch=19, col="red")
myPlot$points3d(data2.df, pch=17, col="gold")
myPlot$points3d(data3.df, pch=15, col="blue")
print(myPlot)