Bagaimana cara menilai kecocokan binomial GLMM yang dilengkapi dengan lme4 (> 1.0)?


19

Saya memiliki GLMM dengan distribusi binomial dan fungsi tautan logit dan saya merasa bahwa aspek penting dari data tidak terwakili dengan baik dalam model.

Untuk menguji ini, saya ingin tahu apakah data dijelaskan dengan baik oleh fungsi linear pada skala logit. Oleh karena itu, saya ingin tahu apakah residunya berperilaku baik. Namun, saya tidak dapat mengetahui di mana residual plot untuk plot dan bagaimana menafsirkan plot.

Perhatikan bahwa saya menggunakan versi baru lme4 ( versi pengembangan dari GitHub ):

packageVersion("lme4")
## [1] ‘1.1.0’

Pertanyaan saya adalah: Bagaimana cara saya memeriksa dan menginterpretasikan residual dari model campuran linear binomial umum dengan fungsi link logit?

Data berikut ini hanya mewakili 17% dari data asli saya, tetapi pemasangan sudah memakan waktu sekitar 30 detik pada mesin saya, jadi saya membiarkannya seperti ini:

require(lme4)
options(contrasts=c('contr.sum', 'contr.poly'))

dat <- read.table("http://pastebin.com/raw.php?i=vRy66Bif")
dat$V1 <- factor(dat$V1)

m1 <- glmer(true ~ distance*(consequent+direction+dist)^2 + (direction+dist|V1), dat, family = binomial)

Plot paling sederhana ( ?plot.merMod) menghasilkan yang berikut:

plot(m1)

masukkan deskripsi gambar di sini

Apakah ini sudah memberitahuku sesuatu?


1
Saya mungkin menemukan waktu untuk kembali dan mengambil celah dalam hal ini, tetapi saya pikir jawaban umumnya adalah sulit untuk melakukan banyak hal dengan residu dari model biner. Penemuan utama saya begitu jauh dari zoom pada sedikit di plot Anda memiliki di atas, dan menambahkan garis merapikan (menggunakan type=c("p","smooth")di plot.merMod, atau pindah ke ggplotjika Anda ingin interval kepercayaan) adalah bahwa sepertinya ada pola kecil tapi signifikan, yang Anda mungkin dapat memperbaikinya dengan mengadopsi fungsi tautan yang berbeda. Sejauh ini ...
Ben Bolker

@BenBolker Terima kasih. Dan tidak bisakah Anda memposting ini dan tautan ke freakonomics sebagai jawaban atas pertanyaan? Maka setidaknya Anda akan mendapatkan 150 poin.
Henrik

3
Saya menemukan utas CV ini, stats.stackexchange.com/questions/63566/… , sangat membantu. Posting menjelaskan cara membuat plot residu bined di R.
Nova

@ Henrik Tolong jelaskan bagaimana cara true ~ distance*(consequent+direction+dist)^2 + (direction+dist|V1)kerja model ? Akan model memberi perkiraan interaksi antara distance*consequent, distance*direction, distance*distdan kemiringan directiondan dist yang bervariasi dengan V1? Apa yang (consequent+direction+dist)^2ditunjukkan oleh bujur sangkar ?
ABC

@ Henrik Saya menjalankan kode Anda dan itu menunjukkan Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.123941 (tol = 0.001, component 1). Mengapa
ABC

Jawaban:


18

Jawaban singkat karena saya tidak punya waktu untuk lebih baik: ini adalah masalah yang menantang; data biner hampir selalu membutuhkan semacam binning atau smoothing untuk menilai goodness of fit. Itu agak membantu untuk menggunakan fortify.lmerMod(dari lme4, eksperimental) dalam hubungannya dengan ggplot2dan terutama geom_smooth()untuk menggambar pada dasarnya plot sisa-vs-pas yang sama yang Anda miliki di atas, tetapi dengan interval kepercayaan (saya juga mempersempit batas y sedikit untuk memperbesar pada ( -5,5) wilayah). Itu menyarankan beberapa variasi sistematis yang dapat ditingkatkan dengan mengubah fungsi tautan. (Saya juga mencoba merencanakan residu melawan prediktor lain, tetapi itu tidak terlalu berguna.)

Saya mencoba menyesuaikan model dengan semua interaksi 3-arah, tetapi tidak banyak perbaikan baik dalam penyimpangan atau dalam bentuk kurva residu yang dihaluskan.

(logistik(x))λλ

## uses (fragile) internal C calls for speed; could use plogis(),
##  qlogis() for readability and stability instead
logitpower <- function(lambda) {
    L <- list(linkfun=function(mu)
              .Call(stats:::C_logit_link,mu^(1/lambda),PACKAGE="stats"),
              linkinv=function(eta)
              .Call(stats:::C_logit_linkinv,eta,PACKAGE="stats")^lambda,
              mu.eta=function(eta) {
                  mu <-  .Call(stats:::C_logit_linkinv,eta,PACKAGE="stats")
                  mu.eta <-  .Call(stats:::C_logit_mu_eta,eta,PACKAGE="stats")
                  lambda*mu^(lambda-1)*mu.eta
              },
              valideta = function(eta) TRUE ,
              name=paste0("logit-power(",lambda,")"))
    class(L) <- "link-glm"
    L
}

λ

Lihat juga: http://freakonometrics.hypotheses.org/8210


3

Ini adalah tema yang sangat umum pada kursus biostatistik / epidemiologi, dan tidak ada solusi yang sangat baik untuk itu, pada dasarnya karena sifat model. Seringkali solusinya adalah menghindari diagnostik terperinci menggunakan residu.

Ben sudah menulis bahwa diagnostik sering kali memerlukan binning atau smoothing. Binning residual adalah (atau) tersedia di R lengan paket, lihat misalnya, thread ini . Selain itu, ada beberapa pekerjaan yang dilakukan yang menggunakan probabilitas yang diprediksi; satu kemungkinan adalah plot pemisahan yang telah dibahas sebelumnya di utas ini . Mereka mungkin atau mungkin tidak secara langsung membantu dalam kasus Anda, tetapi dapat membantu interpretasi.


-1

Anda bisa menggunakan AIC alih-alih plot residual untuk memeriksa kecocokan model. Perintah dalam R: AIC (model1) itu akan memberi Anda angka ... jadi Anda perlu membandingkan ini dengan model lain (misalnya dengan lebih banyak prediktor) - AIC (model2), yang akan menghasilkan nomor lain. Bandingkan kedua output, dan Anda ingin model dengan nilai AIC yang lebih rendah.

Ngomong-ngomong, hal-hal seperti AIC dan rasio kemungkinan log sudah terdaftar ketika Anda mendapatkan ringkasan dari model glmer Anda, dan keduanya akan memberi Anda informasi yang berguna tentang kecocokan model. Anda ingin angka negatif besar untuk rasio kemungkinan log untuk menolak hipotesis nol.


3
Ini akan lebih berguna jika OP mencoba untuk membandingkan model yang bersaing, tetapi sepertinya bukan itu yang mereka coba lakukan, dan AIC tidak dapat digunakan untuk mengevaluasi kesesuaian model absolut.
Patrick Coulombe

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.