首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rstanarm之前的位置必须大于0

rstanarm之前的位置必须大于0
EN

Stack Overflow用户
提问于 2017-12-27 00:48:06
回答 1查看 566关注 0票数 0

我正在尝试使用分层收缩先验在rstanarm中拟合线性模型。但是,我得到了一个错误,指出之前的位置必须大于0。

代码语言:javascript
复制
Error: location > 0 is not TRUE

我有点惊讶,因为hs()之前没有位置参数。我尝试使用标准正态先验拟合相同的模型,得到相同的错误,这对我来说没有太大意义,因为0居中先验是默认选项。

我已经查看了github存储库中的stan_lm.Rstan_lm.fit.R文件,但我无法找到此错误的来源。

下面我包含了复制错误的代码,请注意,在这个例子中先验的选择可能不是很好,但这段代码的唯一目的是说明我得到的错误:

代码语言:javascript
复制
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))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-27 07:39:41

尝试使用stan_glm来拟合您的正态线性模型。stan_lm函数要求在R^2上指定先验,而不是回归系数-因此该位置必须大于0。

有关更多详细信息,请参阅stan_lmprior参数的文档。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47981405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档