在很多时候, 不能去估计数据本身, 只能去估计一些其他结构
目标: 从样本中推断出一个未知的概率分布
直方图
一种对未知分布 f(x) 对估计方式是切片 h(x)
h(x)=k=1∑MhkΠ(x;xk−1,xk)
这里
Π(x;xa,xb)={1xa≤x<xb0otherwise
则可以定义概率 πk=hkvk , 这里 vk=xk−xk−1
对计数有 {nk}k=1M:h^k=nk/(Nvk) 其中 N=∑k=1Mnk
但是如何选择 bins 数量?
一个经验法则为 Scott’s 法则:
对 N 个点,假设是 Gauss 分布带有标准差 σ^ 则选择间隔
vscott=3.49σ^N−1/3
对于非 Gauss 分布, 一个推广是采取百分位数, 即 Freedman -Diaconis rule
vFD=2(q75−q25)N−1/3
可以看到 Scott 法则在 Gauss 情形很适用, 但对长尾分布不太好, 同样 fd 对长尾分布较好, 但同样在较尖锐的分布的刻画也并不好
所以需要一个更有效的方式去估计 bins
Knuth method
同样采用等宽的 bin v , 共 M 个, 假设数据的范围是 V
可以直接通过推断直方图模型的参数得到
h(x)=VMk=1∑MπkΠ(x;xk−1,xk)k=1∑Mπk=1
这样就是我们熟悉的问题:
给定数据 D={xi}i=1N , 对给定的 M , 有计数 nk=card{xi∈[xk−1,xk)} 满足 N=∑knk
要做的就是在给定数据 D 下优化 M
例如最大化后验 P(M∣DI)
实现的算法是这样的:
考虑自由参数 {πk}k=1M
Bayes 定理给出
p(π,M∣DI)∝p(D∣π,MI)p(π,M∣I)=p(D∣π,MI)p(π∣MI)p(M∣I)
M 的后验可以通过 marginalization 得到
p(M∣DI)=∫p(π,M∣DI)dπ
对于 M 使用均匀先验, 对 π 使用多峰 Jeffreys 先验
p(M∣I)=const.p(π∣MI)=Γ(1/2)MΓ(M/2)k=1∏Mπk−1/2
似然是容易计算的, 因为若 xi∈[xk−1,xk) , 则 p(xi∣π,MI)=hk=(M/V)πk
即
p(D∣π,MI)=(VM)Nk=1∏Mπknk
从而得到对数后验
logp(M∣DI)=NlogM+logΓ(M/2)−MlogΓ(1/2)−logΓ(N+M/2)+k=1∑MlogΓ(nk+1/2)+const.
得到的效果与前面两个差不多
但是还可以做得更好
自适应分块: Bayes 块 — Scargle(1998)
对于固定宽度的网格
- 丢失了局部的结构
- 对于稀疏区域的数据使用较低效(浪费太多网格)
- 在数据变化剧烈的区域表现不佳
而对于 Bayes 块
- 将区块的长度变为可变的, 自适应的
- 这可以通过最大后验得到
- 自适应方法能够捕捉到锐利的特征, 并且减少在稀疏区域的浪费
这个算法最初是为了天文上的时间序列分析而引入的, 比如寻找 gamma 射线暴, 这就是一个极端的例子: gamma 射线爆发生的频率极低, 但信号强度极高, 这需要在一般区域使用较宽的网格, 而在疑似信号区域使用更细的网格捕捉特征
考虑 Nb 个网格: 宽度 T={Tk}k=1Nb , 网格数据 Dk⊂D
目标是对 (Nb,T) 在给定数据 D 下联合优化
基础同样是 Bayes 公式
p(Nb,T∣DI)∝p(D∣Nb,TI)p(T∣Nb,I)p(Nb∣I)
对数似然
lnp(D∣Nb,TI)=k=1∑Nblnp(Dk∣TkI)
先验: 对 T 使用均匀先验, 但对 Nb 应该选择一个更倾向于更少网格数对先验
P(Nb∣I)∝γNb0<γ<11≤Nb≤N
这样可以可以通过幂律惩罚过多的网格数
对于似然, 就需要引入假设
一种方式是采用 poisson 形式
考虑对每个块采用 poisson 过程 , 对于 k 块的分布为 PoissonλkTk
lnL(k)=lnL(nk,Tk)=lnp(nk∣Nb,TkI)=nklnλk−λkTk+const.
最大化为 λ^k=nk/Tk
这个假设源于光子计数: 每个 pixel 对计数都是 poisson 过程
最终的似然函数为
lnLmax=k=1∑NblnLmax(k)=k=1∑Nbnk(lnnk−lnTk)+const.
实际上这里在写出似然的时候已经做了一个优化过程, 我们找了一个假定为 poisson 过程下最可能的似然函数
同样也可以采用 Gauss 形式, 对 k 个块服从 N(μk,σk2)
似然
lnL({xi,σi}∣Nb,TI)=−21k=1∑Nbi∈k∑(σixi−μk)2+const.
最大化得到 μk^=S1,k/S0,k 这里 Sn,k=∑i∈kxin/σi2
同样, 这源于假定每个data产生都来自于一个 gauss 分布
Scargle 在 2013 年完善了上面的方法, 并提出了更多的方法
更多细节可以看 Scargle (2013)
可以看到在新方法下, bin 的数量明显变小, 并且成功捕捉到了较小的尖峰
一个成功的应用是 Mondal et al. 在 2021 年利用此方法分析了 gamma射线暴的光变曲线, 并得到了射线暴的各个阶段
Summary: Histogram
用分段常数的方式从采样中估计密度
但直方图仍有一些问题:
- 这仍然依赖于 bin 的起始位置, 对平移没有 robustness
- 对边界有 bias 并且不连续,
- 对范围有敏感性
- 在高维情形很难处理
连续估计
Kernel density estimator
第一种方法是 Kernel density estimator (KDE)
- 对每个样本放一个小包
- 加上所有的包
- 不存在 bin 的边界
estimator 为
f^h(x)=NhD1i=1∑NK(hd(xi,x))
其中 K(x) 为 kernel function
h 为带宽, 控制这个包的弥散
d(xi,xj) 为距离函数, 通常用 Euclidean 距离
可以看到结果明显依赖于带宽 h 的选择, 反而和核函数的选择无关, 这回到了我们前面选择 bin 宽度的问题
小的带宽会导致噪声影响过大, 使得过拟合, 而大的带宽会导致欠拟合
这里同样可以有 Scott’s rule 以及对 Gauss型分布的 Silverman‘s rule
hScott=1.06σ^N−1/5 hSilverman=0.9min(σ^,1.34q75−q25)N−1/5
也有更好的方法: cross - validation
选择某种似然函数进行最大化, 例如 leave - one -out (LOO) : 扔掉一个点之后不影响整体分布
CVLL=N1i=1∑Nlogf^h,−i(xi)
这里 f^h,−i 是扔掉第 i 个数据的似然估计
同样可以去做 MISE, 最小化误差平方
CVMISE(h)=⟨∫(f^h−f)2dx⟩
这种方法的结果很好, 除了某些太小的 feature 没有捕捉到, 同时这给出了一个连续的分布
这种方法也能很好处理数据的误差
测量误差
假设真实的分布为 h(u) , 误差的分布为 g(ϵ) , 则分布 f(x=u+ϵ) 由如下结果给出
f(x)=(h∗g)(x)=∫h(u)g(x−u)du
实际上 KDE 本身就是 convolution
这样假设误差具有加性, 且分布已知, 我们可以直接在 KDE 上反卷积, 得到真实分布
注意: 这种方法可能会增加误差
KDE 在高维有自然的推广
f^H(x)=N1i=1∑N∣H∣−1/2K(H1/2(x−xi))
通常有 pre - whitening: 将数据变为具有单位协方差的数据
但是这种算法不能避免 Curse of dimensionality
这时可以采用一些降维的方法
Summary
这是一种通过点之间的核函数获得分布的非参数方法
带宽 h 的合适选择有时比核函数的形式更重要
带宽选择的准则通常是 h∝N−1/(D+4)
通过 cross - validation 可以优化带宽
反卷积可以在误差已知时消除误差
k - NN 方法
另一种方法为 k - nearest neighbor ( k - NN) estimator
这基于近邻估计
f^k(x)=NVD(dk)k
dk 是距离第 k 个最近点点距离
VD(dk) 是半径为 dk 的球体积
这是一种自适应地平滑方式, 能够自动选择核函数
在高维时仍然需要数据清洗
同样, 这里需要选择 k , 一般不能选择太小的 k , 否则受噪声影响较大
经验上选取 k≃[N4/(4+D)]
然后用一个似然函数去做最大化优化, 比如 LOO 似然方法
结果也不错
基于 AI
神经密度模型
目标: 从数据中学习一个高维的, 平滑的分布
神经网络是一个非常普适的函数近似
两种比较直观的方法
- Normalizing flow: 从一个非常简单的分布出发 (比如 Gauss ) , 去学习一个双射, 可逆的映射, 把这个分布映射为数据的分布, 通过变量代换即可得到分布
- Autoregressive model: 想法比较相同, 逐次去做上面的过程
- 也有许多方法
Normalization flow
从一个简单的分布开始 z0∼N(0,1)
去做一系列可逆, 可微的变换
zk=fk(zk−1),x=zK=fK∘fK−1∘⋯∘f1(z0)
一般要求可微, 这样就可以去做梯度下降
这样通过变量代换
pX(x)=pZ(z0)i=1∏K∣detJfi(zi−1)∣−1
训练目标是最大化似然
θminN1j=1∑NlogpX(xj;θ)
zephyr: 使用 normalization flow 去测光红移的推断 (Sun et al. 2023)
Autoregressive
逐步去做条件分布
p(x1,x2,⋯,xD)=i=1∏Dp(xi∣x1,x2,⋯,xi−1)
对每个条件分布可以使用神经网络得到
直观: 从先前给定的数据可以预测下一个数据
采样: 逐步采样
最后将这些条件分布乘在一起
Simulation - based inference
目标: 当似然不容易得到的时候, 直接通过模拟数据去推断后验
idea : 在模拟数据对 (θ,x) 上用神经网络去代替似然
一个应用例子是 SimBig (Hahn et al. 2022)
在模拟数据上学习, 在现有宇宙的观测数据上得到宇宙学参数的分布