ทำไมค่าสัมประสิทธิ์การถดถอย rlm () ประมาณต่างจาก lm () ใน R?


15

ฉันกำลังใช้ rlm ในแพ็คเกจ R MASS เพื่อถดถอยโมเดลเชิงเส้นหลายตัวแปร มันใช้งานได้ดีสำหรับตัวอย่างจำนวนหนึ่ง แต่ฉันได้รับค่าสัมประสิทธิ์เสมือนสำหรับรุ่นเฉพาะ:

Call: rlm(formula = Y ~ X1 + X2 + X3 + X4, data = mymodel, maxit = 50, na.action = na.omit)
Residuals:
       Min         1Q     Median         3Q        Max 
-7.981e+01 -6.022e-03 -1.696e-04  8.458e-03  7.706e+01 

Coefficients:
             Value    Std. Error t value 
(Intercept)    0.0002   0.0001     1.8418
X1             0.0004   0.0000    13.4478
X2            -0.0004   0.0000   -23.1100
X3            -0.0001   0.0002    -0.5511
X4             0.0006   0.0001     8.1489

Residual standard error: 0.01086 on 49052 degrees of freedom
  (83 observations deleted due to missingness)

สำหรับการเปรียบเทียบค่าสัมประสิทธิ์เหล่านี้คำนวณโดย lm ():

Call:
lm(formula = Y ~ X1 + X2 + X3 + X4, data = mymodel, na.action = na.omit)

Residuals:
    Min      1Q  Median      3Q     Max 
-76.784  -0.459   0.017   0.538  78.665 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  -0.016633   0.011622  -1.431    0.152    
X1            0.046897   0.004172  11.240  < 2e-16 ***
X2           -0.054944   0.002184 -25.155  < 2e-16 ***
X3            0.022627   0.019496   1.161    0.246    
X4            0.051336   0.009952   5.159  2.5e-07 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

Residual standard error: 2.574 on 49052 degrees of freedom
  (83 observations deleted due to missingness)
Multiple R-squared: 0.0182, Adjusted R-squared: 0.01812 
F-statistic: 227.3 on 4 and 49052 DF,  p-value: < 2.2e-16 

พล็อต lm ไม่แสดงค่าผิดปกติสูงเป็นพิเศษใด ๆ ตามที่วัดได้จากระยะทางของ Cook:

lm การวินิจฉัย

แก้ไข

สำหรับการอ้างอิงและหลังจากยืนยันผลลัพธ์ตามคำตอบที่ได้รับจากมาโครคำสั่ง R เพื่อตั้งค่าพารามิเตอร์การปรับแต่งkใน Huber estimator คือ ( k=100ในกรณีนี้):

rlm(y ~ x, psi = psi.huber, k = 100)

ข้อผิดพลาดมาตรฐานที่เหลือรวมกับข้อมูลอื่นทำให้ดูเหมือนว่าrlmฟังก์ชั่นน้ำหนักกำลังทำการสำรวจเกือบทั้งหมด คุณแน่ใจหรือว่ามันคือ Y ตัวเดียวกันในการถดถอยสองครั้ง? (เพียงตรวจสอบ ... ) ลองใช้สายmethod="MM"ของคุณrlmแล้วลอง (หากล้มเหลว) psi=psi.huber(k=2.5)(2.5 ผิดพลาดยิ่งใหญ่กว่าค่าเริ่มต้น 1.345) ซึ่งกระจายขอบเขตที่lmคล้ายกันของฟังก์ชันน้ำหนัก
jbowman

@ jbowman Y ถูกต้อง เพิ่มวิธีการ MM สัญชาตญาณของฉันเหมือนกับที่คุณพูดถึง ส่วนที่เหลือของรุ่นนี้มีขนาดค่อนข้างเล็กเมื่อเทียบกับรุ่นอื่นที่ฉันได้ลอง ดูเหมือนว่าวิธีการจะยกเลิกการสังเกตส่วนใหญ่
Robert Kubrick

1
@RobertKubrick คุณเข้าใจว่าการตั้งค่า k เป็น 100 หมายความว่าอย่างไร
user603

จากสิ่งนี้: หลายค่า R-squared: 0.0182, R-squared ที่ปรับแล้ว: 0.01812คุณควรตรวจสอบแบบจำลองของคุณอีกครั้ง Outliers, การเปลี่ยนแปลงของการตอบสนองหรือตัวทำนาย หรือคุณควรพิจารณาโมเดลที่ไม่ใช่เชิงเส้น Predictor X3 ไม่สำคัญ สิ่งที่คุณทำไม่ใช่แบบจำลองเชิงเส้นที่ดี
Marija Milojevic

คำตอบ:


15

rlm()Mlm()

M

Σผม=1nρ(Yผม-Xผมβσ)

βYผมผมXผมผม

ρ(x)=x2
rlm()M

ρ(x)={12x2if |x|kk|x|12k2if |x|>k.

krlm()k=1.345

แก้ไข:จากพล็อต QQ ที่แสดงด้านบนดูเหมือนว่าคุณมีการกระจายข้อผิดพลาดที่ยาวมาก นี่เป็นสถานการณ์ประเภทที่ตัวประเมิน M ของ Huber ออกแบบมาสำหรับและในสถานการณ์นั้นสามารถให้การประมาณที่แตกต่างกันได้:

ρ|x|<k|x|>k


ฉันได้ลองรุ่นอื่น ๆ หลายแห่ง (จำนวนการสังเกตที่เท่ากัน, IVs เดียวกัน) และค่าสัมประสิทธิ์จะค่อนข้างคล้ายคลึงกันระหว่าง rlm และ lm ต้องมีบางอย่างในชุดข้อมูลนี้โดยเฉพาะที่สร้างความแตกต่างมากในค่าสัมประสิทธิ์
Robert Kubrick

1
k

1
k=1.5,2,2.5,3,3.5,4psi.huberklmrlm
jbowman

1
สำหรับข้อมูลที่เพิ่มเข้ามา @jbowman - สิ่งเหล่านี้เป็นความคิดเห็นที่มีประโยชน์ เกี่ยวกับความคิดเห็นสุดท้ายของคุณการสังเกตขนาดใหญ่เหล่านั้นไม่ได้ถูกโยนออกไปอย่างแน่ชัดอิทธิพลของพวกเขากำลังถูกลดทอนลง (อย่างที่ควรจะเป็น) ใช่ไหม?
มาโคร

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