การใช้ offset ในรูปแบบทวินามเพื่ออธิบายจำนวนผู้ป่วยที่เพิ่มขึ้น


18

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

ดังนั้นฉันใช้รูปแบบทวินามแบบออฟเซ็ตเช่นนี้ (รหัส R):

glm(Incident~Numbers, offset=Numbers, family=binomial, data=threatdata)

คำถามของฉันคือ:

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

  2. มีการระบุออฟเซ็ตอย่างถูกต้องหรือไม่? ฉันรู้ว่าในรูปแบบปัวซองมันจะอ่าน

    offset=log(Numbers)
    

ฉันไม่ทราบว่ามีสิ่งที่เทียบเท่าที่นี่และฉันไม่สามารถหาการชดเชยทวินามใด ๆ กับ Google (ปัญหาหลักคือการที่ฉันได้รับทวินามลบซึ่งแน่นอนว่าไม่ดี)


2
สิ่งที่คุณต้องการปรับไม่ใช่สิ่งที่คุณต้องการวัดอย่างแม่นยำเช่นความน่าจะเป็นของ "เหตุการณ์" จะเพิ่มขึ้นตามจำนวนผู้ป่วยอย่างไร
B_Miner

1
ฉันต้องสะท้อนจุด B_Miner ของ ฉันคิดว่าคุณสับสนเมื่อ / เหตุใดจึงใช้การชดเชยในสถานการณ์นี้ แบบจำลองของคุณจะชดเชยความน่าจะเป็นของเหตุการณ์ที่เกิดขึ้นในฐานะหน้าที่ของจำนวนผู้ป่วย หากคุณสนใจในรูปแบบการทำงานที่แตกต่างกันให้พิจารณาการแปลง (เช่นบันทึกหรือการยกกำลังของ #) ตามสิ่งที่น่าสนใจทางวิทยาศาสตร์
AdamO

คุณสามารถอธิบายบางอย่างเกี่ยวกับเหตุการณ์ได้หรือไม่ เหตุการณ์ที่เกี่ยวข้องกับผู้ป่วยหรือบางสิ่งเกี่ยวกับวอร์ดโดยรวมหรือไม่? หากเกี่ยวข้องกับผู้ป่วยเป็นไปได้หรือไม่ที่จะเกิดเหตุการณ์> 1 หากไม่มีผู้ป่วยจะเป็นไปไม่ได้หรือไม่
atiretoo

1
เห็นได้ชัดว่าคำตอบของฉัน 'มีรายละเอียดไม่เพียงพอ' ฉันได้ให้การพัฒนาเชิงทฤษฎีโค้ดที่รันได้และคำตอบสำหรับคำถามทั้งสองของคุณดังนั้นคุณสามารถอธิบายได้ว่าจำเป็นต้องใช้อะไรมากกว่านี้?
conjugateprior

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

คำตอบ:


17

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

mod1 <- glm(incident ~ 1, offset=patients.on.ward, family=binomial)

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

log.patients.on.ward <- log(patients.on.ward)
mod2 <- glm(incident ~ 1, offset=log.patients.on.ward, family=poisson)

โดยใช้สมมติฐานเดียวกัน การชดเชยถูกบันทึกไว้เนื่องจากจำนวนผู้ป่วยในหอผู้ป่วยมีผลต่อสัดส่วน / การคูณ

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

mod3 <- glm(incident ~ 1 + log.patients.on.ward, family=poisson)

หากค่าสัมประสิทธิ์การเปิดlog.patients.on.wardมีความแตกต่างอย่างมีนัยสำคัญจาก 1 ซึ่งได้รับการแก้ไขmod2แล้วบางสิ่งอาจผิดปกติกับสมมติฐานของคุณที่ไม่มีความหลากหลายและไม่มีการแพร่กระจาย และในขณะที่คุณไม่สามารถแยกแยะความแตกต่างระหว่างสองอย่างนี้ (หรืออย่างใดอย่างหนึ่งกับตัวแปรที่หายไปอื่น ๆ ) แต่ตอนนี้คุณมีการประเมินว่าจำนวนผู้ป่วยในวอร์ดเพิ่มขึ้นมากเพียงใด คาดหวังจากโอกาส ในพื้นที่ของพารามิเตอร์มันมีช่วงเวลาที่ได้มาจาก1-coef(mod3)[2]confint

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

คำถาม

  1. คุณมีตัวแปรตามในการชดเชยของคุณหรือไม่? ฟังดูเป็นความคิดที่แย่มากสำหรับฉัน แต่ฉันไม่เห็นว่าคุณต้องทำ

  2. ชดเชยในรูปแบบการถดถอยปัวซองสำหรับเป็นที่แน่นอนexposure log(exposure)บางทีการใช้offsetแบบจำลองสมการถดถอยแบบทวินามแบบสับสนของR อาจเป็นวิธีการระบุจำนวนการทดลอง มันสามารถถูกแทนที่ด้วยตัวแปรตามที่กำหนดเป็นcbind(incidents, patients.on.ward-incidents)และไม่มีออฟเซ็ต ลองคิดดู: ในรุ่น Poisson มันจะเข้าทางด้านขวามือด้านหลังฟังก์ชั่นลิงค์ล็อกและในโมเดล Binomial มันจะเข้าทางด้านซ้ายมือหน้าฟังก์ชั่นลิงค์ logit


18

ออฟเซ็ตในการถดถอยของปัวซอง

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

ในโมเดล GLM เรากำลังสร้างโมเดลค่าที่คาดไว้โดยใช้ฟังก์ชันลิงก์นั่นคือก.

g(λti)=log(λเสื้อผม)=β0+β1x1,ผม+...

ที่คือระยะเวลาการเปิดรับแสงสำหรับบุคคลtiและ x ฉันคุ้มค่าตัวแปรร่วมสำหรับบุคคลฉัน จุดไข่ปลาเพียงระบุเงื่อนไขการถดถอยเพิ่มเติมที่เราอาจต้องการเพิ่มixii

เราสามารถลดความซับซ้อนของการแสดงออกด้านบน

log(λ)=log(ti)+β0+β1x1,i+

เป็นเพียงการ "ชดเชย" เพิ่มไปยังถดถอยปัวซองมันเป็นไม่ได้เป็นผลิตภัณฑ์ใด ๆ ของพารามิเตอร์แบบที่เราจะได้รับการประเมินlog(ti)

การถดถอยแบบทวินาม

ในการถดถอยแบบทวินามซึ่งโดยทั่วไปจะใช้ลิงค์ logit นั่นคือ:

g(pi)=logit(pi)=log(pi1pi)=β0+β1x1,i+

คุณจะเห็นว่ามันยากที่จะหาโมเดลสำหรับที่จะสร้างอ็อฟเซ็ตคงที่pi

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

ให้จะเป็นน่าจะเป็นของผู้ป่วยเจมีเหตุการณ์ที่เกิดขึ้นในวันที่ฉัน น่าจะเป็นของผู้ป่วยที่ไม่มีมีเหตุการณ์ที่เกิดขึ้นในวันที่ฉันจะΠ N ฉัน J = 1 ( 1 - P * ฉัน, เจ )ที่ไม่มีฉันคือจำนวนของผู้ป่วยในวันที่ฉัน ความน่าจะเป็นของผู้ป่วยอย่างน้อยหนึ่งรายที่มีเหตุการณ์จะเป็นไปได้, p i = 1 - N ฉัน jpi,jjiij=1Ni(1pi,j)Nii

pi=1j=1Ni(1pi,j).

pi=1(q)Ni,
q=1pp

pig(pi)log((q)N1)

ดังนั้นเราจึงไม่สามารถใช้การชดเชยในกรณีนี้

p


2
+1 ยินดีต้อนรับสู่เว็บไซต์ @Rider_X ฉันหวังว่าเราสามารถคาดหวังคำตอบดังกล่าวได้มากขึ้นในอนาคต
gung - Reinstate Monica

1
@gung - ขอบคุณ! ฉันไม่ได้ยินอะไรมากในสิ่งที่ฉันคิดว่าเป็นคำตอบที่มีประโยชน์ดังนั้นฉันจึงไม่ได้กลับมามากนัก ฉันจะต้องเปลี่ยนสิ่งนั้น ความนับถือ.
Rider_X

2
+1 ฉันรู้สึกซาบซึ้งกับคำตอบที่อธิบายทฤษฎีและเหตุผลมากกว่า (หรือเพิ่มเติมจาก) แสดงรหัสและคำสั่งที่จะใช้
whuber

9

คำตอบนี้มีสองส่วนคำตอบแรกตรงกับคำถามและคำอธิบายที่สองเกี่ยวกับแบบจำลองที่คุณเสนอ

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

library(MASS)
Numbers <- rpois(100,12)
p <- 1 / (1 + exp(0.25*Numbers))
y <- rbinom(100, Numbers, p)
Incident <- pmin(y, 1) 

> summary(glm(Incident~Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)  
(Intercept)  0.99299    0.80624   1.232   0.2181  
Numbers     -0.11364    0.06585  -1.726   0.0844 . <= COEFFICIENT WITH NO OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 135.37  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

> summary(glm(Incident~Numbers, offset=Numbers, family="binomial"))

Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-1.3121  -1.0246  -0.8731   1.2512   1.7465  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  0.99299    0.80624   1.232    0.218    
Numbers     -1.11364    0.06585 -16.911   <2e-16 *** <= COEFFICIENT WITH OFFSET TERM
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 342.48  on 99  degrees of freedom
Residual deviance: 132.24  on 98  degrees of freedom
AIC: 136.24

โปรดทราบว่าทุกอย่างเหมือนกันยกเว้นค่าสัมประสิทธิ์ของตัวเลขและค่าเบี่ยงเบนความว่างเปล่า (และค่าสถิติเนื่องจากยังคงทดสอบกับ 0 แทนที่จะเป็น -1)

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

บางคนอาจสงสัยว่าความน่าจะเป็นต่อผู้ป่วยจะแตกต่างกันไปตามผู้ป่วยซึ่งจะนำไปสู่รูปแบบเชิงลำดับขั้นที่ซับซ้อนมากขึ้น แต่ฉันจะไม่เข้าไปที่นี่

ไม่ว่าในกรณีใดก็ตามเมื่อพิจารณาจากจำนวนผู้ป่วยที่คุณสังเกตเห็นนี้และในช่วงที่ จำกัด แทนที่จะใช้แบบจำลองที่มีลักษณะเป็นเส้นตรงตามมาตราส่วน logit มันอาจเป็นการดีกว่าที่จะไม่ใช่พารามิเตอร์เกี่ยวกับความสัมพันธ์และกลุ่มจำนวนผู้ป่วยเป็นสามหรือ สี่กลุ่มตัวอย่างเช่น 10-11, 12-13, 14-15 และ 16-17 สร้างตัวแปรจำลองสำหรับกลุ่มเหล่านั้นจากนั้นเรียกใช้การถดถอยโลจิสติกด้วยตัวแปรจำลองที่ด้านขวา สิ่งนี้จะช่วยให้สามารถจับความสัมพันธ์ที่ไม่เป็นเชิงเส้นได้ดีขึ้นเช่น "ระบบมีผู้ป่วยมากถึง 16 คนและเหตุการณ์ต่างๆเริ่มทวีความรุนแรงมากขึ้น" หากคุณมีผู้ป่วยในวงกว้างมากขึ้นฉันขอแนะนำตัวแบบเสริมทั่วไปเช่น 'gam' จากแพ็คเกจ 'mgcv'


0

ดูเหมือนจะง่ายที่สุดในการระบุล็อกลิงค์และคงออฟเซ็ตเหมือนกับรุ่นปัวซอง


2
ฉันแน่ใจว่าคุณพูดถูก แต่เพื่อประโยชน์ของฉันแล้วปัวซองนี้เป็นอย่างไร? ดูเหมือนว่า OP จะมีชุดข้อมูลที่มีผลลัพธ์เป็นเลขฐานสอง สิ่งนี้จะเป็น glm หรือไม่ (เหตุการณ์ ~ หมายเลข, ชดเชย = บันทึก (ตัวเลข), ครอบครัว = ปัวซอง, ข้อมูล = ภัยคุกคาม)
B_Miner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.