外观
Lesson 4 Parameter estimation
约 3319 字大约 11 分钟
2025-10-09
提示
Quizzes
什么是乘法规则?
P(AB∣I)=P(B∣AI)P(A∣I)=P(A∣BI)P(B∣I)
什么是加法规则?
P(A∣I)+P(Aˉ∣I)=1
扩展的加法规则?
P(A+B∣I)=P(A∣I)+P(B∣I)−P(AB∣I)
什么是无差别原则?
如果有 n 个互斥、穷尽的事件,如果已知的信息无法区分它们,则它们的概率都是 1/n.
用 I 表示 information,D 表示 data,H 表示 hypothesis. 写出下面概念的数学表达.
Prior (先验).
P(H∣I),在数据之前我们假说的成立概率.
Likelihood (似然).
P(D∣HI),已知背景信息和假说的前提下,现有的数据与假说有多么相符.
Posterior (后验).
P(H∣DI),在数据的条件下,对假说的置信程度.
Evidence (证据).
P(D∣I),归一化系数,把所有可能假说都遍历一次,得到这样数据的概率.
Bayes' Theorem.
P(H∣DI)=P(D∣I)P(H∣I)P(D∣HI)
A 和 B 统计独立的条件?
条件之一是 P(AB∣I)=P(A∣I)P(B∣I);等价的条件是 P(A∣BI)=P(A∣I).
Bernoulli 实验是什么?
有两种可能结果的随机实验.
什么是均值?
μ≡⟨X⟩=i∑xip(xi)
什么是方差?
σ2≡⟨X2⟩−⟨X⟩2=i∑(xi−μ)2p(xi)
对于 N 次 Bernoulli 实验,每次成功概率为 f,成功的均值是?
μ[Binomal(N,f)]=Nf
Poisson 分布如何由 Bernoulli 实验得到?
当 N→∞,f→0,但是 N⋅f 保持为一个常数 λ 时,Binomal(N,f)→Poisson(λ).
如果一个 Poisson 分布的期望是 ϕ,它的标准差是多少?
σ[Poisson](ϕ)=ϕ
给定一个服从 Poisson 分布的事件,Poisson(λ)=ϕt. 这个事件有 η 的概率能被看到,则探测事件的分布是?
仍然是 Poisson 分布,因为一个 Bernoulli 实验筛选 Poisson 分布时,得到的还是 Poisson 分布,最终的分布是 Poisson(λη).
两个独立的 Poisson 分布,两者频率为 ϕ1 和 ϕ2,则合成的事件分布?
Poisson(ϕ1+ϕ2)
SNR = ?
SNR=ϕt
二项分布和 Poisson 分布在何时近似为 Gauss 分布?
大 N 和大 ϕ.
Gauss 分布?
p(x∣μ,σ)=2πσ1exp(−2σ2(x−μ)2)
中心极限定理?
大量随机数的统计分布趋于 Gauss 分布.
大量随机数,数量为 n,n→∞ 时,标准差按照什么方式增长?
1/n
生成特定分布的随机数?
Statistical Inference
所谓「从数据到后验」.
考虑一个抛硬币的实验,N 次实验,正面概率为 f. 得到 n 次正面概率的分布:
p(n∣N,f)=n!(N−n)!N!fn(1−f)N−n
但是现在问题变成:我们已经知道数据 D=(N,n),假说族 {Hf} (代表不同的 f),我们的目的是求出后验概率 P(H∣DI).
一个天文相关的例子是从宋朝至今的系统性的中国天文观测记录,我们在这一千多年发现了五颗超新星:1006,1054,1181,1572,1604 年.
我们需要验证这些记录是否真实,通过书中所载的方位来查找.
最经典的就是 1181 年这一颗,中国和日本都有很多记录,宋史和金史都有记载. 虽然记载非常多,但是直到 2013 年才最终确定是哪一个超新星.
这个问题和抛硬币有关系吗?
我们可以通过这一千年的详细记录,推测下一个百年能够观测到一颗肉眼可见的超新星的概率. 首先我们知道千年尺度对于恒星演化很短,所以可以假定超新星爆发的概率不发生变化.
概率是很小的常数、恒星数量很大,所以这是一个 Poisson 分布.
注意
不要因为 1006 和 1054 年这两次间隔很近就认为这个不是一个随机分布,上节课也用博客文章的例子来说了可能出现这种情况.
(话说 1054 这一年发现的是蟹状星云,也就是 M1 欸)
/Quiz/11 个世纪发现了 5 个肉眼可见的超新星,所以下一个世纪发现肉眼可见的超新星的概率是?
A.103B.104C.115D.126E.127
我们知道这应该是二项分布,二项分布在 x 很大时有一个长尾,所以均值应该在中间以及往右的部分,不太可能是 A 和 B.
剩下的东西我们在继续解决抛硬币问题的过程中可以得到.
对于抛硬币来说,我们用 Bayes 定理,
P(H∣DI)=P(D∣I)P(H∣I)P(D∣HI)
实际上我们不需要知道 P(D∣I),因为各种假说,如果是离散的就求和、是连续的 (就像我们现在的 Hf) 就积分,要得到 1,也就知道了 P(D∣I).
现在先验是
P(H∣I0)=1,0≤f≤1
似然是
P(D∣HI0)P(D∣HI0)=p(n∣N,f,I0)∝fn(1−f)N−n=n!(N−n)!N!fn(1−f)N−n
似然的自变量是 n;相应地,后验的自变量是 f,但是正比关系和似然是一样的:
P(H∣DI0)∝fn(1−f)N−n
如果对 f 积分归一化这个后验,得到的系数和似然并不一样,是
P(H∣DI0)=n!(N−n)!(N+1)!fn(1−f)N−n
这是 β 分布.
Bayes 推断的计算极为复杂,所以我们要写代码. (这也是 Bayes 统计在提出的一百多年都无人问津的原因之一)
Coin tossing: implementation
import numpy as np
def sim_coin_toss(num, head_prob = 0.5, seed = 42):
"""Simulate coin tosses
Args:
num: int, number of tosses
head_prob: float, probability of heads
seed: int, random seed
Return: array of int, 1 for heads and 0 for tails"""
rng = np.random.default_rng(seed)
toss = rng.uniform(0, 1, num) < head_prob
return toss.astype(int)
# Generate simulated data with 128 tosses
coin_data = sim_coin_toss(128, head_prob = 0.25, seed = 12)
Posterior distribution: calculation
from scipy.stats import beta
def posterior_coin_toss(data):
"""Calculate posterior distribution for coin toss data
Args:
data: array of int, 1 for heads and 0 for tails
Return: tuple of f values and posterior probabilities"""
N = len(data) # number of tosses
n = data.sum() # number of heads
f = np.linspace(0, 1, 1000) # sample probability values
posterior = beta.pdf(f, n+1, N-n+1)
return f, posterior
f, posterior = posterior_coin_toss(coin_data)
Understading the Posterior
可以发现,在数据极少的时候,我们用的其实是演绎推理,来判断「这个硬币有没有正面或者有没有反面」,这说明演绎推理是统计推断的极端情况.
在数据变多时,发现后验概率分布越来越对称、越来越窄、越来越接近 Gauss 分布. 变窄的程度正比于 N.
用两种先验来优化这个后验得到的结果:
取一个极端的 Gauss 分布,认为硬币是公平的;
P(H∣I1)∝exp[−21(0.05f−0.5)2]
这是近似于 B(50,50) 分布.
所谓的 Jeffreys' Prior,尽量尊重我们的无知,把 0 和 1 的概率调高,让这两个点附近的概率不会因为数据点变多而变化很大.
0 和 1 两个点的概率趋于无穷.
模拟发现,在数据少的时候后验是由先验决定的;数据多的时候后验由数据决定.
Parameter Estimation
我们下一步是利用后验来进行计算.
- 对 f 最好的估计是多少?
- 这个估计的「可信程度」是多少?
对于 β 分布,m 阶矩是
⟨fm⟩=∫01fmp(f∣n,N,I0)df=n!(N+m+1)!(N+1)!(n+m)!
所以均值是
μf=⟨f⟩=N+2n+1
这也给出了我们上面超新星问题的答案:6/13!
(1) 均值估计:如果后验是对称分布的,那么峰值和均值是重合的,反之则不重合. 峰值是最有可能的 f,那么均值给出的是什么含义?
假设真值是 θ,均值估计值是 θ^,那么误差 ε=θ^−θ. 考虑误差的平方的期望:
⟨ε2⟩=⟨(θ^−θ)2⟩=(θ^−⟨θ⟩)2+(⟨θ2⟩−⟨θ⟩2)
所以如果取均值估计,那么可以最小化「误差平方的期望」.
当然这个估计不一定是最好的,但是取什么样的估计是决策论的问题,不再是概率论的问题.
如果考虑一个极为极端的分布,具有一个非常长的尾巴,这会使得均值严重偏离最概然的峰值,而且因为「尾巴」的方向在多次实验中并不稳定,有可能左边有尾巴有可能右边有尾巴,导致均值估计并不非常好;同时如果作变量代换,均值可能给出某一种表达方式的最小误差平方期望,但是对另一种参数化无法最小化误差平方期望.
对于均值估计,我们可以用 σ 来估计置信区间.
(2) 中值估计:面对这种状况,Laplace 提出一个新的判据,最小化 ⟨∣ε∣⟩,也就是用中值估计. 对于长尾很严重的数据,中值估计是好的策略,比如判断一个国家的收入水平. 同时,作任何单调的变换,「中值的变换」和「变换的中值」是一致的 (这个性质对于所有百分位数都成立).
中位数另外的优势是,对于 Lorentz 分布这样的、积分发散的分布,也存在中位数估计.
对于中值估计,我们可以用百分位数来估计置信区间. 利用 Gauss 分布的 34.1% 对应 1σ,可以用 68% 分位数来当做 1σ 的区间,以此类推.
当然,因为我们画的是百分位数,所以这时候的误差棒两边不等长.
(3) 峰值估计:它没有最小化一个目标函数,而且在计算中可能出现多峰值的分布,所以峰值估计仅仅是一个参考.
比如一个对称双峰的后验概率分布,这一般要重新做新的参数化,因为有时候这意味着这个参数是以绝对值的形式参与了我们的物理过程.
当然,如果后验非常奇怪,那么就画一个图来给其他人看吧.
Exercise: The Lighthouse Problem
似乎是某大学的新生入学测试...?
假设灯塔在距离岸边 β (已知) 的地方,它发出随机的 N 次闪光,被岸上 (x 轴) 上的 xk 位置观测站接收,得到一组数据 {xk}. 现在要求知道灯塔的横坐标 α.
闪光方向 {θk} 是均匀分布:
p(θk∣α,β,I)=π1,−2π<θ<2π
变量代换,得到著名的 Lorentz 分布:
p(xk∣α,β,I)=π[β2+(xk−α)2]β
尝试均值估计,结果发现,均值完全不收敛、方差也完全不收敛. —— 这是因为 Lorentz 分布的长尾太大,严重影响均值.
Bayes 统计:
p({xk}∣α,β,I)=k=1∏Nπ[β2+(xk−α)2]β
先验用一个平的概率分布 (uniform),后验就直接正比于似然,有
p(α∣{xk},β,I)∝k=1∏Nπ[β2+(xk−α)2]β
经历复杂的计算能够得到后验函数 (常数不重要):
ln[p(α∣{xk},β,I)]=const.−k=1∑N[β2+(xk−α)2]
请大家用代码模拟闪光,进一步计算出后验.
课后的一些讨论:
先验是表达我们内心的认识的一种东西,我们需要对数据有一定的认知才能给出一个较为合理的 prior,就比如做普物实验的时候我们已经看到了红色的激光,那么测量得到 550 nm 以下的激光波长就明显不合理,我们为它赋予的 prior 是零,这是极度自信的情况;再比如丢硬币的时候我们完全不知道硬币是否均匀,这时候其实不能用均匀的 prior,因为均匀的 prior 会造成少量数据对 0 和 1 这种边缘点的影响极大,对中间数据不起到什么影响,所以完全无知的一维情况该选用 Jeffreys' prior.
课后了解到 Jeffreys' Prior 在一维情况是能够严格拉平数据对所有位置的 f 概率的影响的,但是对于高维情况并不严格,这些情况仅仅在特殊条件下有严格解,目前 DESI 的研究组遇到的就是要不要从均匀分布的 prior (目前均值与峰值差 3σ 之大) 换成 Jeffreys' Prior 的问题.
更新日志
2025/10/9 15:25
查看所有更新日志
84f27
-feat(note): add astro-statistic note于