Pandas рассчитывает оценку UNBIASED избыточного куртоза. Куртоз - нормализованный 4-й центральный момент. Чтобы найти объективные оценки кумулянтов, вам нужно k-statistics
.
Таким образом, объективная оценка эксцесса составляет (k4/k2**2)
Чтобы проиллюстрировать это:
import pandas as pd
import numpy as np
np.random.seed(11234)
test_series = pd.Series(np.random.randn(5000))
test_series.kurtosis()
#-0.0411811269445872
Теперь мы можем вычислить это явно, используя k-statistics
:
n = len(test_series)
S1 = test_series.pow(1).sum()
S2 = test_series.pow(2).sum()
S3 = test_series.pow(3).sum()
S4 = test_series.pow(4).sum()
# Eq (7) and (5) from the k-statistics link
k4 = (-6*S1**4 + 12*n*S1**2*S2 - 3*n*(n-1)*S2**2 -4*n*(n+1)*S1*S3 + n**2*(n+1)*S4)/(n*(n-1)*(n-2)*(n-3))
k2 = (n*S2-S1**2)/(n*(n-1))
# k2 is the same as the N-1 variance: test_series.std(ddof=1)**2
k4/k2**2
#-0.04118112694458816
Если вы хотите лучшего согласования с большим количеством десятичных знаков, вам нужно быть осторожным с суммами, поскольку они становятся довольно большими. Но они идентичны 12 местам.