2017-12-26 29 views
0

이전에 계층 적 수축을 사용하여 rstanarm에 선형 모델을 맞추려고합니다. 나는 hs() 전에 위치 매개 변수를 가지고 있지 않기 때문에, 0보다 큰rstanarm 이전 위치는 0보다 커야합니다

Error: location > 0 is not TRUE 

내가 가지에 놀란다해야합니다 이전의 위치를 ​​알리는 오류 그러나 않습니다. 필자는 standar normal을 사용하여 동일한 모델을 피팅하려 시도했지만, 동일한 오류가 발생했습니다. 이는 0 센트의 사전 정렬자가 기본 옵션이므로 나에게별로 의미가 없습니다.

github 리포지토리에있는 stan_lm.Rstan_lm.fit.R 개의 파일을보고이 오류의 원인을 찾을 수 없었습니다. 내가 오류를 복제하는 코드를 포함 아래

,이 예에서는 전과의 선택이 매우 adecuate되지 않을 수도 있습니다,하지만이 코드 파이스 동전의 유일한 목적은 내가 점점 오전 오류 설명하는 것입니다하시기 바랍니다 :

library(rstanarm) 
library(tidyverse) 
library(MASS) 
nObs <- 400 
x <- mvrnorm(n = nObs, mu = c(0, 0, 0), 
      diag(c(0.5, 1, 2))) 
y <- (x %*% c(0.3, 0.4, 0.5)) + rnorm(n = nObs, 0, 1) 
fullData <- cbind(y, x) %>% as.data.frame 

model0 <- stan_lm(y ~ -1 + x, data = fullData, 
        prior = normal(location = 0, scale = 1)) 
model1 <- stan_lm(y ~ -1 + x, data = fullData, 
        prior = hs(df = 1, global_df = 1, global_scale = 0.01, 
          slab_df = 4, slab_scale= 2.5)) 

답변

2

일반적인 선형 모델에 맞게 stan_glm을 사용해보세요. stan_lm 함수는 회귀 계수가 아닌 R^2에 이전 값을 지정해야하므로 위치는> 0이어야합니다.

자세한 내용은 prior 매개 변수에 대한 설명서를 stan_lm에 표시하십시오.