ここで説明されているように、尖度の関数を作成することになっている宿題の問題があります。

分母のシータは標準偏差 (分散の平方根) であり、分子の x-with-the-bar は の平均ですx。
私は次のように機能を実装しました:
import numpy as np
from scipy.stats import kurtosis
testdata = np.array([1, 2, 3, 4, 5])
def mean(obs):
return (1. / len(obs)) * np.sum(obs)
def variance(obs):
return (1. / len(obs)) * np.sum((obs - mean(obs)) ** 2)
def kurt(obs):
num = np.sqrt((1. / len(obs)) * np.sum((obs - mean(obs)) ** 4))
denom = variance(obs) ** 2 # avoid losing precision with np.sqrt call
return num / denom
最初の 2 つの関数meanおよびは、それぞれおよび とvariance正常に交差検証されました。numpy.meannumpy.var
kurt次のステートメントで相互検証を試みました。
>>> kurtosis(testdata) == kurt(testdata)
False
両方の尖度関数の出力は次のとおりです。
>>> kurtosis(testdata) # scipy.stats
-1.3
>>> kurt(testdata) # my crappy attempt
0.65192024052026476
どこで私は間違えましたか?私scipy.stats.kurtosisが与えられた方程式よりも面白いことをしていますか?