Hubungan antara uji McNemar dan regresi logistik bersyarat

14

Saya tertarik pada pemodelan data respons biner dalam observasi berpasangan. Kami bertujuan untuk membuat kesimpulan tentang efektivitas intervensi pra-pasca dalam suatu kelompok, berpotensi menyesuaikan diri untuk beberapa kovariat dan menentukan apakah ada modifikasi efek oleh kelompok yang menerima pelatihan yang sangat berbeda sebagai bagian dari intervensi.

Diberikan data dari formulir berikut:

id phase resp
1  pre   1
1  post  0
2  pre   0
2  post  0
3  pre   1
3  post  0

Dan tabel kontingensi informasi tanggapan berpasangan:2×2

PraBenarSalahPosBenarSebuahbSalahcd

Kami tertarik pada pengujian hipotesis: .H0:θc=1

Uji McNemar memberikan: bawah (asimptotik). Ini intuitif karena, di bawah nol, kami berharap proporsi yang sama dari pasangan sumbang ( dan ) lebih menyukai efek positif ( ) atau efek negatif ( ). Dengan probabilitas definisi case positif didefinisikan dan . Peluang untuk mengamati pasangan sumbang positif adalah . H0bcbcp=bQ=(b-c)2b+cχ12H0bcbc n=b+cphal=bb+cn=b+chal1-hal=bc

Di sisi lain, regresi logistik bersyarat menggunakan pendekatan yang berbeda untuk menguji hipotesis yang sama, dengan memaksimalkan kemungkinan bersyarat:

L.(X;β)=j=1nexp(βXj,2)exp(βXj,1)+exp(βXj,2)

di mana .exp(β)=θc

Jadi, apa hubungan antara tes-tes ini? Bagaimana seseorang dapat melakukan tes sederhana dari tabel kontingensi yang disajikan sebelumnya? Melihat kalibrasi nilai-p dari pendekatan clogit dan McNemar di bawah nol, Anda akan berpikir mereka sama sekali tidak berhubungan!

library(survival)
n <- 100
do.one <- function(n) {
  id <- rep(1:n, each=2)
  ph <- rep(0:1, times=n)
  rs <- rbinom(n*2, 1, 0.5)
  c(
    'pclogit' = coef(summary(clogit(rs ~ ph + strata(id))))[5],
    'pmctest' = mcnemar.test(table(ph,rs))$p.value
  )
}

out <- replicate(1000, do.one(n))
plot(t(out), main='Calibration plot of pvalues for McNemar and Clogit tests', 
  xlab='p-value McNemar', ylab='p-value conditional logistic regression')

masukkan deskripsi gambar di sini

AdamO
sumber
Ini menarik! Kedua metode harus memiliki hasil yang sama sesuai dengan teori. Jika saya memahami pertanyaan dengan benar, hipotesis nol dari uji McNemar adalah , sedangkan hipotesis nol dari uji regresi logistik bersyarat adalah rasio odds dalam strata. halb=halcSebuahd/bc=1
Randel
Saya ingat bahwa seseorang dapat membuat parameter tes McNemar sebagai tes rasio peluang, jadi saya bertanya-tanya bagaimana seseorang akan menuliskan kemungkinan (conditional likelihood?) Untuk pengujian tersebut.
AdamO
Saya tidak yakin apakah yang Anda maksud adalah versi tepatnya dari McNemar's Test. Breslow and Day (1980) , hlm. 164-166 dan paket exact2x2 dapat menjadi referensi.
Randel

Jawaban:

4

Maaf, ini masalah lama, saya menemukan ini secara kebetulan.

Ada kesalahan dalam kode Anda untuk tes mcnemar. Coba dengan:

n <- 100
do.one <- function(n) {
  id <- rep(1:n, each=2)
  case <- rep(0:1, times=n)
  rs <- rbinom(n*2, 1, 0.5)
  c(
    'pclogit' = coef(summary(clogit(case ~ rs + strata(id))))[5],
    'pmctest' = mcnemar.test(table(rs[case == 0], rs[case == 1]))$p.value
  )
}

out <- replicate(1000, do.one(n))

masukkan deskripsi gambar di sini

eusebe
sumber
Wow! Terima kasih dan selamat datang di komunitas. Hanya untuk memperjelas, McNemar bekerja pada pasangan yang cocok sumbang (?) Apakah pasangan seperti itu dikeluarkan dari clogit? Saya tidak melihat bagaimana id terlibat dalam perhitungan hasil mcnemar. Mungkin menghasilkan korelasi dalam hal ini akan membantu menjelaskan apa yang dilakukan clogit.
AdamO
2

Ada 2 model statistik yang bersaing. Model # 1 (hipotesis nol, McNemar): probabilitas benar ke salah = probabilitas salah ke benar = 0,5 atau setara b = c. Model # 2: probabilitas benar ke salah <probabilitas salah ke benar atau setara b> c. Untuk model # 2 kami menggunakan metode kemungkinan maksimum dan regresi logistik untuk menentukan parameter model yang mewakili model 2. Metode statistik terlihat berbeda karena masing-masing metode mencerminkan model yang berbeda.

AMM
sumber
Anda mengatakan clogit bukan tes dua sisi?
AdamO