Sử dụng offset trong mô hình nhị thức để tính số lượng bệnh nhân tăng lên


18

Hai câu hỏi liên quan từ tôi. Tôi có một khung dữ liệu chứa số lượng bệnh nhân trong một cột (khoảng 10 - 17 bệnh nhân) và 0 và 1 cho biết liệu một sự cố đã xảy ra vào ngày hôm đó. Tôi đang sử dụng mô hình nhị thức để hồi quy xác suất xảy ra sự cố trên số lượng bệnh nhân. Tuy nhiên, tôi muốn điều chỉnh vì thực tế là khi có nhiều bệnh nhân hơn, chắc chắn sẽ có nhiều sự cố hơn vì tổng thời gian bệnh nhân ở phòng bệnh cao hơn vào ngày đó.

Vì vậy, tôi đang sử dụng một mô hình nhị thức bù như thế này (mã R):

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

Câu hỏi của tôi là:

  1. Có ổn không khi có chính xác các biến dự đoán và trong phần bù? Tôi muốn giảm một phần mức tăng của xác suất sự cố và xem liệu về cơ bản có còn gì không. Nó có ý nghĩa với tôi nhưng tôi hơi thận trọng trong trường hợp tôi sai.

  2. Là phần bù được chỉ định chính xác? Tôi biết rằng trong các mô hình poisson nó sẽ đọc

    offset=log(Numbers)
    

Tôi không biết có tương đương ở đây không và dường như tôi không thể tìm thấy bất kỳ sự bù trừ nhị thức nào với Google (vấn đề chính là tôi tiếp tục nhận được nhị thức âm mà tất nhiên là không tốt).


2
Không phải là những gì bạn đang tìm cách điều chỉnh, chính xác là những gì bạn muốn đo - tức là xác suất "sự cố" tăng theo số lượng bệnh nhân như thế nào?
B_Miner

1
Tôi cần lặp lại quan điểm của B_Miner. Tôi nghĩ rằng bạn đang bối rối khi / tại sao bù lại được sử dụng trong tình huống này. Mô hình của bạn, sans offset, sẽ cung cấp cho bạn các giá trị phù hợp để xác suất xảy ra sự cố như là một chức năng của # bệnh nhân. Nếu bạn quan tâm đến một hình thức chức năng khác, thì hãy xem xét các phép biến đổi (như log hoặc lũy thừa của #) dựa trên những gì thú vị về mặt khoa học.
AdamO

Bạn có thể làm rõ điều gì về các sự cố? Là một sự cố liên quan đến một bệnh nhân, hoặc một cái gì đó về toàn bộ phường? Nếu liên quan đến bệnh nhân, có thể xảy ra> 1 sự cố Nếu không có bệnh nhân, liệu có thể xảy ra sự cố không?
atiretoo

1
Rõ ràng câu trả lời của tôi 'không chứa đủ chi tiết'. Tôi đã cung cấp một sự phát triển lý thuyết, mã có thể chạy được và câu trả lời cho cả hai câu hỏi của bạn, vì vậy bạn có thể làm rõ những gì cần thiết hơn không?
liên hợp chiến

1
Xin lỗi, Liên hợp trước, câu trả lời của bạn là tuyệt vời. Điều "không đủ chi tiết" là thẻ được thêm vào tiền thưởng (tức là đã có trước khi bạn đăng). Tôi sẽ chấp nhận khi tiền thưởng kết thúc chỉ trong trường hợp ai đó tạo ra phản hồi thậm chí tốt hơn, nhưng điều này là không thể và bạn rất hữu ích, cảm ơn bạn.
Chris Beeley

Câu trả lời:


17

Nếu bạn quan tâm đến xác suất xảy ra sự cố trong N ngày của bệnh nhân trong phường thì bạn muốn có một mô hình như sau:

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

giá trị bù cho các thử nghiệm incidentlà 0 hoặc 1 và xác suất xảy ra sự cố là không đổi (không có sự không đồng nhất trong xu hướng tạo ra sự cố) và bệnh nhân không tương tác để gây ra sự cố (không lây nhiễm). Ngoài ra, nếu khả năng xảy ra sự cố là nhỏ, đó là dành cho bạn (hoặc bạn đã vượt qua số lượng sự cố mà không đề cập đến chúng tôi) thì bạn có thể thích công thức Poisson hơn

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

