Çoklu karşılaştırmalar için hiyerarşik modeller - çoklu sonuçlar bağlamı


10

Gelman'ı (yeniden) okudum Neden (genellikle) birden fazla karşılaştırma konusunda endişelenmek zorunda değiliz . Özellikle "Birden fazla sonuç ve diğer zorluklar" bölümünde, aynı kişi / üniteden farklı zamanlarda / koşullarda birden fazla ilgili önlemin bulunduğu durumlar için hiyerarşik bir model kullanılmıştır. Bir dizi istenen özelliğe sahip olduğu görülmektedir.

Bunun mutlaka Bayesci bir şey olmadığını anlıyorum. Birisi bana rjags ve / veya lmer kullanarak çok değişkenli çok düzeyli bir modelin nasıl düzgün bir şekilde oluşturulacağını gösterebilirdi (normal JAGS ve BUGS da iyi olmalı, örneğin diğer MCMCglmm gibi). kontrast sonuçları? Model istediğim durumun türü aşağıdaki oyuncak verilerine yansıtılır (çok değişkenli, tekrarlanan ölçümler):

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?

Benim için sorunuzun ne olduğu belli değil ... Bu soru işaretini kaçırıyorum :)
Rasmus Bååth

@ RasmusBååth Kabul ediyorum, umarım ne istediğimi daha net hale getirmek için düzenledim. Teşekkürler.
Matt Albrecht

Yanıtlar:


3

Bence hiyerarşik Bayesci model için makul bir kısmi çözümüm var. rjagsAşağıdaki kod ....

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")

Yine, Bayes temel tekrar Kruschke önlemler senaryo


3

Sonunda benim sorunun bir literatür çözüm buldu alanlarda iç içe birden sonuçlar için Bayes modelleri Thurston ve arkadaşları tarafından. 2009. Değişkenlerin alana bağlı doğasını yansıtan tekli veya çoklu alanlar için hiyerarşik bir model önerirler. Etki alanları arasındaki bireyler ve bireyler için (birden çok etki alanı varsa) rastgele efektler içerir. Tekrarlanan ölçümleri veya uzunlamasına tasarımları içerecek şekilde kolayca genişletilebilir.
Not: Cevabı yakında tamamlamak için buraya bir JAGS modeli göndereceğim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.