Menggunakan offset dalam model binomial untuk memperhitungkan peningkatan jumlah pasien

18

Dua pertanyaan terkait dari saya. Saya memiliki kerangka data yang berisi jumlah pasien dalam satu kolom (kisaran 10 - 17 pasien) dan 0s dan 1s yang menunjukkan apakah suatu insiden terjadi hari itu. Saya menggunakan model binomial untuk mengurangi kemungkinan insiden pada jumlah pasien. Namun, saya ingin menyesuaikan fakta bahwa ketika ada lebih banyak pasien, pasti akan ada lebih banyak insiden karena jumlah total waktu pasien di bangsal lebih tinggi pada hari itu.

Jadi saya menggunakan model binomial offset seperti ini (R-code):

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

Pertanyaan saya adalah:

  1. Apakah saya tetap bisa memiliki variabel yang sama persis memprediksi dan diimbangi? Saya ingin mengurangi kemungkinan peningkatan insiden dan melihat apakah ada yang tersisa, pada dasarnya. Masuk akal bagi saya tetapi saya sedikit berhati-hati jika saya salah.

  2. Apakah offset ditentukan dengan benar? Saya tahu bahwa dalam model poisson itu akan membaca

    offset=log(Numbers)
    

Saya tidak tahu apakah ada yang setara di sini dan sepertinya saya tidak dapat menemukan offset binomial dengan Google (masalah utama adalah saya terus mendapatkan binomial negatif yang tentu saja tidak baik).

Chris Beeley
sumber
2
Bukankah apa yang ingin Anda sesuaikan, tepatnya apa yang ingin Anda ukur - yaitu bagaimana probabilitas "insiden" meningkat dengan jumlah pasien?
B_Miner
1
Saya perlu mengulangi poin B_Miner. Saya pikir Anda bingung kapan / mengapa offset digunakan dalam situasi ini. Model Anda, tanpa offset, akan memberi Anda nilai yang cocok untuk kemungkinan insiden sebagai fungsi dari # pasien. Jika Anda tertarik pada bentuk fungsional yang berbeda, maka pertimbangkan transformasi (seperti log atau eksponensial #) berdasarkan pada apa yang menarik secara ilmiah.
AdamO
Bisakah Anda mengklarifikasi sesuatu tentang insiden tersebut? Apakah insiden terkait dengan pasien, atau sesuatu tentang bangsal secara keseluruhan? Jika terkait dengan pasien, mungkinkah ada> 1 insiden Jika tidak ada pasien, mungkinkah ada insiden?
atiretoo
1
Ternyata jawaban saya 'tidak mengandung detail yang cukup'. Saya telah memberikan pengembangan teoretis, kode yang dapat dijalankan, dan jawaban untuk kedua pertanyaan Anda, jadi bisakah Anda menjelaskan apa yang lebih dibutuhkan?
conjugateprior
1
Maaf, Konjugasi Sebelumnya, jawaban Anda bagus. Hal "tidak cukup detail" adalah tag yang ditambahkan ke karunia (yaitu ada sebelum Anda memposting). Saya akan menerima ketika karunia berakhir kalau-kalau seseorang menghasilkan respons yang lebih baik, tetapi ini tidak mungkin dan milik Anda sangat membantu, terima kasih.
Chris Beeley

Jawaban:

17

Jika Anda tertarik pada probabilitas insiden yang diberikan N hari pasien di bangsal maka Anda menginginkan model yang baik seperti:

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

offset mewakili uji coba, incidentadalah 0 atau 1, dan probabilitas insiden konstan (tidak ada heterogenitas dalam kecenderungan untuk menghasilkan insiden) dan pasien tidak berinteraksi untuk menyebabkan insiden (tidak ada penularan). Atau, jika peluang insiden kecil, yang cocok untuk Anda (atau Anda telah menetapkan ambang insiden itu berarti tanpa menyebutkannya kepada kami) maka Anda mungkin lebih suka formulasi Poisson

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

di mana asumsi yang sama berlaku. Offset dicatat karena jumlah pasien di bangsal memiliki efek proporsional / multiplikasi.

Memperluas model kedua, mungkin Anda berpikir ada lebih banyak insiden daripada yang diperkirakan hanya karena peningkatan jumlah pasien. Artinya, mungkin pasien benar-benar berinteraksi atau heterogen. Jadi kamu coba

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

Jika koefisien pada log.patients.on.wardsecara signifikan berbeda dari 1, di mana itu ditetapkan mod2, maka sesuatu mungkin memang salah dengan asumsi Anda tidak ada heterogenitas dan tidak ada penularan. Dan sementara Anda tentu saja tidak dapat membedakan keduanya (atau salah satu dari variabel yang hilang), Anda sekarang memiliki perkiraan tentang seberapa banyak peningkatan jumlah pasien di bangsal meningkatkan tingkat / probabilitas insiden melebihi dan di atas apa yang Anda inginkan. harapkan dari kebetulan. Di ruang parameter itu1-coef(mod3)[2] dengan interval dari confint.

