การสร้างแบบจำลองข้อมูลนับที่ตัวแปรออฟเซ็ตเป็น 0 สำหรับการสังเกตบางอย่าง


9

ฉันพยายามช่วยนักเรียนของเพื่อนร่วมงาน นักเรียนสังเกตและนับพฤติกรรมของนก (จำนวนสาย) ในชุดทดลอง จำนวนการโทรที่เกี่ยวข้องกับนกที่สังเกตได้เฉพาะในระหว่างการทดสอบแต่ละครั้งไม่สามารถระบุได้ แต่สามารถนับจำนวนนกที่สนับสนุนการบันทึกการโทรได้ ดังนั้นข้อเสนอแนะครั้งแรกของฉันคือการใส่หมายเลขของนกเป็นระยะชดเชยในรูปแบบ Poisson GLM เพราะฉะนั้นเราจะกระชับจำนวนที่คาดหวังของสายต่อนก

ปัญหานี้คือว่าในช่วงเวลาที่สังเกตหลายครั้งไม่มีนก (และดังนั้นจึงไม่มีสาย) ถูกสังเกต ซอฟแวร์ (R ในกรณีนี้) บ่นเพราะ (R บ่นเกี่ยวกับการที่มีข้อมูล แต่ที่เป็นอย่างหมดจดผลมาจากการถูก)เข้าสู่ระบบ(0)=-INFy-Infoffset(log(nbirds))-Inf

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

ต้องลองสิ่งนี้โดยใช้แพ็คเกจpsclใน R แต่ฉันยังคงได้รับข้อผิดพลาดเดิม:

mod1 <- hurdle(NumberCallsCOPO ~ Condition * MoonVis +
               offset(log(NumberCOPO)) | 1, data = Data,
               dist = "poisson")

เนื่องจากรหัส R เดียวกัน ( glm.fitใช้ภายในhurdle()เพื่อให้พอดีกับส่วนของตัวนับจำนวน) กำลังตรวจสอบ-Infแม้ว่าฉันจะไม่คิดว่ามันจะส่งผลกระทบต่อโมเดลที่เหมาะสำหรับการสังเกตเหล่านั้น (นั่นเป็นข้อสมมติฐานที่ถูกต้องหรือไม่?)

ฉันสามารถสร้างแบบจำลองให้พอดีโดยการเพิ่มจำนวนเล็กน้อยลงในNumberCOPO(พูด0.0001) แต่นี่เป็นสิ่งที่เหลวไหลที่สุด

การเพิ่มการแก้ไขความต่อเนื่องเล็ก ๆ นี้ในทางปฏิบัติจะทำได้หรือไม่? หากไม่มีวิธีการอื่นที่เราควรพิจารณาเมื่อจัดการข้อมูลที่เราอาจต้องการใช้ offset ในโมเดล Poisson ที่ตัวแปร offset สามารถรับค่า 0 ได้ ตัวอย่างทั้งหมดที่ฉันเจอเป็นสถานการณ์ที่ตัวแปรออฟเซ็ต 0 ไม่สามารถเป็นไปได้


2
ในกรณีนี้ดูเหมือนว่าแบบจำลองของคุณกำลังพยายามปรับให้เข้ากับคำพูดซ้ำซาก: หากมีนก 0 ตัวที่สังเกตเห็นคุณจะได้ยินเสียงนก 0 ตัวด้วย ฉันไม่มั่นใจว่าการปรับโมเดลให้เป็นแถวที่มีออฟเซ็ต 0 เหมาะสมในกรณีนี้
Sycorax พูดว่า Reinstate Monica

ขอบคุณที่ฉันกล่าวถึงด้านล่างนั่นคือปฏิกิริยาทางเดินอาหารของฉันเช่นกัน ฉันได้ขยายคำตอบของ Barry (Spacedman) เล็กน้อยด้านล่าง
Gavin Simpson

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

คำตอบ:


5

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


นั่นคือปฏิกิริยาทางเดินอาหารของฉันเช่นกัน อาจจะคิดมากเรื่องนี้ แต่ฉันสามารถจินตนาการถึงสถานการณ์ที่นกเฝ้าสังเกต แต่ไม่มีสายเรียกเข้า ดังนั้นรูปแบบอุปสรรค์ แต่ภายในยังคงใช้glm.fitซึ่งโยนการโยกเยกแม้ว่าค่าเหล่านั้นจะไม่นับในส่วนการนับของแบบจำลอง ฉันคิดว่าฉันสามารถทำแบบจำลองอุปสรรค์ด้วยมือ แต่ฉันไม่ต้องการทำสิ่งนี้เพียงแค่แนะนำนักเรียน
Gavin Simpson

3
หากคุณมีจำนวนมากของศูนย์สายทำจากไม่ใช่ศูนย์นกสังเกตที่คุณอาจต้องการที่จะทำรูปแบบ Poisson ศูนย์ที่สูงขึ้น (หรือคล้ายกัน) แต่ที่แตกต่างกันมากจากศูนย์นกสังเกตเมื่อคุณมีความสนใจในจำนวนของสายต่อนก
Spacedman

ในกรณีนี้ฉันไม่คิดว่าเรามีหลายอย่าง การทิ้งข้อมูลที่มีการสังเกตจากนก 0 ตัวและปรับให้เหมาะสมกับทวินามลบก็น่าจะเป็นก้าวแรกที่สมเหตุสมผล
Gavin Simpson

2

ใน Poisson GLM การชดเชยเป็นเพียงการเพิ่มสเกลของอัตราปัวซงในแบบจำลอง - และปัวซงที่มีอัตราศูนย์ไม่เป็นประโยชน์หรือแม้แต่มีความหมาย ...

นั่นเป็นเหตุผลที่ Spacedman ถูกต้อง!


0

เพียงแค่ลองทำมัน (Hurdle) "ด้วยมือ (สำหรับ" การสอน / นักกายกรรม "นักเขียนบทกลอน): แบ่งเป็นส่วนทวินามและส่วนของการแข่งขันและบันทึกการปรับตัวที่เหมาะสมและความสุขแยกออกจากกัน! / Gamma ... , GAM คุณไม่ต้องการ var "offset" ที่นี่ดูเหมือนฉัน ;-)

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