[[入門 機械学習による異常検知]] 3.1.3より - データが単一の正規分布から生成されたと仮定したときに、ホテリング統計量が標本数が大きい場合には自由度$M$の[[カイ二乗分布]]に従う [[多変量のホテリングのT2法]] - 実データの分布は正規分布でないことも多いため、自由度$M$のカイ二乗分布に基づく閾値は誤報を招く - 任意のカイ二乗分布をもとに閾値を決める - カイ二乗分布のパラメータmとsを、異常度列($a(x^{(1)}),...,a(x^{(n)}))$)から求める - カイ二乗分布は[[ガンマ分布]]を線形変換したもの。 - 一般に$\mathcal{G}(m/2, 2s) = \chi^2(m,s)$が成立。 ガンマ分布の[[モーメント法]]による推定量から次の式が導ける。($\langle x \rangle$は$x$の1次の[[モーメント]]) $ \hat{m}_{mo} = \frac{2\langle a\rangle^2}{\langle a^2\rangle - \langle a\rangle^2} $ $ \hat{s}_{mo} = \frac{\langle a^2 \rangle - \langle a^2 \rangle}{2 \langle a \rangle^2} $ $ \langle a \rangle = \frac{1}{N}\sum_{n=1}^{N}a^{(n)} $ $ \langle a^2 \rangle = \frac{1}{N}\sum_{n=1}^{N}a^{(n)^2} $ - カイ二乗分布の自由度$\hat{m}_{mo}$は多くの場合Mよりかなり小さくなる。 - 見かけ上のMは大きくても活動的な次元はさほど多くない - $\hat{m}_{mo}$は系の有効次元 ```python # モーメントの計算 mean, sig2 = np.mean(scores), np.mean(np.sum([a**2 for a in scores])) m = 2 * (mean**2) / (sig2 - mean**2) s = (sig2 - mean**2) / 2*mean ```