Bagaimana cara menerapkan binomial GLMM (glmer) untuk persentase daripada jumlah ya-tidak?

21

Saya memiliki percobaan tindakan berulang di mana variabel dependen adalah persentase, dan saya memiliki beberapa faktor sebagai variabel independen. Saya ingin menggunakan glmerdari paket R lme4untuk memperlakukannya sebagai masalah regresi logistik (dengan menentukan family=binomial) karena tampaknya mengakomodasi pengaturan ini secara langsung.

Data saya terlihat seperti ini:

 > head(data.xvsy)
   foldnum      featureset noisered pooldur dpoolmode       auc
 1       0         mfcc-ms      nr0       1      mean 0.6760438
 2       1         mfcc-ms      nr0       1      mean 0.6739482
 3       0    melspec-maxp    nr075       1       max 0.8141421
 4       1    melspec-maxp    nr075       1       max 0.7822994
 5       0 chrmpeak-tpor1d    nr075       1       max 0.6547476
 6       1 chrmpeak-tpor1d    nr075       1       max 0.6699825

dan inilah perintah R yang saya harapkan akan sesuai:

 glmer(auc~1+featureset*noisered*pooldur*dpoolmode+(1|foldnum), data.xvsy, family=binomial)

Masalah dengan ini adalah bahwa perintah mengeluh tentang variabel dependen saya tidak menjadi bilangan bulat:

In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!

dan analisis data (pilot) ini memberikan jawaban yang aneh sebagai hasilnya.

Saya mengerti mengapa binomialkeluarga mengharapkan bilangan bulat (jumlah ya-tidak), tetapi tampaknya tidak masalah untuk mengembalikan data persentase secara langsung. Bagaimana cara melakukannya?

Dan Stowell
sumber
1
Tampaknya tidak apa-apa bagi saya, karena 5 dari 10 bukanlah informasi yang sama dengan 500 dari 1000. Nyatakan tanggapan sebagai satu hitungan dari tidak. "Berhasil" & satu hitungan dari no. "kegagalan".
Scortchi
@Scortchi terima kasih, saya pikir Anda mungkin benar. Saya sedang memikirkan sebagian tentang sifat kontinu dari persentase saya (berasal dari keputusan probabilistik) mirip dengan pertanyaan ini: stats.stackexchange.com/questions/77376/… tapi saya yakin saya dapat mengekspresikan data saya melalui konversi yang berarti ke jumlah bilangan bulat.
Dan Stowell

Jawaban:

22

Untuk menggunakan vektor proporsi sebagai variabel respons glmer(., family = binomial), Anda perlu mengatur jumlah percobaan yang menyebabkan masing-masing proporsi menggunakan weightsargumen. Misalnya, menggunakan cbppdata dari lme4paket:

glmer(incidence / size ~ period + (1 | herd), weights = size,
   family = binomial, data = cbpp)

Jika Anda tidak tahu jumlah total percobaan, maka model binomial tidak sesuai, seperti yang ditunjukkan dalam pesan kesalahan.

Steve Walker
sumber
Saya tidak bisa mengatakan apakah menggunakan bobot untuk ini berhasil atau tidak. Tetapi Anda tentu dapat memasukkan data sebagai matriks dua kolom (keberhasilan / kegagalan) di sebelah kiri rumus.
ndoogan
Tapi @ndoogan, pertanyaan awalnya adalah tentang proporsi, bukan keberhasilan / kegagalan. Dan kode di atas tidak berfungsi, karena saya mengambilnya dari cbpphalaman bantuan.
Steve Walker
Cukup adil. Padahal, yang saya maksudkan adalah keberhasilan / kegagalan ( tidak dimaksudkan sebagai divisi) adalah dari mana proporsi untuk model binomial berasal.
ndoogan
+1 tetapi pembaca mungkin ingin melihat jawaban @ BenBolker di sini stats.stackexchange.com/questions/189115 tentang cara-cara yang mungkin untuk menangani overdispersion.
Amoeba berkata Reinstate Monica
9

(0,1)

M. Berk
sumber
2
Model binomial adalah model proporsi. Padahal, itu hanya tepat ketika Anda tahu jumlah cobaan. Jika semua yang Anda miliki adalah persen tanpa indikasi jumlah uji coba, maka saya yakin Anda benar bahwa regresi beta sesuai.
ndoogan
(0,1)
Terima kasih, ini poin yang bagus. Saya menerima jawaban lain karena menjawab pertanyaan seperti yang tertulis, tetapi poin tentang regresi beta dibuat dengan baik jadi saya telah memutarnya.
Dan Stowell