Các mô hình phân cấp cho nhiều so sánh - bối cảnh nhiều kết quả


10

Tôi vừa mới (đọc lại) Gelman Tại sao chúng ta (thường) không phải lo lắng về nhiều so sánh . Cụ thể, phần "Nhiều kết quả và các thách thức khác" đề cập đến việc sử dụng mô hình phân cấp cho các tình huống khi có nhiều biện pháp liên quan từ cùng một người / đơn vị tại các thời điểm / điều kiện khác nhau. Nó dường như có một số tính chất mong muốn.

Tôi hiểu rằng đây không nhất thiết là một thứ Bayes. Ai đó có thể chỉ cho tôi cách xây dựng đúng mô hình đa cấp bằng cách sử dụng rjags và / hoặc lmer (JAGS và BUGS thông thường cũng tốt, cũng như các thư viện mô hình hỗn hợp khác, ví dụ, MCMCglmm) để tôi có thể chơi xung quanh với nó để so sánh và so sánh kết quả tương phản? Loại tình huống tôi muốn một mô hình cho được phản ánh trong dữ liệu đồ chơi bên dưới (đa biến, các biện pháp lặp lại):

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?

Đối với tôi không rõ câu hỏi của bạn là gì ... Tôi đang thiếu dấu chấm hỏi đó :)
Rasmus Bååth

@ RasmusBååth Tôi đồng ý, tôi đã chỉnh sửa nó để hy vọng làm cho nó rõ ràng hơn những gì tôi muốn. Cảm ơn.
Matt Albrecht

Câu trả lời:


3

Tôi nghĩ rằng tôi đã có một giải pháp hợp lý cho mô hình Bayes phân cấp. rjagsMã dưới đây ....

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

Một lần nữa, Bayesian lặp đi lặp lại các biện pháp kịch bản từ Kruschke


3

Cuối cùng tôi đã tìm thấy một giải pháp tài liệu cho vấn đề của mình về các mô hình Bayes cho nhiều kết quả được lồng trong các miền của Thurston et al. 2009. Họ đề xuất một mô hình phân cấp cho một hoặc nhiều tên miền phản ánh bản chất phụ thuộc miền của các biến. Nó kết hợp các hiệu ứng ngẫu nhiên cho các cá nhân và cá nhân trên các miền (nếu có nhiều tên miền). Nó cũng có thể dễ dàng được mở rộng để bao gồm các biện pháp lặp đi lặp lại hoặc thiết kế theo chiều dọc.
Lưu ý: Tôi sẽ đăng mô hình JAGS lên đây để hoàn thành câu trả lời sớm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.