ฉันควรใช้การชดเชยสำหรับ Poisson GLM ของฉันหรือไม่


11

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

model1 <- glm(g_den ~ method + site + depth, poisson)

ตัวแปรทำนาย 3 ตัวของฉันคือวิธีเว็บไซต์และความลึกซึ่งฉันสั่งเป็นปัจจัยเมื่อฉันป้อนพวกเขา

ตัวแปรการตอบสนองของฉันคือความอุดมสมบูรณ์ของปลากะรัง, ความหนาแน่นของปลาเก๋าและเหมือนกันสำหรับกลุ่มปลาอื่น ๆ ฉันทราบว่าความหนาแน่นไม่ใช่จำนวนเต็มและเป็นข้อมูลตัวเลขเช่น 1.34849 ตอนนี้ฉันได้รับข้อผิดพลาดนี้:

In dpois(y, mu, log = TRUE) : non-integer x = 0.037500

ฉันอ่านมาแล้วหลายคนแนะนำให้ใช้การชดเชยนี่เป็นสิ่งที่แนะนำให้ทำมากที่สุดหรือไม่?


1
นี่ไม่ได้เกี่ยวกับวิธีใช้อาร์นี่เป็นคำถามเชิงสถิติขั้นพื้นฐานที่ปลอมตัวเป็นคำถาม R มันควรจะอยู่ในหัวข้อที่นี่
gung - Reinstate Monica

คำตอบ:


11

มีหลายปัญหาที่นี่:

  1. คุณต้องใช้จำนวนที่สังเกตได้เป็นตัวแปรตอบกลับของคุณ คุณไม่ควรใช้ความหนาแน่น ( g_den)
  2. หากจำนวนที่สังเกตได้มาจากพื้นที่ที่แตกต่างกันคุณจะต้องใช้บันทึกของพื้นที่เหล่านั้นเป็นตัวแปรใหม่:

    larea = log(area)
  3. คุณสามารถควบคุมพื้นที่ที่แตกต่างกันสำหรับการสังเกตได้สองวิธี:

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

มีข้อมูลเพิ่มเติมเกี่ยวกับปัญหาเหล่านี้ในหัวข้อ CV ต่อไปนี้:


6

ดูเหมือนว่าคุณหารจำนวนปลาด้วยปริมาตร (หรือพื้นที่) ของน้ำที่สำรวจ ในกรณีนั้นการชดเชยมีความเหมาะสมคุณควรใช้บันทึกของสิ่งที่คุณหารด้วย บางที

model1 <- glm(g_den ~ method + site + depth + offset(log(area)), poisson)

(แก้ไขจากรุ่นที่ไม่ถูกต้องก่อนหน้านี้ไม่มีบันทึก)

สาเหตุของข้อความแสดงข้อผิดพลาดคือการแจกแจงปัวซองนั้นเป็นค่าจำนวนเต็ม แต่การตอบกลับไม่ใช่จำนวนเต็ม การเปลี่ยนแปลงนี้เมื่อมีการชดเชย (การตอบสนอง / ชดเชย) จะต้องเป็นจำนวนเต็ม (ซึ่งแน่นอนว่ามันคือสมมติว่าจำนวนเดิมเป็นจำนวนเต็ม)


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

3
โปรดทราบว่าoffset() จะไม่ใช้การแปลงโดยค่าเริ่มต้น มันเป็นเพียงการบังคับให้ค่าสัมประสิทธิ์ที่จะ 1. ดูเช่นที่นี่
gung - Reinstate Monica

1
ขอบคุณสำหรับความคิดเห็น ดังนั้นฉันควรเปลี่ยนข้อมูลของฉันกลับเป็นจำนวนมากกว่าความหนาแน่นและรวมพื้นที่เป็นตัวแปรแยกต่างหาก ฉันได้รับคำแนะนำในฟอรัมอื่นเพื่อทำแบบจำลองแกมม่าหรืออินเวอร์สแบบเกาส์และเปลี่ยนค่าศูนย์ของฉันเป็น 0.00001 ถ้าฉันต้องการเก็บข้อมูลเป็นความหนาแน่นคุณคิดว่ามันจะเหมาะสมหรือไม่?
Vivienne

4
E(โอยูnเสื้อ)=ประสบการณ์(βTx)aRอีa=ประสบการณ์(βTx+เข้าสู่ระบบ(aRอีa))E(โอยูnเสื้อ/aRอีa)=E(โอยูnเสื้อ)/aRอีa=ประสบการณ์(βTx)

5
คุณไม่สามารถใช้ความหนาแน่นเป็นคำตอบ คุณต้องใช้จำนวนจริงเป็นคำตอบของคุณ การรวมออฟเซ็ตจะทำให้การตอบสนองการนับมีความหนาแน่นในลักษณะที่ถูกต้องโดยอัตโนมัติ
gung - Reinstate Monica

5

หากคุณกำลังจะสร้างแบบจำลองโดยใช้ Poisson คุณจะต้องมีค่าจำนวนเต็มสำหรับตัวแปรตอบกลับของคุณ จากนั้นคุณมีสองตัวเลือก

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

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

มันคือสายของคุณ

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