R เทียบเท่ากับตัวเลือกของคลัสเตอร์เมื่อใช้การถดถอยแบบทวินามลบ


10

ฉันพยายามจำลองการทำงานของเพื่อนร่วมงานและกำลังย้ายการวิเคราะห์จาก Stata ไปยัง R โมเดลที่เธอใช้เรียกใช้ตัวเลือก "cluster" ภายในฟังก์ชัน nbreg เพื่อจัดกลุ่มข้อผิดพลาดมาตรฐาน

ดูhttp://repec.org/usug2007/crse.pdfสำหรับคำอธิบายที่สมบูรณ์เกี่ยวกับสิ่งที่และเหตุผลของตัวเลือกนี้

คำถามของฉันคือวิธีการเรียกใช้ตัวเลือกเดียวกันนี้สำหรับการถดถอยทวินามลบภายใน R?

รูปแบบหลักในกระดาษของเรามีการระบุไว้ใน Stata ดังนี้

 xi: nbreg cntpd09 logpop08 pcbnkthft07 pccrunion07 urbanpop pov00 pov002 edu4yr ///
 black04 hispanic04 respop i.pdpolicy i.maxloan rollover i.region if isser4 != 1,   
 cluster(state)

และฉันได้แทนที่สิ่งนี้ด้วย

pday<-glm.nb(cntpd09~logpop08+pcbnkthft07+pccrunion07+urbanpop+pov00+pov002+edu4yr+
black04+hispanic04+respop+as.factor(pdpolicy)+as.factor(maxloan)+rollover+
as.factor(region),data=data[which(data$isser4 != 1),])

ซึ่งเห็นได้ชัดว่าขาดชิ้นส่วนข้อผิดพลาดของคลัสเตอร์

เป็นไปได้ไหมที่จะทำการจำลองแบบที่แน่นอน? ถ้าเป็นเช่นนั้นได้อย่างไร ถ้าไม่ทางเลือกที่เหมาะสมคืออะไร?

ขอบคุณ

[แก้ไข] ดังที่ระบุไว้ในความคิดเห็นฉันหวังว่าจะมีวิธีการแก้ปัญหาที่ไม่ได้นำฉันเข้าสู่อาณาจักรของโมเดลหลายระดับ ในขณะที่การฝึกอบรมของฉันช่วยให้ฉันเห็นว่าสิ่งเหล่านี้ควรเกี่ยวข้อง แต่ก็เป็นการก้าวกระโดดมากกว่าที่ฉันรู้สึกสบายใจ ฉันขุดและพบลิงก์นี้: http://landroni.wordpress.com/2012/06/02/fama-macbeth-and-cluster-robust-by-firm-and-time-standard-errors-in- R /

ชี้ไปที่รหัสที่ค่อนข้างตรงไปตรงมาเพื่อทำสิ่งที่ฉันต้องการ:

library(lmtest)
pday<-glm.nb(cntpd09~logpop08+pcbnkthft07+pccrunion07+urbanpop+pov00+pov002+edu4yr+
 black04+hispanic04+respop+as.factor(pdpolicy)+as.factor(maxloan)+rollover+
 as.factor(region),data=data[which(data$isser4 != 1),])
summary(pday)

coeftest(pday, vcov=function(x) vcovHC(x, cluster="state", type="HC1"))

สิ่งนี้ไม่ได้จำลองผลลัพธ์ที่ได้จากการวิเคราะห์ใน Stata แต่อาจเป็นเพราะมันถูกออกแบบมาให้ทำงานกับ OLS ไม่ใช่แบบทวินามลบ ดังนั้นการค้นหาจึงเกิดขึ้น คำแนะนำใด ๆ ที่ฉันไปผิดจะได้รับการชื่นชมมาก


3
คุณอาจพบว่าบันทึกของ Ben Bolkerมีประโยชน์ที่นี่
fmark


FYI ที่นี่เป็นคำจำกัดความของข้อผิดพลาดมาตรฐานที่แข็งแกร่งของ Stata พวกเขาดูเหมือนจะไม่ลำบากในการนำไปใช้ IMO คุณอาจจะดีกว่าด้วยข้อผิดพลาด bootstrapped หรือ jackknifed ต่อไป (ดูความช่วยเหลือเกี่ยวกับvce ) ฉันไม่สามารถแนะนำแพ็คเกจ R ใด ๆ ได้ ขอให้โชคดีในการหาคนมาแทน!
Andy W

ขอบคุณ @fmark - ความคิดเห็นที่มีประโยชน์มากดีกว่า "คำตอบ" ของฉันและฉันได้อัปเดตตามนั้นแล้ว
ปีเตอร์เอลลิส

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

คำตอบ:


4

เอกสารนี้แสดงวิธีรับคลัสเตอร์ SEs สำหรับการถดถอย glm:

http://dynaman.net/R/clrob.pdf


ฉันจะต้องให้มันเปรียบเทียบการทดสอบกับผลลัพธ์ stata แต่ดูเหมือนว่าสิ่งที่ฉันหวังไว้
csfowler

1

นี่ไม่ใช่คำตอบที่น่าพอใจอย่างสมบูรณ์ ...

ฉันไม่ได้ลองด้วยตัวเอง แต่ดูเหมือนว่าแพ็คเกจ glmmADMBอาจทำในสิ่งที่คุณต้องการ

ฉันจะเหน็บแนมจากความคิดเห็นของ @ fmark เกี่ยวกับคำถามและเห็นด้วยกับเขาว่าบันทึกของ Ben Bolkerมีประโยชน์เช่นเดียวกับคำถามก่อนหน้านี้ซึ่งไม่ซ้ำกันแน่นอน แต่ครอบคลุมประเด็นที่คล้ายกันมาก

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