Я получил ту же проблему, работая в Python, и я думаю, что ограниченная точность арифметики с плавающей точкой на компьютере, особенно. с полномочиями большого числа, также не помогает. Я буду вырезать и вставить свой код Python и результаты, которые я получу. Этот код пытается вычислить первые 20 моментов стандартной нормали. Короче говоря, я думаю, что не легко вычислить числовые моменты высокого порядка, «высокий порядок» означает здесь больше 10 или около того. В отдельном эксперименте я пытался уменьшить дисперсию, которую я получаю в 18-й момент, рисуя все больше и больше образцов, но это было непрактично, учитывая мой «обычный» компьютер.
N = 1000000
w = np.random.normal(size=N).astype("float128")
for i in range(20):
print i, mean(w**i) # simply computing the mean of the data to the power of i
Дает вам:
0 1.0
1 0.000342014729693
2 1.00124397377
3 0.000140133725668
4 3.00334304532
5 0.00506625342217
6 15.0227401941
7 0.0238395446636
8 105.310071549
9 -0.803915389936
10 948.126995798
11 -34.8374820713
12 10370.6527554
13 -1013.23231638
14 132288.117911
15 -26403.9090218
16 1905267.02257
17 -658590.680295
18 30190439.4783
19 -16101299.7354
Но правильные моменты: 1, 0, 1, 0, 3, 0, 15, 0, 105, 0, 945, 0, 10395, 0, 135135, 0, 2027025, 0, 34459425, 0, 654729075 .