Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 帕累托分布的分析矩与经验矩的比较_Python_Comparison_Simulation_Analytical - Fatal编程技术网

Python 帕累托分布的分析矩与经验矩的比较

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

下面,我使用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, 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))

对于足够大的样本,峰度是正确的。

谢谢,我知道了