Model hierarkis untuk perbandingan multipel - konteks hasil berganda

10

Saya baru saja (kembali) membaca Gelman's Why kita (biasanya) tidak perlu khawatir tentang beberapa perbandingan . Khususnya bagian "Berbagai hasil dan tantangan lain" menyebutkan menggunakan model hierarkis untuk situasi ketika ada beberapa tindakan terkait dari orang / unit yang sama pada waktu / kondisi yang berbeda. Tampaknya memiliki sejumlah properti yang diinginkan.

Saya mengerti bahwa ini belum tentu merupakan hal Bayesian. Bisakah seseorang menunjukkan kepada saya bagaimana membangun model multilevel multilevel dengan menggunakan rjags dan / atau lmer (JAGS dan BUGS biasa seharusnya juga baik-baik saja, serta perpustakaan model campuran lain misalnya, MCMCglmm) sehingga saya dapat bermain-main dengannya untuk membandingkan dan hasil kontras? Jenis situasi yang saya ingin model untuk tercermin dalam data mainan di bawah ini (multivarian, tindakan berulang):

set.seed(69)
id     <- factor(rep(1:20, 2))                # subject identifier
dv1    <- c(rnorm(20), rnorm(20,  0.8, 0.3))  # dependent variable 1 data for 2 conditions
dv2    <- c(rnorm(20), rnorm(20,  0.3, 0.6))
dv3    <- c(rnorm(20), rnorm(20, -0.3, 0.8))
dv4    <- c(rnorm(20), rnorm(20,  0.2, 1  ))
dv5    <- c(rnorm(20), rnorm(20,  0.5, 4  ))
rmFac  <- factor(rep(c(1, 2), each=20))       # repeated measures factor
dvFac  <- factor(rep(1:5, each=40))           # dependent variable indicator

dfwide <- data.frame(id, dv1, dv2, dv3, dv4, dv5, rmFac)
dflong <- data.frame(id, dv = c(dv1, dv2, dv3, dv4, dv5), rmFac, dvFac) # just in case it's easier?
Matt Albrecht
sumber
Bagi saya tidak jelas apa pertanyaan Anda ... Saya melewatkan tanda tanya itu :)
Rasmus Bååth
@ RasmusBååth Saya setuju, saya telah mengeditnya dengan mudah-mudahan membuatnya lebih jelas apa yang saya inginkan. Terima kasih.
Matt Albrecht

Jawaban:

3

Saya pikir saya punya solusi parsial yang masuk akal untuk model Bayesian hirarkis. rjagsKode di bawah ini ....

dflong$dv <- scale(dflong$dv)[,1]
dataList = list(  
    y = dflong$dv, 
    rmFac  = dflong$rmFac ,
    dvFac  = dflong$dvFac ,
    id     = dflong$id ,
    Ntotal = length(dflong$dv) ,
    NrmLvl = length(unique(dflong$rmFac)),
    Ndep   = length(unique(dflong$dvFac)),
    NsLvl  = length(unique(dflong$id))
)

modelstring = "
model {
for( i in 1:Ntotal ) {
    y[i] ~ dnorm( mu[i] , tau[rmFac[i], dvFac[i]])
    mu[i] <- a0[ dvFac[i] ] + aS[id[i], dvFac[i]] + a1[rmFac[i] , dvFac[i]]
}
for (k in 1:Ndep){
    for ( j in 1:NrmLvl ) { 
        tau[j, k] <- 1 / pow( sigma[j, k] , 2 )
        sigma[j, k] ~  dgamma(1.01005,0.1005)
    }
}
for (k in 1:Ndep) {
    a0[k] ~ dnorm(0, 0.001)
    for (s in 1:NsLvl){
        aS[s, k] ~ dnorm(0.0, sTau[k])
    }
    for (j in 1:NrmLvl) {
        a1[j, k] ~ dnorm(0, a1Tau[k])
    }
    a1Tau[k] <- 1/ pow( a1SD[k] , 2)
    a1SD[k]  ~ dgamma(1.01005,0.1005)

    sTau[k] <- 1/ pow( sSD[k] , 2)
    sSD[k]  ~ dgamma(1.01005,0.1005)
}
}
" # close quote for modelstring
writeLines(modelstring,con="model.txt")

Sekali lagi, pangkalan Bayesian mengulangi skrip tindakan dari Kruschke

Matt Albrecht
sumber
3

Saya akhirnya menemukan solusi literatur untuk model Bayesian masalah saya untuk beberapa hasil yang bersarang di domain oleh Thurston et al. 2009. Mereka mengusulkan model hierarkis untuk domain tunggal atau ganda yang mencerminkan sifat dependen domain dari variabel. Ini memasukkan efek acak untuk individu dan individu di seluruh domain (jika ada banyak domain). Hal ini juga dapat dengan mudah diperluas untuk mencakup tindakan berulang atau desain longitudinal.
Catatan: Saya akan memposting model JAGS di sini untuk segera menyelesaikan jawabannya

Matt Albrecht
sumber