Atau Anda bisa langsung bekerja dengan jumlah log dan koefisiennya secara langsung. Jika Anda hanya ingin memprediksi kemungkinan insiden menggunakan jumlah pasien di bangsal, maka model ini akan menjadi cara sederhana untuk melakukannya.

Pertanyaan-pertanyaan

  1. Apakah boleh memiliki variabel dependen dalam offset Anda? Kedengarannya itu ide yang sangat buruk bagi saya, tetapi saya tidak melihat Anda harus melakukannya.

  2. Offset dalam model regresi Poisson exposurememang log(exposure). Mungkin membingungkan penggunaan offsetmodel regresi Binomial R pada dasarnya adalah cara untuk menunjukkan jumlah percobaan. Itu selalu bisa digantikan oleh variabel dependen yang didefinisikan sebagai cbind(incidents, patients.on.ward-incidents)dan tanpa offset. Pikirkan seperti ini: dalam model Poisson, ia masuk di sisi kanan di belakang fungsi log log, dan dalam model Binomial masuk di sisi kiri di depan fungsi link logit.

conjugateprior
sumber
18

Offset dalam regresi Poisson

λtλ×t

g

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

tiixii . Ellipsis hanya menunjukkan istilah regresi tambahan yang mungkin ingin kita tambahkan.

Kami dapat menyederhanakan penyederhanaan ungkapan di atas

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

log(ti) hanyalah sebuah "offset" ditambahkan ke regresi Poisson karena bukan merupakan produk dari salah satu parameter model yang kita akan memperkirakan.

Regresi Binomial

Dalam regresi binomial, yang biasanya menggunakan tautan logit, yaitu:

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 adalah probabilitas kejadian bersama.

pig(pi)log((q)N1) . Ini masih tidak meninggalkan kita dengan istilah konstan yang dapat diperhitungkan.

Akibatnya kami tidak dapat menggunakan offset dalam kasus ini.

p

Rider_X
sumber
2
+1, selamat datang di situs ini, @Rider_X. Saya harap kita dapat mengharapkan lebih banyak jawaban seperti itu di masa depan.
gung - Reinstate Monica
1
@ung - Terima kasih! Saya belum pernah mendengar banyak tentang apa yang saya pikir merupakan jawaban yang berguna jadi saya belum banyak kembali. Saya harus mengubahnya. Salam.
Rider_X
2
+1 Saya sangat menghargai jawaban yang menjelaskan teori dan penalaran, daripada (atau sebagai tambahan) yang menunjukkan kode dan perintah apa yang digunakan.
whuber
9

Jawaban ini datang dalam dua bagian, yang pertama jawaban langsung untuk pertanyaan dan yang kedua komentar pada model yang Anda usulkan.

Bagian pertama berkaitan dengan penggunaan Numberssebagai offset dan memilikinya pada rhs dari persamaan. Efek melakukan ini hanya akan mengurangi 1 dari koefisien estimasi Numbers, dengan demikian membalikkan efek offset, dan sebaliknya tidak akan mengubah hasilnya. Contoh berikut, dengan beberapa baris output yang tidak relevan dihapus, menunjukkan ini:

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

Perhatikan bagaimana semuanya sama kecuali koefisien Bilangan dan penyimpangan nol (dan t-statistik, karena itu masih menguji terhadap 0 bukannya -1.)

t1(1pt)NtNttpttlog(1(1pt)Nt)/Ntlog(1pt)tNtNt

Orang mungkin juga menduga bahwa probabilitas per-pasien bervariasi dari pasien ke pasien, yang akan mengarah pada model hierarkis yang lebih kompleks, tetapi saya tidak akan membahasnya di sini.

Bagaimanapun, mengingat ini dan kisaran terbatas jumlah pasien yang Anda amati, daripada menggunakan model yang linier pada skala logit, mungkin lebih baik bersikap nonparametrik tentang hubungan dan mengelompokkan jumlah pasien menjadi tiga atau empat kelompok, misalnya, 10-11, 12-13, 14-15, dan 16-17, membuat variabel dummy untuk kelompok tersebut, kemudian menjalankan regresi logistik dengan variabel dummy di sisi kanan. Ini akan lebih memungkinkan penangkapan hubungan nonlinear seperti "sistem kelebihan beban sekitar 16 pasien dan insiden mulai meningkat secara signifikan." Jika Anda memiliki rentang pasien yang jauh lebih luas, saya akan menyarankan model aditif umum, misalnya, 'gam' dari paket 'mgcv'.

Jbowman
sumber
0

Tampaknya paling sederhana untuk menentukan log-link dan menjaga offset untuk model Poisson.

onestop
sumber
2
Saya yakin Anda benar, tetapi demi keuntungan saya, bagaimana ini Poisson? Kedengarannya seperti OP memiliki kumpulan data dengan hasil biner. Apakah ini glm (Insiden ~ Angka, offset = log (Angka), keluarga = poisson, data = ancaman)?
B_Miner