trong đó các giả định tương tự được áp dụng. Phần bù được ghi lại vì số bệnh nhân trong phường có hiệu ứng tỷ lệ / nhân.

Mở rộng trên mô hình thứ hai, có thể bạn nghĩ rằng có nhiều sự cố hơn mong đợi đơn giản là do số lượng bệnh nhân tăng lên. Đó là, có lẽ bệnh nhân tương tác hoặc không đồng nhất. Vì vậy, bạn cố gắng

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

Nếu hệ số trên log.patients.on.wardkhác biệt đáng kể so với 1, khi nó được cố định mod2, thì điều gì đó thực sự có thể sai với các giả định của bạn không có sự không đồng nhất và không lây nhiễm. Và mặc dù bạn không thể phân biệt hai yếu tố này (cũng không phải là một trong số các biến bị thiếu khác), giờ đây bạn có một ước tính về việc tăng số lượng bệnh nhân trên phường sẽ tăng tỷ lệ / xác suất xảy ra sự cố lên trên mức nào mong đợi từ cơ hội. Trong không gian của các tham số, nó 1-coef(mod3)[2]có khoảng cách có thể lấy được từ confint.

Ngoài ra, bạn chỉ có thể làm việc với số lượng nhật ký và hệ số của nó trực tiếp. Nếu bạn chỉ muốn dự đoán xác suất xảy ra sự cố bằng cách sử dụng số lượng bệnh nhân trên phường, thì mô hình này sẽ là một cách đơn giản để làm điều đó.

Câu hỏi

  1. Có ổn không khi có các biến phụ thuộc trong phần bù của bạn? Nghe có vẻ là một ý tưởng rất tồi đối với tôi, nhưng tôi không thấy rằng bạn phải làm thế.

  2. Sự bù đắp trong các mô hình hồi quy Poisson exposurethực sự là log(exposure). Có lẽ khó hiểu khi sử dụng các offsetmô hình hồi quy Binomial của R về cơ bản là cách để chỉ ra số lượng thử nghiệm. Nó luôn có thể được thay thế bằng một biến phụ thuộc được xác định là cbind(incidents, patients.on.ward-incidents)và không có bù. Hãy nghĩ về nó như thế này: trong mô hình Poisson, nó nhập vào phía bên phải phía sau chức năng liên kết nhật ký và trong mô hình Binomial, nó nhập vào phía bên trái trước chức năng liên kết logit.


18

Offsets trong hồi quy Poisson

Hãy bắt đầu bằng cách xem xét lý do tại sao chúng ta sử dụng phần bù trong hồi quy Poisson. Thông thường chúng tôi muốn do điều này để kiểm soát tiếp xúc. Hãy là tỷ giá cơ bản trên một đơn vị độ phơi sáng và t là thời gian phơi sáng trong cùng một đơn vị. Số lượng sự kiện dự kiến ​​sẽ là λ × t .λtλ×t

Trong mô hình GLM, chúng tôi đang mô hình hóa giá trị mong đợi bằng cách sử dụng hàm liên kết , nghĩa làg

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

tiixii

Chúng ta có thể đơn giản hóa đơn giản hóa biểu thức trên

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

log(ti)

Hồi quy nhị thức

Trong hồi quy nhị thức, thường sử dụng liên kết logit, đó là:

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

pi

pii

pi,jjiij=1Ni(1pi,j)Nii

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

pi=1(q)Ni,
q=1pp là chia sẻ xác suất.

pig(pi)log((q)N1) . Điều này vẫn không để lại cho chúng tôi một thuật ngữ liên tục có thể được đưa ra.

Kết quả là chúng ta không thể sử dụng một phần bù trong trường hợp này.

p


2
+1, chào mừng bạn đến với trang web, @Rider_X. Tôi hy vọng chúng ta có thể mong đợi nhiều câu trả lời như vậy trong tương lai.
gung - Phục hồi Monica

