ค่าที่ทำนายไว้ส่งคืนโดยฟังก์ชัน Pred () ใน R เมื่อใช้ข้อมูลต้นฉบับเป็นอินพุตคืออะไร


11

หลังจากรันการถดถอยของแบบฟอร์มreg <- lm(y ~ x1 + x2, data=example)บนชุดข้อมูลฉันสามารถรับค่าที่ทำนายได้โดยใช้

predict(reg, example, interval="prediction", level=0.95)

ฉันสงสัยว่าค่าที่ทำนายไว้จริงหมายถึงอะไรเมื่อฉันใช้การถดถอยเพื่อทำนายชุดข้อมูลที่แท้จริง ฉันไม่ควรได้รับค่าดั้งเดิมหรือไม่?

คำตอบ:


18

โมเดลที่คุณกำลังทำงานด้วยจะใช้แบบฟอร์ม

Yผม=μ+β1x1ผม+β2x2ผม+εผม (1)

โดยที่เป็นคำผิดพลาดที่สันนิษฐานว่ามาจากการแจกแจงแบบปกติที่มีค่าเฉลี่ยศูนย์εผม

μ , β 1และเบต้า 2μ^β^1β^2

ทีนี้ถ้าคุณแก้ไขค่า covariate ภายในช่วงของพวกมันให้พูดและx 2 i , ค่าที่ทำนายสำหรับy ฉันจะได้จากการคำนวณx1ผมx2ผมYผม

Yผม=μ^+β^1x1ผม+β^2x2ผม (2)

หากแบบจำลองของคุณเหมาะสมกับข้อมูลของคุณอย่างสมบูรณ์แบบค่าที่คาดคะเนคือค่าจริง แต่โดยทั่วไปแล้วค่าไม่สามารถรับได้อย่างแน่นอนว่าเป็นการรวมกันแบบเส้นตรงของค่าx (" แบบจำลองทั้งหมดผิด แต่มีประโยชน์บางส่วน ") กล่าวอีกนัยหนึ่งความแปรปรวนของข้อผิดพลาดใน (1) ไม่ใช่ศูนย์โดยทั่วไป แต่โดยทั่วไปรูปแบบ (1) เป็นประมาณการที่ดีถ้าคลาดเคลื่อนY ฉัน - Y ฉัน (หรือรุ่นที่ปรับขนาดของเหล่านี้) เป็น "เล็ก"YxYผม-Yผม

แก้ไข

ในความคิดเห็นของคุณคุณถามว่าอะไรpredict()จริง นี่คือตัวอย่างง่ายๆ

    #generate a simple illustrative data set
> x <- runif(10)
> y <- 5 + 2.7 * x + rnorm(10, mean=0, sd=sqrt(0.15))
> 
>   #fit the model and store the coefficients
> regLin <- lm(y~x)
> coef <- coef(regLin)
> 
>   #use the predict() function
> y_star2 <- predict(regLin)
>   #use equation (2)
> y_star1 <- coef[1] + coef[2] * x
>   #compare
> cbind(y, y_star1, y_star2) 
          y  y_star1  y_star2
1  7.100217 6.813616 6.813616
2  6.186333 5.785473 5.785473
3  7.141016 7.492979 7.492979
4  5.121265 5.282990 5.282990
5  4.681924 4.849776 4.849776
6  6.102339 6.106751 6.106751
7  7.223215 7.156512 7.156512
8  5.158546 5.253380 5.253380
9  7.160201 7.198074 7.198074
10 5.555289 5.490793 5.490793

1
x1x2β0

@ocram แล้วฟังก์ชันทำนายจะทำอะไรเมื่อฉันใช้ชุดข้อมูลเดียวกันและสมการการถดถอยที่สอดคล้องกัน
upabove

@chl หมายความว่าการทำนายไม่ควรอยู่ในโมเดล glm (หรือ glm.nb) ที่มีตัวทำนายหมวดหมู่ใช่หรือไม่ ตัวอย่างเช่น: dat <- data.frame (y = as.numeric (c (10,15,12,1,0,2,180,200,188,181,3008288)), p = as.factor (c (ตัวแทน ("ใช่", 6), ตัวแทน) ("ไม่", 6)), t = as.factor (c (ตัวแทน ("tp1", 3), rep ("tp2", 3), rep) ("tp1", 3), rep ("tp2" , 3)))) ต้องการ (MASS) nb_fit <- glm.nb (y ~ p * t, data = dat) pre_fit <- ทำนาย (nb_fit, type = "response")
Arun

μβ0

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