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

使用R语言abc包进行ABC参数校准:估计结果不准确求助

ABC参数校准结果偏差问题排查求助

我正尝试使用近似贝叶斯计算(ABC)校准参数,使模型输出变量贴近文献中的观测值,采用R语言的abc包实现。第一步通过cv4abc函数测试容忍率对ABC估计结果的影响,但发现估计值与真实值偏差极大。我已测试rejection、loclinear、neuralnet三种ABC算法,以及none、log两种转换方式,推测代码存在问题,恳请协助排查估计不准确的原因,或推荐更合适的参数校准方法。

相关信息

  • 数据集:包含模拟响应值、simulated_RMSE(每行模拟响应值与文献均值1.5的RMSE)、param_1至param_20
  • 文献中观测响应变量:最小值0.5,最大值2.5,均值1.5
  • 模拟汇总统计量:数据集内的simulated_RMSE
  • 待估计参数:param_1至param_20
  • 观测汇总统计量:0(即RMSE=0)
  • 示例结果图:rejection方法none转换参数估计图

代码实现

library(abc)

data <- read.csv("C:/Users/Downloads/Test.csv")
## summary(data)

## Observed summary statistics
observed_summary_statistics <- 0

## Simulated summary statistics
simulated_summary_statistics <- data[, c("simulated_RMSE")]
## summary(simulated_summary_statistics)

## Simulated parameter values
simulated_parameters <- data[, !(colnames(data) %in% c("simulated_response", "simulated_RMSE"))]
## summary(simulated_parameters)

## Run the "cv4abc" function of the "abc" package
cv_abc_rejection <- abc::cv4abc(param = simulated_parameters, sumstat = simulated_summary_statistics, nval = 100, tols = c(0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1), method = "rejection", transf = "none")
## plot(cv_abc_rejection)
## summary(cv_abc_rejection)

cv_abc_rejection_log <- abc::cv4abc(param = simulated_parameters, sumstat = simulated_summary_statistics, nval = 100, tols = c(0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1), method = "rejection", transf = "log")
## plot(cv_abc_rejection_log)
## summary(cv_abc_rejection_log)

cv_abc_loclinear <- abc::cv4abc(param = simulated_parameters, sumstat = simulated_summary_statistics, nval = 100, tols = c(0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1), method = "loclinear", transf = "none")
## plot(cv_abc_loclinear)
## summary(cv_abc_loclinear)

cv_abc_loclinear_log <- abc::cv4abc(param = simulated_parameters, sumstat = simulated_summary_statistics, nval = 100, tols = c(0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1), method = "loclinear", transf = "log")
## plot(cv_abc_loclinear_log)
## summary(cv_abc_loclinear_log)

cv_abc_neuralnet <- abc::cv4abc(param = simulated_parameters, sumstat = simulated_summary_statistics, nval = 100, tols = c(0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1), method = "neuralnet", transf = "none")
## plot(cv_abc_neuralnet)
## summary(cv_abc_neuralnet)

cv_abc_neuralnet_log <- abc::cv4abc(param = simulated_parameters, sumstat = simulated_summary_statistics, nval = 100, tols = c(0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1), method = "neuralnet", transf = "log")
## plot(cv_abc_neuralnet_log)
## summary(cv_abc_neuralnet_log)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:14:53