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

R语言中如何使用分位数值作为贝叶斯先验并求解后验分布

分位值先验的可行性

完全可以。专家给出的分位判断是贝叶斯分析中非常常规的先验信息来源——实际征询专家先验的时候,很少有专家能直接给出明确的分布参数,绝大多数产出都是“某值有P概率小于X”这类分位形式的陈述,这类信息完全可以用来构建合法的贝叶斯先验,不存在方法学问题。
你手里的3个分位点(10%、50%、90%分位)已经足够锚定一个适配的参数化先验分布,后续计算得到的后验和先验的偏差、对应的贝叶斯因子,刚好可以作为你证伪专家判断的量化依据。需要注意你给出的示例里90%分位值0.4远高于观测数据的最大值0.06,右偏特征明显,拟合先验的时候不用硬套对称正态分布,可以选偏态分布降低拟合误差。

可用R包
  • rriskDistributions:专门用于根据已知分位点匹配参数化分布的工具包,支持正态、对数正态、偏态正态、伽马等几乎所有常用连续分布,输入分位对应的概率和取值,就能自动输出拟合误差最小的分布参数,不需要手动写优化函数。
  • cmdstanr/rstan:目前最通用的贝叶斯MCMC采样工具,适配自定义似然和任意形式的先验,对正态分布这类简单模型收敛速度快、结果稳定,适合手动控制建模细节。
  • brms:基于Stan封装的高层建模包,语法和R基础包中的lm接近,不需要手写Stan代码就能指定先验、构建模型、完成采样,上手门槛更低。
  • bayestestR:后验结果分析工具,可以直接计算后验分位、贝叶斯因子、假设检验相关指标,匹配你证伪专家判断的分析需求。
后验分布求解流程

你的观测数据服从正态分布,待估参数为总体均值μ和总体标准差σ,按以下步骤操作即可得到后验:

  1. 将专家分位转换为参数化先验
    首先明确专家分位对应的参数:绝大多数场景下专家给出的是总体均值μ的分位判断,直接把3组分位的概率、取值输入rriskDistributions的对应拟合函数,优先选分位拟合残差最小的分布类型(比如你给出的示例右偏明显,对数正态、偏态正态的拟合效果会远好于对称正态),输出的分布参数就是μ的先验。如果没有专家对σ的判断,给σ设置弱信息半正态先验即可,不会对结果造成强干扰。
  2. 定义似然
    独立同分布正态样本的似然为所有观测点在给定μ、σ下的正态概率密度乘积,用brms或rstan建模时会自动生成对应的似然逻辑,不需要手动编写。
  3. MCMC采样得到后验
    把拟合好的先验、观测数据、似然传入采样器,常规设置为4条采样链,每条链迭代2000次,前1000次作为预热阶段丢弃,所有参数的Rhat值小于1.01即说明采样收敛,得到的有效采样样本就是对应参数的后验分布。

最小可复现代码示例:

# 加载包
library(rriskDistributions)
library(brms)
library(bayestestR)

# 输入观测数据
dat <- data.frame(y = c(0.02, 0.03, 0.04, 0.05, 0.02, 0.03, 0.04, 0.06, 0.04))

# 拟合专家分位得到μ的先验参数(以正态分布为例,可换其他分布降低拟合误差)
expert_p <- c(0.1, 0.5, 0.9)
expert_q <- c(0.02549306, 0.04774, 0.4)
prior_fit <- get.norm.par(p = expert_p, q = expert_q, plot = FALSE)

# 指定模型先验
model_priors <- c(
  prior(normal(prior_fit["mean"], prior_fit["sd"]), class = Intercept), # μ的专家先验
  prior(half_normal(0, 0.1), class = sigma) # σ的弱信息先验
)

# 采样得到后验
fit <- brm(y ~ 1, data = dat, family = gaussian(), prior = model_priors,
           iter = 2000, chains = 4, cores = 4, seed = 123)

# 提取后验样本,可直接用于后续证伪分析
posterior_sample <- as.data.frame(fit)
# 示例:计算专家给出的中位数0.04774在后验分布中的累积概率,值越接近0或1说明专家判断和数据支持的结论差异越大
1 - ecdf(posterior_sample$b_Intercept)(0.04774)

如果专家给出的分位是对整体观测指标的分布判断、而非针对均值μ,只需要调整第一步的先验拟合逻辑,将分位匹配到对应参数即可,整体流程不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 23:30:52