2017-04-05 10 views
1

R JAGS의 간단한 질문에 당황 스럽습니다. 예를 들어, 10 개의 매개 변수가 있습니다. d [1], d [2], ..., d [10]. 데이터에서 직관적으로 증가해야합니다. 그래서 저는 그것들에 제약 조건을 넣고 싶습니다. '이 일R JAGS의 매개 변수 순서 제한

d[1]~dnorm(0,0.0001) 
    for (j in 2:10){ 
    d[j]~dnorm(0,0.0001)I(d[j-1],) 
    } 

,하지만 난 돈 : 그럼 난이 시도

model{ 
    ... 
    for (j in 1:10){ 
    d.star[j]~dnorm(0,0.0001) 
    } 
    d=sort(d.star) 
    } 

: 여기

내가 할 수 있지만 "부모와 일치하지 않는 노드"라는 오류 메시지를 주려고 노력 무엇인가 이것이 올바른 방법인지를 모릅니다. 생각을 나누시겠습니까?

감사합니다.

답변

1

이와 같은 것에 대해 확신이 서지 않으면, 일부 데이터를 시뮬레이션하여 제안하는 모델 구조가 작동하는지 확인하십시오 (스포일러 경고 : 해당).

cat('model{ 
    d[1] ~ dnorm(0, 0.0001) # intercept 
    d[2] ~ dnorm(0, 0.0001) 
    for(j in 3:11){ 
    d[j] ~ dnorm(0, 0.0001) I(d[j-1],) 
    } 
    for(i in 1:200){ 
    y[i] ~ dnorm(mu[i], tau) 
    mu[i] <- inprod(d, x[i,]) 
    } 
    tau ~ dgamma(0.01,0.01) 
    }', 
file = "model_example.R")``` 

그리고 여기 내가이 모델을 사용하는 시뮬레이션 데이터입니다 : 여기

은 내가 사용하는 모델입니다.

library(run.jags) 
library(mcmcplots) 

# intercept with sorted betas 
set.seed(161) 
betas <- c(1,sort(runif(10, -5,5))) 

# make covariates, 1 for intercept 
x <- cbind(1,matrix(rnorm(2000), nrow = 200, ncol = 10)) 

# deterministic part of model 
y_det <- x %*% betas 

# add noise 
y <- rnorm(length(y_det), y_det, 1) 

data_list <- list(y = as.numeric(y), x = x) 

# fit the model 
mout <- run.jags('model_example.R',monitor = c("d", "tau"), data = data_list) 

이에 따라, 우리는 추정을 플롯과 실제 매개 변수가

caterplot(mout, "d", reorder = FALSE) 
points(rev(c(1:11)) ~ betas, pch = 18,cex = 0.9) 

검은 점

가 true 매개 변수 값입니다 값 오버레이 할 수 파란색 점과 선이 예상. 이 설정은 모든 매개 변수를 추정 할 수있는 충분한 데이터가있는 한 괜찮습니다.

+0

감사합니다. 이것은 매우 도움이됩니다. – user3669725

1

처음 구현시 구문 오류가있는 것 같습니다. 시도해보십시오.

model{ 
    ... 
    for (j in 1:10){ 
    d.star[j]~dnorm(0,0.0001) 
    } 
    d[1:10] <- sort(d.star) # notice d is indexed. 
} 

두 번째 구현의 결과와 비교해보십시오. 문서에 따르면이 둘은 모두 정확하지만 기능은 sort을 사용하는 것이 좋습니다.

+0

지적 해 주셔서 감사합니다! 내 실제 코드는 실제로이 D [1:10] 조각을 가지고 있지만 여전히 같은 오류가 있습니다 .... 나는 이것에 대해 또 다른 질문을 던졌습니다 : http://stackoverflow.com/questions/43216398/jags-model-with- 오류 노드 - 부모와 모순 됨 – user3669725