การค้นหาค่าติดตั้งและทำนายสำหรับโมเดลเชิงสถิติ


12

สมมติว่าฉันมีข้อมูลต่อไปนี้และกำลังใช้โมเดลการถดถอย:

df=data.frame(income=c(5,3,47,8,6,5),
              won=c(0,0,1,1,1,0),
              age=c(18,18,23,50,19,39),
              home=c(0,0,1,0,0,1))

ในอีกด้านหนึ่งฉันใช้โมเดลเชิงเส้นเพื่อทำนายรายได้:

md1 = lm(income ~ age + home + home, data=df)

ประการที่สองฉันเรียกใช้แบบจำลอง logit เพื่อทำนายตัวแปรที่ชนะ:

md2 = glm(factor(won) ~ age + home, data=df, family=binomial(link="logit"))

สำหรับทั้งสองรุ่นฉันสงสัยว่าฉันจะสร้างตารางหรือกรอบข้อมูลด้วยหมวดการตอบสนองของผู้ทำนายค่าติดตั้งและค่าที่ทำนายรูปแบบได้อย่างไร

ดังนั้นสำหรับโมเดลเชิงเส้นบางอย่างเช่น:

age  fitted_income  predicted_income
18    3              5 
23    3              3
50    4              2
19    5              5
39    6              4

home   fitted_income    predicted_income
0       5               6       
1       3               9

หรือบางทีมันควรจะเป็นสำหรับแต่ละจุดข้อมูล ดังนั้นสำหรับจุดข้อมูล x_i ค่าติดตั้งและที่คาดการณ์คือ:

id   age  fitted_income  predicted_income
1     18    3              5 
2     23    3              3
3     50    4              2
4     19    5              5
5     39    6              4
  1. จากมุมมองทางสถิติกิจการดังกล่าวมีประโยชน์หรือไม่? ทำไมหรือทำไมไม่?

  2. สิ่งนี้สามารถทำได้ใน R? (ดูที่ชื่อ (md1) และพบสิ่งที่ฉันสามารถดึงออกมาจากแบบจำลอง แต่ยังไม่ได้ดำเนินการในอดีต)

ขอบคุณ!


1
เรื่อง # 2: stat.ethz.ch/R-manual/R-patched/library/stats/html/... Re # 1: มีประโยชน์สำหรับอะไร สิ่งที่คุณต้องการที่จะประสบความสำเร็จในที่สุด?
whuber

มีประโยชน์สำหรับการบอกว่าตัวแบบ "คาดการณ์ได้" สำหรับแต่ละจุดข้อมูลหรือไม่ ฉันต้องการดูแถว / รหัสใด ๆ และสามารถเปรียบเทียบค่าจริง / ค่าติดตั้งและค่าที่คาดการณ์ไว้เพื่อดูว่า "ถูกต้อง" เป็นอย่างไร
ATMathew

หากคุณต้องการสแกนตารางเพื่อดูว่าการตอบสนองที่แท้จริงนั้นแตกต่างกันไปอย่างไรกับ covariate ฉันคิดว่ามันอาจมีประโยชน์ ฉันไม่เข้าใจคำศัพท์ของคุณ ค่าติดตั้งและค่าที่คาดการณ์ควรจะเหมือนกัน สิ่งที่ควรแตกต่างกันคือค่าที่สังเกตและค่าติดตั้ง
Michael R. Chernick

2
ลองได้เช่น: x = cbind (df, md1 $ fitted.values) colnames (x) = c (colnames (df), "ทำนาย")
RioRaider

2
ความแตกต่างระหว่างค่าสังเกตและติดตั้งสามารถผ่านresidualsคำสั่งRใน ใช้cbindเพื่อเข้าร่วมกับ dataframe ดั้งเดิม
whuber

คำตอบ:


20

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

R> fitted(md2)
        1         2         3         4         5         6 
0.4208590 0.4208590 0.4193888 0.7274819 0.4308001 0.5806112 
R> predict(md2)
         1          2          3          4          5          6 
-0.3192480 -0.3192480 -0.3252830  0.9818840 -0.2785876  0.3252830

นั่นเป็นเพราะค่าเริ่มต้นสำหรับpredict.glm()คือการส่งคืนการคาดการณ์ในระดับของการทำนายเชิงเส้น เพื่อให้ได้ค่าติดตั้งเราต้องการใช้ฟังก์ชันผกผันของลิงก์กับค่าเหล่านั้น fitted()ทำเพื่อเราและเราสามารถรับค่าที่ถูกต้องโดยใช้predict()เช่นกัน:

R> predict(md2, type = "response")
        1         2         3         4         5         6 
0.4208590 0.4208590 0.4193888 0.7274819 0.4308001 0.5806112

เช่นเดียวกันกับresiduals()(หรือresid()); ค่าที่เก็บไว้ในmd2$residualsนั้นเป็นเศษเหลือจากการทำงานซึ่งไม่น่าจะเป็นสิ่งที่คุณต้องการ resid()วิธีช่วยให้คุณสามารถระบุชนิดของที่เหลือที่คุณต้องการและมีค่าเริ่มต้นที่มีประโยชน์

สำหรับglm()โมเดลสิ่งนี้จะพอเพียง:

R> data.frame(Age = df$age, Won = df$won, Fitted = fitted(md2))
  Age Won    Fitted
1  18   0 0.4208590
2  18   0 0.4208590
3  23   1 0.4193888
4  50   1 0.7274819
5  19   1 0.4308001
6  39   0 0.5806112

สิ่งที่คล้ายกันสามารถทำได้สำหรับlm()รูปแบบ:

R> data.frame(Age = df$age, Income = df$income, Fitted = fitted(md1))
  Age Income    Fitted
1  18      5  7.893273
2  18      3  7.893273
3  23     47 28.320749
4  50      8 -1.389725
5  19      6  7.603179
6  39      5 23.679251
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.