我有一个作业问题,我应该为 Kurtosis 编写一个函数,如下所述:
分母中的 theta 是标准偏差(方差的平方根),分子中的 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
前两个函数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
做的事情比我给定的方程式更精彩吗?