问题标签 [rstanarm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
92 浏览

r - 如何为 rstanarm 中的 stan_lmer 多级模型指定信息先验?

我正在 rstanarm 中创建一个贝叶斯多级模型,以通过人口控制来预测每年政党身份的满意度(使用年份作为第二级)。(我是 rstanarm 的新手,所以我的语法可能会关闭)。公式为:

响应变量“nhssat”采用李克特 5 点量表。因为我删除截距是为了预测实际的满意度(即 3.5),所以我的先验是系数将接近 3,并且绝对不会高于 5 且低于 1。

鉴于这是一个多级模型,我无法理解有关指定先验的小插曲。考虑到响应变量的李克特性质,我需要使用什么代码来指定更准确的先验?

0 投票
1 回答
152 浏览

r - 为什么`parameters::model_parameters`会为负二项式`rstanarm`模型抛出错误

我正在尝试为stan_glmer.nb( rstanarm) 输出创建一个表,但从model_parameters包中parameters抛出一个奇怪的错误,我不确定如何解决。也许这是一个错误。

版本信息的缩短sessionInfo()输出:

一个可重现的例子:

我将在这里为您省去输出,因为它并不重要,但该功能有效。现在负二项式模型:

现在出现错误消息:

尽管使用parameters0.10.1 版,@BenBolker 得到一个空白输出,而不是错误(见评论)。无论哪种方式,这个函数似乎都不适用于rstanarm离散分布(见评论)。据我在帮助文档中看到的,没有任何迹象表明需要指定负二项式模型。此外,该功能适用​​于lme4模型:

此模拟数据存在一些模型收敛问题等,但model_parameters适用于glmer.nb模型,但不适用于stan_glmer.nb模型。知道这里发生了什么吗?


我在使用完全不同的数据集时遇到了同样的问题,但仍然无法弄清楚为什么“替换”比“数据”多 2 行parameters::model_parameters(参见上面的错误)。另一行可能是reciprocal_dispersion函数不期望的参数,但不确定为什么该函数会出现负二项式 glmms 的错误,这很常见。

请注意,包中的tidy_stan功能sjPlot仍然适用于这些模型,但会发出警告:

然而,parameters::model_parameters()如上所述,它还不起作用。

0 投票
1 回答
118 浏览

r - 为什么 tab_model (sjPlot) 使用 rstanarm 模型重新运行 MCMC?

我正在使用tab_modelsjPlothttps://cran.r-project.org/web/packages/sjPlot/vignettes/tab_model_estimates.html)创建一个表。

但是,当我使用负二项式rstanarm模型对象时,会tab_model重新运行 MCMC 链。我的实际模型需要很多小时才能运行,所以这样做并不理想tab_model,但它似乎不适用于其他模型(例如 with glmerin lme4)。

现在创建模型表:

在此处输入图像描述

输出很快,正如预期的那样(虽然原始模型也运行得很快,所以也有可能tab_model在这里重新运行模型)。

现在当我尝试

它开始重新运行 MCMC。这是正常行为吗?如果是这样,是否有人熟悉关闭它的方法,只使用已经创建的模型对象,而不是重新运行模型?

0 投票
1 回答
49 浏览

r - 如何将“ppd”类的 R 对象转换为干净的 tibble?

rstanarm::posterior_predict() 创建类“ppd”“矩阵”“数组”的对象。我想将这些对象转换为干净的小标题。我试过了:

reprex 包于 2020-10-16 创建(v0.3.0)

我希望每一列都是一个 dbl,如果 pp 是一个简单的矩阵,我们会得到。但是,如您所见,每一列本身就是 ppd 类的对象。如何将“ppd”“矩阵”“数组”类的对象转换为带有简单数字列的小标题?

0 投票
0 回答
369 浏览

r - 从后验预测分布抽样(stan vs inla)

我正在尝试从bayesplot一个对象的包中实现函数,INLA并且有点不确定如何从后验预测分布中提取。我想我几乎拥有它,但rstan 平局比平局更具可INLA变性。

rstan中,使用bayesplot 小插图中的简化示例,我可以:

在此处输入图像描述

我想在一个INLA对象上复制该图。根据bayesplot小插图,您可以这样做,因为他们提供了代码来定义一个简单的pp_check方法来创建类的拟合模型对象,例如foo

要使用pp_check.foo,我们可以用yyrep组件创建一个列表,并给它类 foo:

英拉

inla_object_name$marginals.fitted.values返回每个 的后验预测分布y

我认为从这个重复采样会给我我需要的东西,但只有 75 个值(dim(fitted.Predictor.1)每个观察值用于创建这个分布,而实际上我想从全范围的值中采样。我认为我们可以做到这一点(部分4.3这里)通过inla.tmarginal使用线性预测器:

在此处输入图像描述

我的问题是我如何正确地从这个inla( fit_poisson_inla) 对象的后验预测分布中获取一个绘制矩阵以传递到pp_check yrep_poisson产生离散值,同时yrep_poisson_inla产生连续值。rstan平局的变化比INLA(第二个情节)要多得多。我所做的是否正确,这只是一些抽样问题,还是不同方法的产物?在更复杂的示例中,差异可能很大。

谢谢

0 投票
0 回答
118 浏览

r - 如何使用 stan_glm 从以前的研究中定义信息先验?

我正在尝试开发一个线性回归模型,用于从手印测量中估计身高。我想采用贝叶斯方法并从以前的研究中定义信息先验。我有一个包含几个预测变量(几个线性测量)和身高测量(作为目标变量)的数据集。

从以前的研究中,有关于线性回归模型的相同变量和公式的描述性统计(均值和标准差)的信息。所以,我的问题是,我如何使用这些信息来为我的研究提取信息先验?例如,我从之前的研究中获得了变量 HL 和身材的数据:

平均值 (HL) = 17.94, SD (HL) = 0.94, 平均值 (STATURE) = 178.5, SD (STATURE) = 7.05, 范围 (STURE) = (162.4–200.5)

身高估计模型 = 69.723 +5 .567 x HL, SEE = 4.83, r = 0.73

我如何使用它们在我的模型中构造prior和prior_intercept

此外,由于我的人口和先前研究的人口中的输出变量(身高)可能存在差异,有没有办法根据其他研究的结果来构建目标变量的先验。例如,如果我知道我的人口中的平均身高是 180 +/- 5 厘米。

我一直在寻找各种来源的解释(例如http://mc-stan.org/rstanarm/articles/priors.html),但是没有指南如何从以前的研究中构建信息先验。

0 投票
1 回答
25 浏览

r - 如何在 R 中的函数 stan_glm() 中更改我的间隔?

当我使用 stan_glm() 时,我不知道如何更改间隔。

我的代码:

我得到如下图所示的结果: 在此处输入图片描述

我们如何将间隔从 10% 更改为 2.5%,另一个从 90% 更改为 97.5%?

0 投票
2 回答
89 浏览

r - 如何仅在 rstanarm 中的一个特定预测变量上指定信息先验

我目前正在尝试使用 rstanarm 拟合贝叶斯多级模型。我预计——并且文献中有证据——我的主要预测因子的系数介于 0.15 和 0.65 之间。因此,我想设置一个信息先验,但仅针对此变量,并为其他变量保留信息量较弱的默认值。到目前为止,我有:

但是通过这种方式,它在我的所有协变量之前应用了信息。是否可以只为一个预测变量指定一个信息先验?

谢谢

0 投票
2 回答
312 浏览

r - 为什么在尝试使用 rstanarm 包部署应用程序时,Shiny 会出错

很长一段时间以来,一直在 Shiny 服务器站点上的 Shiny 应用程序中使用 rstanarm 包,并使用了我编写的许多应用程序。最近,Shiny 在尝试上传使用 rstanarm 的新应用程序时出错。如果我不使用 rstanarm 就没有问题。带有 rstanarm 的 Shiny 应用程序在本地运行良好,只是无法构建到 Shiny。下面是代码和部署日志的结尾:

当工作中的 IT 团队使用最新的 Microsoft 补丁更新我的 Windows 10 计算机时,问题就开始了。这可能是一个巧合,我所知道的是,直到此时我能够将使用 rstanarm 的应用程序部署到 Shiny 服务器。我还在一台非工作计算机上使用最新下载的 R、RStudiortools和所有相关软件包进行了尝试,但我得到了同样的错误。但这并不排除它是 Windows 的东西,因为非工作计算机也有所有最新的 Windows 更新。

版本:Windows 10、R 4.0.5、RStudio 1.4.1106、rstanarm 2.21.1、rstan 2.21.2、shiny 1.6.0、shinyWidgets 0.6.0、rtools 4.0、Rcpp 1.0.6、RcppEigen 0.3.3.9.1、 rsconnect 0.8.17。

到目前为止我已经尝试过:

  • 在截至 2021 年 4 月上旬从未安装过 R/RStudio 的 Windows 10 计算机上安装所有最新版本。
  • 在部署到 Shiny 时回滚到早期的 R 版本在rstanarm4.0.3(我认为)和 3.6.3 等版本中运行良好。
  • 安装rstanarmrstan从源代码而不是编译版本。
  • 编写一个新的、非常简单的应用程序,带和不带.rstanarm时都会出现相同的错误rstanarm

刚刚开始的另一件奇怪的事情 -rstan当我从 Shiny 应用程序中调用 r 会话时,它甚至在本地运行时崩溃。Rstan 在 RStudio 脚本中运行时不会使 R 崩溃,但在 Shiny 应用程序中运行时确实会崩溃。与 rstanarm 不同,带有 Rstan 的应用程序将构建到 Shiny 服务器,但随后 Shiny 服务器上的 rstan 应用程序在运行时出错,可能是因为它使 R 崩溃。

如果我在错误的地方发布了这个,请原谅我,并将我重定向到正确的地方发布这样的问题。

谢谢你。

0 投票
1 回答
89 浏览

r - 呈现 rstanarm 输出结果的最佳方式?

我想知道是否有人对显示 rstanarm 输出的最佳方式有任何建议。我通常喜欢 texreg::screenreg 和 stargazer,但没有一个接受 rstanarm 对象。如果它需要一个常规的 lm 对象以及直接将两个输出与外观相似的表进行比较,那么奖励!谢谢!