Seasonal Hybrid ESD笔记

Seasonal Hybrid ESD笔记

背景知识

Student’s t-distribution 学生t-分布

用于根据小样本来估计呈正态分布且方差未知的总体的均值。如果总体方差已知(例如在样本数量足够多时),则应该用正态分布来估计总体均值。
假设 X 是呈正态分布的独立的随机变量,随机变量的期望值 μ 和方差 σ2 未知,那么随机变量 Z=X¯¯nμσ/n 符合均值为0、方差为1的正态分布。 令 X¯¯¯n=(X1++Xn)/n 为样本均值的估计, Sn2=1n1ni=1(XiX¯¯¯n)2 为样本方差的估计,随机变量 T=X¯¯nμSn/n 的概率密度函数为 f(t)=Γ((ν+1)/2)νπΓ(ν/2)(1+t2/ν)(ν+1)/2 ,其中 ν=n1 是自由度,这个分布称为t-分布。
t-分布的形状类似于均值为0方差为1的正态分布,但更低更宽。随着 n 的增加,越来越接近均值为0方差为1的正态分布,如图所示。
《Seasonal Hybrid ESD笔记》

Extreme Studentized Deviate (ESD) Test

又名Grubb’s Test或者Maximum Normed Residual Test,用于从正态分布的变量中检测离羣点(根据这里的说法是“exactly one outlier”)。使用前要注意检查数据是否真的符合正态分布。

对于双边检验,“没有离羣点”的假设以显著水平 α 被拒绝(即有大于 α 的可能性存在离羣点)的条件是 G=maxi=1,,NYiY¯s>N1Nt2α/(2N),N2N2+t2α/(2N),N2 ,其中 tα/(2N),N2 表示自由度为 N2 的t-分布,对应显著水平 α/(2N) 时的临界值。

对于单边检测,只需将 α/(2N) 替换为 α/N

Generalized ESD

用于在近似符合正态分布的变量中检测离羣点。与ESD相比最大的区别在于不需要指定离羣点的个数,只需要指定要检测的离羣点个数的上限即可。

按照这里的介绍,假设要检测 k 个离羣点,就对数据重复使用 k 次ESD检验,如果发现离羣点就从数据里剔出去,然后在剩下的数据上重新检测。

LOESS

Local Regression,一种非参数化的回归方法,目的是在二维散点图上拟合出一条光滑的曲线。方法是在每一个点的邻域内使用一个加权的多项式拟合,距离越近的点权重越高。为了提升鲁棒性,实际位置与预期位置偏离越远权重越小,偏离过远的点会被舍弃。

不确定现在的工具包里具体如何算的。

STL

Seasonal and Trend decomposition using Loess,会把时间序列分解成seasonal signal、trend、residual三部分,只能处理加性信号。用到了LOESS。使用的时候需要注意两个参数,一个是计算trend的窗口大小,越大越平滑;一个是计算seasonal signal的窗口大小,不知道怎么设。找不到比较好的科普材料,所有文章(包括中文和英文)都只是演示了一下R。

STL分为inner loop和outer loop。其中inner loop包含以下几步:
1. Detrending。 YT(k)
2. Cycle-subseries Smoothing。对每一个周期内的数据做平滑,得到 C(k+1) 。没说具体用什么方法。
3. Low-Pass Filtering of Smoothed Cycle-subseries。进一步做平滑,得到 L(k+1) 。方法是moving average。
4. Detrending of Smoothed Cycle-sybseries。计算S分量, S(k+1)=C(k+1)L(k+1)
5. Deseasonalizing。估计T分量(其实是T分量+噪声), YS(k+1)
6. Trend Smoothing。对上一步的结果做平滑得到真正的T分量 T(k+1)

outer loop包括以下几步:
1. R=YTS
2. 根据 R 重新用LOESS估计T分量。

outer loop和inner loop都可以重复多次,根据应用场景而定。

R语言提供了STL方法,Python需要用一些第三方的包。

Seasonal Hybrid ESD

先用STL把序列分解,考察残差项。假定这一项符合正态分布,然后就可以用Generalized ESD提取离羣点。

点赞