Python 帕累托分布的分析矩与经验矩的比较
下面,我使用nympy生成的绘图将帕累托分布的经验矩与分析矩进行比较(我使用以下链接获得均值、方差、偏度和超额峰度的公式,)。平均值和方差的结果相似,但偏度和峰度的结果非常不同。我做错了什么 先谢谢你Python 帕累托分布的分析矩与经验矩的比较,python,comparison,simulation,analytical,Python,Comparison,Simulation,Analytical,下面,我使用nympy生成的绘图将帕累托分布的经验矩与分析矩进行比较(我使用以下链接获得均值、方差、偏度和超额峰度的公式,)。平均值和方差的结果相似,但偏度和峰度的结果非常不同。我做错了什么 先谢谢你 import numpy as np import pandas as pd from scipy.stats import skew from scipy.stats import kurtosis from prettytable import PrettyTable x_m = [1, 2
import numpy as np
import pandas as pd
from scipy.stats import skew
from scipy.stats import kurtosis
from prettytable import PrettyTable
x_m = [1, 2, 3, 4]
alpha = [5, 6, 7, 8]
#drawing samples from distribution
for a, x in zip(alpha, x_m):
print (a, x)
data = (np.random.default_rng().pareto(a, 10000000)+1) * x
mean = np.mean(data)
var = np.var(data)
skew = skew(data)
kurt = kurtosis(data)
#Analytical estimation
for a, x in zip(alpha, x_m):
a_mean = (a*x)/(a-1)
a_var = (a*x**2)/((a-1)**2*(a-2))
a_skew = (2*(1+a)/(a-3))*(np.sqrt(a-2/a))
a_kurt = (6*(a**3+a**2-6*a-2))/(a*(a-3)*(a-4))
#Table
header = ['Moments', 'Simulated', 'Analytical']
Moments = ['Mean', 'Variance', 'Skewness', 'Excess Kurtosis']
Simulated = [round(mean,4), round(var,4), round(skew,4), round(kurt,4)]
Analytical = [round(a_mean,4), round(a_var,4), round(a_skew,4), round(a_kurt,4)]
table = PrettyTable()
table.add_column(header[0], Moments)
table.add_column(header[1], Simulated)
table.add_column(header[2], Analytical)
print(table)
这是分析偏斜度线中的一个小错误:
a_skew = (2*(1+a)/(a-3))*(np.sqrt(a-2/a))
应该是
a_skew = (2*(1+a)/(a-3))*(np.sqrt((a-2)/a))
对于足够大的样本,峰度是正确的。谢谢,我知道了