You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用readRDS加载Stan模型输出报错:对象mod.dyn未找到

问题:读取Stan拟合结果后出现object 'mod.dyn' not found错误

我用Stan运行贝叶斯潜变量模型,运行代码如下:

# 运行Stan模型 
mod.dyn <- stan(file="DynamicLVMmin.stan",
                data=stan.data, seed=570175513, thin = 5,
                iter=10000)

模型运行正常,之后用以下代码保存拟合结果:

# 保存Stan拟合结果
saveRDS(mod.dyn, "dynamic_fit.rds")

现在读取dynamic_fit.rds并想用Gelman-Rubin R-hat诊断收敛性,代码如下:

readRDS("dynamic_fit.rds")

params <- c("innov", "c_n_4_v2exdfdshs", "c_n_5_v2exdfvths", "c_n_3_v2exdfpphs", "c_n_5_v2lginvstp", 
            "c_n_3_v2lgoppart", "c_n_2_v2lgfunds", "c_n_4_v2lgcomslo", "c_n_2_v2lgintbup", "c_n_2_v2lgintblo", 
            paste("beta[", 1:9, "]", sep=""))

params.all <- names(mod.dyn)

但收到错误:

Error: object 'mod.dyn' not found
Execution halted

错误原因

你遗漏了**将读取的RDS对象赋值给mod.dyn**这一步。saveRDS()确实把mod.dyn保存到了文件里,但readRDS()仅读取文件内容,不会自动将内容绑定到原变量名,必须显式赋值才能在后续代码中调用该对象。

修正后的代码

# 读取拟合结果并赋值给mod.dyn
mod.dyn <- readRDS("dynamic_fit.rds")

params <- c("innov", "c_n_4_v2exdfdshs", "c_n_5_v2exdfvths", "c_n_3_v2exdfpphs", "c_n_5_v2lginvstp", 
            "c_n_3_v2lgoppart", "c_n_2_v2lgfunds", "c_n_4_v2lgcomslo", "c_n_2_v2lgintbup", "c_n_2_v2lgintblo", 
            paste("beta[", 1:9, "]", sep=""))

params.all <- names(mod.dyn)

后续收敛性诊断示例

完成赋值后,可以用以下代码计算或可视化指定参数的Gelman-Rubin R-hat值:

# 计算指定参数的R-hat值
summary(mod.dyn, pars = params)$summary[, "Rhat"]

# 可视化R-hat值(需加载bayesplot包)
library(bayesplot)
mcmc_rhat(rstan::extract(mod.dyn, pars = params))

内容的提问来源于stack exchange,提问作者w5698

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 20:55:23