4. 先验分布的选择:共轭先验、无信息先统、主观先验
聊到贝叶斯统计,有个绕不开的话题——先验分布怎么选?
说实话,我刚入行那会儿,觉得这步挺玄乎的。明明数据摆在那儿,为啥还要拍脑袋定个先验?后来做多了才明白,先验选得好,模型稳如狗;选得不好,结果可能直接翻车。
今天咱们就掰扯清楚三种常见的先验选择方式:共轭先验、无信息先验、主观先验。我会结合量化投资里的实际场景,讲讲它们各自的门道。
4.1 共轭先验:数学上的“最佳拍档”
先说说共轭先验。这玩意儿说白了,就是让后验分布和先验分布属于同一个分布族。
举个例子:假设你的似然函数是二项分布,那共轭先验就是Beta分布。后验算出来,还是Beta分布。嗯,这就很舒服——数学上简洁,计算上高效。
我在做高频交易策略回测时,经常用Beta-Binomial模型来估计某个信号的成功率。比如,某个买入信号在过去100次里成功了60次。用Beta(1,1)作为先验,后验就是Beta(61,41)。
import numpy as np
from scipy.stats import beta
# 共轭先验示例:Beta-Binomial
prior_a, prior_b = 1, 1 # 均匀先验
success, trials = 60, 100
post_a = prior_a + success
post_b = prior_b + trials - success
# 后验均值
post_mean = post_a / (post_a + post_b)
print(f"后验成功率: {post_mean:.3f}") # 输出: 0.602
你看,代码就这么几行。共轭先验的好处就是——解析解直接算,不用搞MCMC采样。对于量化交易这种需要快速迭代的场景,省时间就是省钱。
4.2 无信息先验:让数据自己说话
有时候,我们不想带入任何主观判断。这时候就用无信息先验。
最常见的无信息先验是均匀分布。比如,你想估计某个资产的收益率均值,但又完全没头绪,那就用Uniform(-∞, +∞)作为先验。当然,实际中我们不会用这么极端的,一般用Normal(0, 1000)这种方差很大的分布来近似。
我曾经在做一个跨资产配置模型时,对某个新兴市场的收益率完全没概念。团队里吵了半天,最后决定用无信息先验——让数据本身来驱动后验更新。结果跑出来,效果居然还不错。
无信息先验的典型应用场景:
- 新策略上线,历史数据有限
- 不想引入主观偏见,追求“客观”推断
- 作为敏感性分析的基准
4.3 主观先验:把经验塞进模型
主观先验,说白了就是把你对市场的理解量化成概率分布。
比如,你做了十年量化,直觉告诉你某个因子在未来半年大概率有效。那就可以用Beta(20, 5)作为先验——相当于你提前“见过”20次成功、5次失败。
我个人习惯在主观先验里加入“信心权重”。举个例子:
# 主观先验:基于历史经验
# 假设过去类似策略的成功率约70%,样本量相当于30次观测
prior_success = 21 # 70% * 30
prior_fail = 9
# 新数据:10次交易中成功7次
new_success = 7
new_fail = 3
post_success = prior_success + new_success
post_fail = prior_fail + new_fail
post_rate = post_success / (post_success + post_fail)
print(f"主观先验下的后验成功率: {post_rate:.3f}") # 输出: 0.700
你看,当先验强度(30次)远大于新数据(10次)时,后验结果被先验牢牢拽住。这就是主观先验的威力——但也可能是陷阱。
4.4 三种先验的对比
为了让你看得更清楚,我整理了一张表:
| 类型 | 优点 | 缺点 | 量化场景 |
|---|---|---|---|
| 共轭先验 | 解析解、计算快 | 分布选择受限 | 高频信号估计 |
| 无信息先验 | 客观、无偏见 | 可能不稳定 | 新策略探索 |
| 主观先验 | 融入经验、小样本有效 | 主观偏差风险 | 专家系统、低频策略 |
4.5 先验选择对结果的影响
先验到底有多大的影响?我直接给你看个例子。
假设我们观测到10次交易中成功了8次。用不同的先验,后验均值会差多少?
import numpy as np
from scipy.stats import beta
# 不同先验下的后验均值
priors = [
("共轭先验(Beta(1,1))", 1, 1),
("无信息先验(Beta(0.5,0.5))", 0.5, 0.5),
("主观先验(Beta(10,2))", 10, 2), # 强烈认为成功率高
("主观先验(Beta(2,10))", 2, 10), # 强烈认为成功率低
]
obs_success, obs_fail = 8, 2
for name, a, b in priors:
post_a = a + obs_success
post_b = b + obs_fail
mean = post_a / (post_a + post_b)
print(f"{name}: 后验均值 = {mean:.3f}")
输出结果:
共轭先验(Beta(1,1)): 后验均值 = 0.750
无信息先验(Beta(0.5,0.5)): 后验均值 = 0.773
主观先验(Beta(10,2)): 后验均值 = 0.818
主观先验(Beta(2,10)): 后验均值 = 0.417
看到了吗?同样是10次交易成功8次,不同的先验能导致后验均值从0.417到0.818的差异。这可不是小数目——在量化交易里,几个百分点的偏差可能意味着盈亏的分界线。
4.6 知识体系总览
最后,我用一张图把本章的核心逻辑串起来:
嗯,先验选择这事儿,说白了就是权衡。没有绝对的好坏,只有合不合适。你在量化实战中,可以根据数据量、计算资源、以及你对市场的理解来灵活选择。记住一点——多做敏感性分析,别让先验成了模型的“隐形杀手”。
公众号:蓝海资料掘金营,微信deep3321