ค่าสัมประสิทธิ์แบบทดสอบ (ความชันถดถอย) เทียบกับค่าบางค่า


20

ใน R เมื่อฉันมี (ทั่วไป) โมเดลเชิงเส้นตรง ( lm, glm, gls, glmm, ... ) วิธีที่ฉันสามารถทดสอบค่าสัมประสิทธิ์ (ถดถอยลาด) กับค่าอื่น ๆ ที่ไม่ใช่ 0? ในบทสรุปของแบบจำลองนั้นมีการรายงานผลการทดสอบค่าสัมประสิทธิ์ t-test โดยอัตโนมัติ แต่สำหรับการเปรียบเทียบกับ 0 ฉันต้องการเปรียบเทียบกับค่าอื่น

ฉันรู้ว่าฉันสามารถใช้เคล็ดลับที่มี reparametrizing y ~ xเป็นy - T*x ~ xที่Tเป็นค่าการทดสอบและใช้รูปแบบ reparametrized นี้ แต่ฉันหาทางออกที่ง่ายที่จะเป็นไปได้ที่การทำงานในรูปแบบเดิม


คำตอบ:


17

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

รับค่าสัมประสิทธิ์และข้อผิดพลาดมาตรฐาน

Compute ) DF สำหรับเสื้อเป็นเช่นเดียวกับพวกเขาจะเป็นสำหรับการทดสอบกับH0:β=0t=β^βH0s.e.(β^)tH0:β=0


1
ขอบคุณ Glen ฉันรู้เรื่องนี้จาก [คำตอบที่ยอดเยี่ยมนี้] แต่ฉันจะรับค่า p จากค่า t ได้อย่างไร
อยากรู้อยากเห็น

2
@Curiouspt()
เลียนแบบ

@ เป็นจริง: ตามที่ Affine บอกว่าฟังก์ชั่น R pt - หรืออย่างอื่นที่ให้คุณค่ากับc cs แพ็คเกจจำนวนมากมีสิ่งเหล่านี้และมีตาราง t ที่พร้อมใช้งานอย่างกว้างขวาง
Glen_b -Reinstate Monica

มันจะดีถ้า lm, lmer และอื่น ๆ ยอมรับพารามิเตอร์ทดสอบที่แตกต่างจากศูนย์โดยตรง
skan

@ สามารถเป็นรหัส R บรรทัดเดียวเพื่อรับค่า p มันจะเป็นเรื่องง่ายที่จะเขียนฟังก์ชั่นเล็ก ๆ น้อย ๆ เพื่อให้ได้ผลลัพธ์ของ summary.lm และสร้างตารางใหม่ตามข้อกำหนดที่แน่นอนของคุณ
Glen_b -Reinstate Monica

10

คุณสามารถใช้การทดสอบ t แบบง่าย ๆ ตามที่เสนอโดย Glen_b หรือการทดสอบ Wald ทั่วไป

Rβ=Qβเป็นค่าสัมประสิทธิ์ regresison มาตรฐาน

ในตัวอย่างของคุณที่คุณมีสมมติฐานเพียงข้อเดียวในหนึ่งพารามิเตอร์ R คือเวกเตอร์แถวที่มีค่าหนึ่งสำหรับพารามิเตอร์ในคำถามและศูนย์อื่น ๆ และ q เป็นสเกลาร์ที่มีข้อ จำกัด ในการทดสอบ

ในการวิจัยคุณสามารถเรียกใช้การทดสอบ Wald ด้วยฟังก์ชั่linearHypothesis ()จากแพคเกจรถ ให้เราบอกว่าคุณต้องการตรวจสอบว่าสัมประสิทธิ์ที่สอง (ระบุโดยอาร์กิวเมนต์hypothesis.matrix ) แตกต่างจาก 0.1 (อาร์กิวเมนต์rhs ):

reg <- lm(freeny)
coef(reg)

# wald test for lag.quarterly.revenue =0.1
>library(car)
>linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0.1)
#skip some result, look at last value on last row, of Pr(>F) 
  Res.Df       RSS Df  Sum of Sq      F Pr(>F)
1     35 0.0073811                            
2     34 0.0073750  1 6.0936e-06 0.0281 0.8679

สำหรับการทดสอบแบบ t ฟังก์ชันนี้ใช้การทดสอบแบบทีแสดงโดย Glen_b:

ttest <- function(reg, coefnum, val){
  co <- coef(summary(reg))
  tstat <- (co[coefnum,1]-val)/co[coefnum,2]
  2 * pt(abs(tstat), reg$df.residual, lower.tail = FALSE)
}

> ttest(reg, 2,0.1)
[1] 0.8678848

ขอให้เราตรวจสอบให้แน่ใจว่าเราได้ขั้นตอนที่ถูกต้องโดยการเปรียบเทียบ Wald, t-test ของเรา, และ T-test เริ่มต้นสำหรับสมมติฐานมาตรฐานที่สัมประสิทธิ์ที่สองคือศูนย์:

> linearHypothesis(reg, hypothesis.matrix = c(0, 1, rep(0,3)), rhs=0)[["Pr(>F)"]][2]
[1] 0.3904361
> ttest(reg, 2,0)
[1] 0.3904361
## The 'right' answer from R:
> coef(summary(reg))[2,4]
[1] 0.3904361

คุณควรได้ผลลัพธ์เดียวกันกับสามขั้นตอน


ดูดี! คุณช่วยอธิบายhypothesis.matrixพารามิเตอร์ได้มั้ย
อยากรู้อยากเห็น

ฉันไม่แน่ใจว่าการทดสอบ Wald ทำหรือไม่ ฉันตั้งใจจะใช้การทดสอบแบบปกติที่รายงานตามมาตรฐานพร้อมกับพารามิเตอร์ แต่ไม่ใช่ด้วย 0 แต่มีค่าอื่น
อยากรู้อยากเห็น

@ หวังว่ามันชัดเจนขึ้นแล้วตอนนี้?
Matifou

3

ในท้ายที่สุดทางออกที่ง่ายที่สุดก็คือการทำ reparametrization:

gls(I(y - T*x) ~ x, ...)

จะให้ผลลัพธ์ที่เหมือนกันหรือไม่
skan

แต่คุณกำลังย่อยสิ่งที่ไม่เป็นอิสระ มันจะไม่เป็นปัญหากับสมมติฐานอย่างน้อยกำลังสองหรือกับ collinearity? มันแตกต่างจาก lm อย่างไร (y ~ x + + offset (T * x))
skan

1
@ สามารถการถดถอยมีเงื่อนไขใน x ไม่มีการพึ่งพาอาศัยกันที่นั่น; มันควรจะเหมือนกับการใช้ offset
Glen_b -Reinstate Monica
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.