วิธีรับตาราง ANOVA พร้อมข้อผิดพลาดมาตรฐานที่มีประสิทธิภาพ?


10

ฉันใช้การถดถอย OLS แบบรวมกลุ่มโดยใช้แพ็คเกจ plm ใน R แม้ว่าคำถามของฉันจะเกี่ยวกับสถิติพื้นฐานมากขึ้นดังนั้นฉันจึงลองโพสต์ที่นี่ก่อน)

เนื่องจากผลการถดถอยของฉันให้ผลตกค้างแบบ heteroskedastic ฉันต้องการลองใช้ข้อผิดพลาดมาตรฐานที่มีประสิทธิภาพแบบ เป็นผลมาจากcoeftest(mod, vcov.=vcovHC(mod, type="HC0"))ฉันได้รับตารางที่มีการประมาณการข้อผิดพลาดมาตรฐานค่า t และค่า p สำหรับตัวแปรอิสระแต่ละตัวซึ่งโดยทั่วไปแล้วเป็นผลการถดถอยที่ "แข็งแกร่ง" ของฉัน

สำหรับการพูดคุยถึงความสำคัญของตัวแปรต่าง ๆ ฉันต้องการพล็อตการแบ่งปันความแปรปรวนที่อธิบายโดยตัวแปรอิสระแต่ละตัวดังนั้นฉันต้องการผลรวมกำลังสองตามลำดับ อย่างไรก็ตามการใช้ฟังก์ชั่นaov()ฉันไม่รู้ว่าจะบอกให้ R ใช้ข้อผิดพลาดมาตรฐานที่มีประสิทธิภาพได้อย่างไร

ตอนนี้คำถามของฉันคือฉันจะรับตาราง ANOVA / ผลรวมของกำลังสองที่อ้างถึงข้อผิดพลาดมาตรฐานที่มีประสิทธิภาพได้อย่างไร เป็นไปได้หรือไม่ที่จะคำนวณตามตาราง ANOVA จากการถดถอยด้วยข้อผิดพลาดมาตรฐานปกติ

แก้ไข:

กล่าวอีกนัยหนึ่งและไม่สนใจปัญหา R- ของฉัน:

หาก Rไม่ได้รับผลกระทบจากการใช้ข้อผิดพลาดมาตรฐานที่มีประสิทธิภาพการสนับสนุนที่เกี่ยวข้องเพื่ออธิบายความแปรปรวนโดยตัวแปรอธิบายที่แตกต่างกันจะไม่เปลี่ยนแปลงหรือไม่2

แก้ไข:

ใน R aov(mod)ให้ตาราง ANOVA ที่ถูกต้องสำหรับ panelmodel (plm) จริงหรือไม่?

คำตอบ:


12

ANOVA ในตัวแบบการถดถอยเชิงเส้นเทียบเท่ากับการทดสอบ Wald (และการทดสอบอัตราส่วนความน่าจะเป็น) ของโมเดลที่ซ้อนกันที่สอดคล้องกัน ดังนั้นเมื่อคุณต้องการดำเนินการทดสอบที่สอดคล้องกันโดยใช้ข้อผิดพลาดมาตรฐาน heteroskedasticity-สอดคล้อง (HC) นี้ไม่สามารถได้รับจากการสลายตัวของผลบวกของสี่เหลี่ยม แต่คุณสามารถดำเนินการทดสอบ Wald โดยใช้ประมาณการ HC ความแปรปรวนร่วม แนวคิดนี้ใช้ทั้งในAnova()และlinearHypothesis()จากcarแพ็คเกจcoeftest()และwaldtest()จากlmtestแพ็คเกจ สามหลังสามารถใช้กับplmวัตถุได้

ตัวอย่างง่าย ๆ (ถึงแม้จะไม่ค่อยน่าสนใจ / มีความหมาย) ก็มีดังต่อไปนี้ เราใช้แบบจำลองมาตรฐานจาก?plmหน้าคู่มือและต้องการที่จะดำเนินการทดสอบ Wald สำหรับความสำคัญของทั้งสองและlog(pcap) unempเราต้องการแพ็คเกจเหล่านี้:

library("plm")
library("sandwich")
library("car")
library("lmtest")

รูปแบบ (ภายใต้ทางเลือก) คือ:

data("Produc", package = "plm")
mod <- plm(log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp,
  data = Produc, index = c("state", "year"))

ก่อนอื่นเรามาดูการทดสอบ Wald marginal กับข้อผิดพลาดมาตรฐาน HC สำหรับสัมประสิทธิ์แต่ละตัว:

coeftest(mod, vcov = vcovHC)

t test of coefficients:

            Estimate Std. Error t value  Pr(>|t|)    
log(pc)    0.2920069  0.0617425  4.7294 2.681e-06 ***
log(emp)   0.7681595  0.0816652  9.4062 < 2.2e-16 ***
log(pcap) -0.0261497  0.0603262 -0.4335   0.66480    
unemp     -0.0052977  0.0024958 -2.1226   0.03411 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

