为什么'parameters::model_parameters'为负二项式'rstanarm'模型抛出错误

为什么'parameters::model_parameters'为负二项式'rstanarm'模型抛出错误,r,lme4,mixed-models,sjplot,rstanarm,R,Lme4,Mixed Models,Sjplot,Rstanarm,我试图为stan\u glmer.nb(rstanarm)输出创建一个表,但是来自包parameters的model\u parameters抛出了一个奇怪的错误,我不确定如何解决。也许这是一个错误 缩短的sessionInfo()版本信息输出: R version 4.0.2 (2020-06-22) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack

我试图为
stan\u glmer.nb
rstanarm
)输出创建一个表,但是来自包
parameters
model\u parameters
抛出了一个奇怪的错误,我不确定如何解决。也许这是一个错误

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

R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

parameters_0.8.2
rstanarm_2.21.1
一个可重复的例子:

library(rstanarm)
library(parameters)

x<-rnorm(500)
dat<-data.frame(x=x,z=rep(c("A","B","C","D","E"),100), y=.2+x*.7)

mod1<-stan_glmer(y~x+(x|z),data=dat)

model_parameters(mod1, effects="all")
该模拟数据存在一些模型收敛问题等,但
model\u参数
适用于
glmer.nb
模型,但不适用于
stan\u glmer.nb
模型。知道这是怎么回事吗


我在使用完全不同的数据集时遇到了相同的问题,仍然无法理解为什么在
parameters::model_parameters
中“replacement”比“data”多2行(请参见上面的错误)。另外一行可能是函数不期望的
倒数离散
参数,但不确定函数为什么会有负二项GLMM的错误,这是非常常见的

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

Warning message:
'tidy_stan' is deprecated.
Use 'parameters::model_parameters()' instead.
See help("Deprecated") 

然而,如上所述,
parameters::model_parameters()
还不能正常工作。

尽管这是一个相当大的挑战,但我最终还是发现了这个错误(并且有一个简单的修复方法,如果太长而无法阅读,请参阅本文末尾)。我通过查找导致错误的指令来汇集线程。 首先是:

model_parameters(model = mod2, effects="all")
在以下位置失败:

parameters:::model_parameters.stanreg(model = mod2, effects="all", prior = T)
params <- parameters:::.extract_parameters_bayesian(mod2, centrality = "median", 
dispersion = F, ci = 0.89, ci_method = "hdi", 
test = "pd", rope_range = "default", rope_ci = 1, 
bf_prior = NULL, diagnostic = "ESS", priors = T, 
effects = "fixed", standardize = NULL)
parameters <- bayestestR:::describe_posterior.stanreg(mod2, centrality = "median", 
dispersion = F, ci = 0.89, ci_method = "hdi", 
test = "pd", rope_range = "default", rope_ci = 1, 
bf_prior = NULL, diagnostic = "ESS", priors = T)
priors_data <- bayestestR:::describe_prior.stanreg(mod2)
priors <- insight:::get_priors.stanreg(mod2)
在以下位置失败:

parameters:::model_parameters.stanreg(model = mod2, effects="all", prior = T)
params <- parameters:::.extract_parameters_bayesian(mod2, centrality = "median", 
dispersion = F, ci = 0.89, ci_method = "hdi", 
test = "pd", rope_range = "default", rope_ci = 1, 
bf_prior = NULL, diagnostic = "ESS", priors = T, 
effects = "fixed", standardize = NULL)
parameters <- bayestestR:::describe_posterior.stanreg(mod2, centrality = "median", 
dispersion = F, ci = 0.89, ci_method = "hdi", 
test = "pd", rope_range = "default", rope_ci = 1, 
bf_prior = NULL, diagnostic = "ESS", priors = T)
priors_data <- bayestestR:::describe_prior.stanreg(mod2)
priors <- insight:::get_priors.stanreg(mod2)

事实上,这是一个bug,应该报告(只是bug处于依赖项的依赖项中;例如R-package“insight”).

使用performance v 0.6.1,我得到Stan/NB模型的空白/空输出,而不是错误…这:
dat@BenBolker我不确定我是如何意外地编写了
performance
而不是
parameters
,但它看起来并不像
performance
那样被调用-很抱歉混淆了。为清晰起见,对问题进行了编辑。@Smithgoestowashington先生抱歉,我已经将
x=rnorm(500)
拉到了数据帧参数之外,现在应该可以工作了。当我创建这个问题时,我一定已经运行了这条线,并且在我的工作环境中有x。也许需要考虑的是:neg bin是离散的。。尝试另一个离散分布,我得到了相同的错误。。