贝叶斯推断把未知参数的不确定性表示为概率分布:分析前用 prior 描述已有信息,观测数据通过 likelihood 提供证据,二者结合得到 posterior。
prior + likelihood → posterior
Posterior 不是简单地“相信过去经验”,而是在明确模型下回答:看到当前数据以后,不同参数值还剩下多少相对支持。
贝叶斯公式
设未知参数为 ,观测数据为 :
| 部分 | 名称 | 含义 |
|---|---|---|
| Prior | 看到当前数据前,对参数的描述 | |
| Likelihood | 给定参数时,当前数据有多相容 | |
| Evidence / marginal likelihood | 对所有参数可能性积分后的标准化常数 | |
| Posterior | 看到数据后更新的参数分布 |
Evidence 为:
只关心 posterior 的相对形状时,常写成:
Likelihood 是参数的函数,但不是“参数为真的概率”。Posterior 才是在模型与 prior 条件下对参数不确定性的概率描述。
一个直观例子:Beta–Binomial 更新
假设 是某事件的发生概率。分析前使用:
它以 0.5 为中心,但分布较宽。观察 10 次独立试验,其中 8 次成功:
Beta prior 与 Binomial likelihood 共轭,因此 posterior 可以直接写出:
在 R 中查看 prior 与 posterior:
theta <- seq(0, 1, length.out = 1000)
prior <- dbeta(theta, shape1 = 2, shape2 = 2)
posterior <- dbeta(theta, shape1 = 10, shape2 = 4)
plot(
theta,
prior,
type = "l",
lty = 2,
xlab = expression(theta),
ylab = "Density"
)
lines(theta, posterior, lwd = 2)
legend(
"topleft",
legend = c("Prior: Beta(2, 2)", "Posterior: Beta(10, 4)"),
lty = c(2, 1),
lwd = c(1, 2),
bty = "n"
)
95% equal-tailed credible interval:
qbeta(c(0.025, 0.975), shape1 = 10, shape2 = 4)
计算 的 posterior probability:
1 - pbeta(0.5, shape1 = 10, shape2 = 4)
这类概率陈述是贝叶斯结果最直接的表达之一:在当前模型、prior 与数据条件下,参数超过阈值的 posterior probability 是多少。
Prior 怎样选择
Prior 不只有“主观经验”一种来源,可以按信息强度区分:
| 类型 | 目的 |
|---|---|
| Weakly informative prior | 排除极端、不合理参数,同时让数据保留较大影响 |
| Informative prior | 纳入可靠的既往研究或领域知识 |
| Skeptical prior | 把较多质量放在无效应附近,要求数据提供更强证据 |
| Regularizing prior | 稳定高维、稀疏或弱识别模型 |
Prior 应定义在参数有意义的尺度上。例如 logistic regression coefficient 位于 log-odds scale;直接说“使用 Normal(0, 10)”并不能判断它是否宽松,必须换算其隐含的 odds-ratio 范围。
Prior predictive simulation 可以在看到 outcome data 之前检查 prior 会生成什么样的结果:
draw parameters from prior
↓
simulate outcomes from likelihood
↓
check whether simulated data are plausible
如果 prior 经常生成现实中不可能的数据,它即使被称为“non-informative”,也不是一个好的默认选择。
Bayesian 与 frequentist 推断的区别
| 问题 | Frequentist | Bayesian |
|---|---|---|
| 未知参数 | 在重复抽样框架中视为固定但未知 | 用概率分布描述当前不确定性 |
| 数据 | 假想重复样本中的随机变量 | 观测后作为已知条件 |
| 区间 | Confidence interval | Credible interval |
| 检验 | p-value、test statistic | Posterior probability、Bayes factor、decision rule |
| 外部信息 | 可通过设计、约束、penalty 或模型纳入 | 通过 prior 显式进入概率模型 |
二者不是“只用数据”与“数据加主观意见”的简单对立。Frequentist analysis 也需要选择模型、变量、penalty 和 stopping rule;Bayesian analysis 也不能用 prior 替代数据质量和研究设计。
Confidence interval 与 credible interval
95% confidence interval 的概率陈述针对产生区间的长期程序:在重复抽样中,按同一方法构造的区间有 95% 覆盖真实参数。
95% Bayesian credible interval 则可以在给定模型、prior 与当前数据后解释为:posterior distribution 中有 95% 的概率质量位于该区间。
两种区间可能数值接近,但其概率对象和解释不同,不能只换名称。
贝叶斯线性回归
构造一个确实满足 的模拟数据集:
set.seed(123)
df <- data.frame(
x = rnorm(100, mean = 5, sd = 2)
)
df$y <- 3 + 2 * df$x + rnorm(100, mean = 0, sd = 1)
使用 rstanarm:
library(rstanarm)
fit <- stan_glm(
y ~ x,
data = df,
family = gaussian(),
prior = normal(location = 0, scale = 2.5),
prior_intercept = normal(location = 0, scale = 5),
prior_aux = exponential(rate = 1),
chains = 4,
iter = 2000,
seed = 123,
refresh = 0
)
查看 posterior summaries:
print(fit, digits = 2)
posterior_interval(fit, prob = 0.95)
这里的 coefficient 不是一个孤立的“最佳值”,而是一组 posterior draws。可以计算斜率大于 0 的 posterior probability:
draws <- as.matrix(fit)
mean(draws[, "x"] > 0)
这个概率依赖线性关系、Gaussian residual、prior 和其他模型条件。它不是研究设计之外的因果概率。
Posterior predictive checking
模型拟合后,从 posterior draws 生成 replicated data,并与 observed data 比较:
pp_check(fit)
Posterior predictive check 可以发现模型是否无法重现:
- outcome 分布的形状;
- 均值与方差;
- 极端值;
- zero inflation;
- 分组差异或非线性结构。
模型得到稳定 posterior 不等于模型适合数据。一个错误但计算稳定的 likelihood 仍会产生精确而误导的结果。
MCMC 诊断
复杂模型通常不能解析积分,需要 Markov chain Monte Carlo 或其他近似方法。此时先检查计算,再解释科学结果。
| 诊断 | 关注点 |
|---|---|
| Multiple chains | 不同初值是否探索到同一 posterior 区域 |
| 链间与链内变异是否一致,通常应接近 1 | |
| Effective sample size | 自相关后还剩多少有效信息 |
| Trace plots | chains 是否混合并稳定探索 |
| Divergences | Hamiltonian trajectory 是否暴露 posterior geometry 问题 |
summary(fit)
plot(fit, plotfun = "trace")
增加 iterations 不能自动修复 divergences、弱识别或错误模型。需要重新检查参数化、prior、变量尺度和模型结构。
Prior sensitivity
Posterior 由 prior 与 likelihood 共同决定。样本较少、数据噪声大或模型弱识别时,prior 的影响尤其明显。
一个稳妥流程是:
- 写明主要 prior 及其来源;
- 做 prior predictive check;
- 使用若干合理但不同强度的 priors 重新拟合;
- 比较关键 posterior summaries 与决策是否改变;
- 报告对 prior 敏感的结论。
Sensitivity analysis 不是不断尝试 priors 直到结果符合期待,而是检查合理选择空间内结论是否稳定。
Bayes factor 与模型比较
Bayes factor 比较两个模型对 observed data 的 marginal likelihood:
它表示数据在模型 1 下相对于模型 0 有多大支持,但对 prior,尤其是模型特有参数的 prior,可能非常敏感。
Bayes factor 不是 posterior probability,除非再结合 model prior probabilities。模型比较还可以使用 posterior predictive performance、LOO cross-validation 或明确的 decision utility,不能把所有问题都压缩成一个 BF threshold。
常见应用
- 参数估计:linear、logistic、survival 与 hierarchical models;
- 部分汇聚:多中心、重复测量或小组样本量不均衡的数据;
- 动态更新:在预先规定的 sequential design 中随新数据更新 posterior;
- 预测:把 parameter uncertainty 传播到 posterior predictive distribution;
- 测量误差与缺失数据:在联合概率模型中表达不确定性;
- 复杂机制模型:结合领域约束估计难以直接观测的过程。
“样本量小”本身不是选择 Bayesian method 的充分理由。小样本意味着数据提供的信息少,posterior 可能更依赖 prior;如果没有可靠 prior 或模型不可识别,贝叶斯计算不会凭空创造信息。
常见误解
“Bayesian 等于主观”
Prior 需要判断,但可以来自外部数据、机制约束或弱信息正则化。关键不是假装没有选择,而是把选择写出来并检查敏感性。
“Posterior probability 就是因果概率”
Posterior 只在给定模型和数据生成假设下成立。Observational data 中的 confounding、selection bias 和 measurement error 不会因使用 Bayesian software 自动消失。
“Credible interval 不包含 0 就证明效应存在”
区间仍依赖 prior、likelihood、模型设定和阈值。应同时报告 effect size、uncertainty、predictive implications 和研究设计边界。
“模型运行完就说明收敛”
必须检查 、effective sample size、trace plots、divergences 和 posterior predictive fit。没有 error message 只说明程序完成,不说明 inference 可靠。
最小工作流
define estimand and likelihood
↓
choose interpretable priors
↓
prior predictive check
↓
fit model
↓
computational diagnostics
↓
posterior predictive check
↓
prior sensitivity
↓
report posterior + assumptions
贝叶斯方法最有价值的地方不是把 p-value 换成另一套术语,而是让研究者显式描述未知量、已有信息、数据生成过程和完整不确定性。
延伸阅读:John Kruschke, Doing Bayesian Data Analysis;Richard McElreath, Statistical Rethinking;Gelman et al., Bayesian Data Analysis。常用 R interfaces 包括 rstanarm、brms 和 cmdstanr;Python 中常见 PyMC 与 Pyro。