จากนั้นเราทำการทดสอบ Wald สำหรับทั้งสองlog(pcap)และunemp:

linearHypothesis(mod, c("log(pcap)", "unemp"), vcov = vcovHC)

Linear hypothesis test

Hypothesis:
log(pcap) = 0
unemp = 0

Model 1: restricted model
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp

Note: Coefficient covariance matrix supplied.

  Res.Df Df  Chisq Pr(>Chisq)  
1    766                       
2    764  2 7.2934    0.02608 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

หรือเราสามารถจัดวางโมเดลภายใต้สมมติฐานว่าง ( mod0พูด) โดยไม่มีสัมประสิทธิ์สองตัวจากนั้นเรียกwaldtest():

mod0 <- plm(log(gsp) ~ log(pc) + log(emp),
  data = Produc, index = c("state", "year"))
waldtest(mod0, mod, vcov = vcovHC)

Wald test

Model 1: log(gsp) ~ log(pc) + log(emp)
Model 2: log(gsp) ~ log(pc) + log(emp) + log(pcap) + unemp
  Res.Df Df  Chisq Pr(>Chisq)  
1    766                       
2    764  2 7.2934    0.02608 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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

หมายเหตุ: หากคุณจัดหาการประมาณเมทริกซ์ความแปรปรวนร่วม (เช่นเมทริกซ์แบบvocvHC(mod)) แทนการประมาณเมทริกซ์ความแปรปรวนร่วม (เช่นฟังก์ชันแบบvocvHC) ให้ตรวจสอบให้แน่ใจว่าคุณจัดหาการประมาณเมทริกซ์ความแปรปรวนร่วม HC ของแบบจำลองทางเลือกเช่น แบบจำลองที่ไม่ จำกัด


1
หากฉันเข้าใจถูกต้องการทดสอบ Wald แสดงว่าการรวมตัวแปรบางอย่างนั้นมีนัยสำคัญหรือไม่ แต่มีการวัดว่าพวกเขาปรับปรุงแบบจำลองจริง ๆ เช่นผลรวมของสี่เหลี่ยมจัตุรัสหรือไม่
Aki

ฉันจะใช้ข้อผิดพลาดมาตรฐาน HAC ได้อย่างไร ฉันลอง coeftest (mod, vcov = vcovHAC) แต่ได้รับข้อความแสดงข้อผิดพลาดว่า "ไม่มีวิธีการที่ใช้สำหรับ 'estfun' ที่ใช้กับวัตถุของคลาส" c ('plm', 'panelmodel') "ดูเหมือนว่าฉันต้องการคำนวณน้ำหนัก หรือฟังก์ชั่นการประมาณค่าก่อนคุณจะแนะนำวิธีการแบบไหน
Aki

ในขณะที่plmแพคเกจมีวิธีการสำหรับvcovHC()ทั่วไปจากแพคเกจก็ไม่ได้ให้วิธีการในการsandwich vcovHAC()แต่plmมาพร้อมกับฟังก์ชั่นเฉพาะสำหรับการคำนวณเมทริกซ์ความแปรปรวนร่วมในแบบจำลองพาเนลที่อาจรวมความสัมพันธ์แบบอนุกรมไว้ด้วย ดูvcovNW()หรือในแพคเกจvcovSCC() plm
Achim Zeileis

ขอบคุณ! เท่าที่ฉันเข้าใจฟังก์ชั่นทั้งสองเกี่ยวข้องกับ autocorrelation-strong SE มีฟังก์ชั่นใดบ้างที่สามารถใช้ได้ทั้ง SE แบบ heteroscedasticity และ autocorrelation-strong SE?
Aki

ทั้งสามฟังก์ชั่น ( vcovHAC, vcovNW, vcovSCC) เป็น _H_eteroskedasticity และ _A_utocorrelation _C_onsistent ... นั่นคือสิ่งที่ HAC ย่อมาจาก
Achim Zeileis

2

สิ่งนี้สามารถทำได้ด้วยAnovaฟังก์ชั่นในcarแพ็คเกจ ดูคำตอบที่ยอดเยี่ยมนี้เพื่อดูรายละเอียดเพิ่มเติมและทบทวนเทคนิคอื่น ๆ สำหรับการจัดการกับความแตกต่างใน ANOVA


ขอบคุณ. ปัญหาคือว่า Anova () ดูเหมือนจะไม่ทำงานกับรุ่นของ type plm (panelmodel)
Aki

@Aki ถ้าฉันไม่เข้าใจผิดว่า Pooled OLS นั้นเทียบเท่ากับ OLS ธรรมดาตามที่กล่าวไว้ในบทความ: cran.r-project.org/web/packages/plm/vignettes/plm.pdf
shadowtalker

@Aki แต่ดูเหมือนคุณอาจสนใจโมเดล ANOVA ที่สมบูรณ์ยิ่งขึ้น มีตัวอย่าง R ที่นี่: stats.stackexchange.com/questions/3874/…
shadowtalker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.