ここで説明されているように、尖度の関数を作成することになっている宿題の問題があります。
分母のシータは標準偏差 (分散の平方根) であり、分子の 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.mean
numpy.var
kurt
次のステートメントで相互検証を試みました。
>>> kurtosis(testdata) == kurt(testdata)
False
両方の尖度関数の出力は次のとおりです。
>>> kurtosis(testdata) # scipy.stats
-1.3
>>> kurt(testdata) # my crappy attempt
0.65192024052026476
どこで私は間違えましたか?私scipy.stats.kurtosis
が与えられた方程式よりも面白いことをしていますか?