1
@gung - Cảm ơn! Tôi đã không nghe lại nhiều về những gì tôi nghĩ là một câu trả lời hữu ích vì vậy tôi đã không trở lại nhiều. Tôi sẽ phải thay đổi điều đó. Trân trọng.
Rider_X

2
+1 Tôi thực sự đánh giá cao câu trả lời giải thích lý thuyết và lý luận, thay vì (hoặc ngoài) hiển thị mã và lệnh nào sẽ sử dụng.
whuber

9

Câu trả lời này có hai phần, phần đầu là câu trả lời trực tiếp cho câu hỏi và phần thứ hai là phần bình luận về mô hình mà bạn đang đề xuất.

Phần đầu tiên liên quan đến việc sử dụng Numbersnhư là một phần bù cùng với việc có nó trên rhs của phương trình. Hiệu quả của việc này chỉ đơn giản là trừ đi 1 từ hệ số ước tính Numbers, từ đó đảo ngược hiệu ứng của phần bù và sẽ không làm thay đổi kết quả. Ví dụ sau đây, với một vài dòng đầu ra không liên quan được loại bỏ, chứng minh điều này:

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

Lưu ý cách mọi thứ đều giống nhau ngoại trừ hệ số Số và độ lệch null (và thống kê t, vì nó vẫn đang kiểm tra so với 0 thay vì -1.)

t1(1pt)NtNttpt là xác suất trên mỗi bệnh nhân của một sự cố trong ngày t. Hàm liên kết thông thường, logit, sẽ tham số hóa này làđăng nhập(1-(1-pt)Nt)/Ntđăng nhập(1-pt). Điều này chỉ ra rằng mối quan hệ giữa xác suất quan sát 1 vào ngàytNtcó thể không được mô hình hóa tốt bởi một hàm tuyến tính trên thang đo logit. (Dù sao đây cũng có thể là trường hợp, vì người ta có thể mong đợi một "ngưỡng" thô nào đó bên dưới mà chất lượng chăm sóc bệnh nhân vẫn ổn nhưng trên đó chất lượng chăm sóc bệnh nhân giảm xuống nhanh chóng.)Nt trong mẫu số thay vì tử số vẫn để lại cho bạn số mũ khó xử đó bên trong nhật ký.

Người ta cũng có thể nghi ngờ rằng xác suất trên mỗi bệnh nhân thay đổi tùy theo từng bệnh nhân, điều này sẽ dẫn đến một mô hình phân cấp phức tạp hơn, nhưng tôi sẽ không đi sâu vào vấn đề đó ở đây.

Trong mọi trường hợp, với điều này và phạm vi giới hạn của số lượng bệnh nhân bạn quan sát, thay vì sử dụng một mô hình tuyến tính trên thang đo logit, có thể tốt hơn là không tham số về mối quan hệ và nhóm số bệnh nhân thành ba hoặc bốn nhóm, ví dụ, 10-11, 12-13, 14-15 và 16-17, xây dựng các biến giả cho các nhóm đó, sau đó chạy hồi quy logistic với các biến giả ở phía bên tay phải. Điều này sẽ cho phép nắm bắt tốt hơn các mối quan hệ phi tuyến tính như "hệ thống bị quá tải khoảng 16 bệnh nhân và các sự cố bắt đầu lan rộng đáng kể". Nếu bạn có phạm vi bệnh nhân rộng hơn nhiều, tôi sẽ đề xuất một mô hình phụ gia tổng quát, ví dụ: 'gam' từ gói 'mgcv'.


0

Có vẻ đơn giản nhất để chỉ định một liên kết nhật ký và giữ phần bù như cho mô hình Poisson.


2
Tôi chắc chắn bạn đã đúng, nhưng vì lợi ích của tôi, làm thế nào đây là một Poisson? Có vẻ như OP có một bộ dữ liệu với kết quả nhị phân. Đây có phải là glm (Sự cố ~ Số, offset = log (Số), gia đình = poisson, dữ liệu = mối đe dọa) ??
B_Miner
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.