为什么 Johnson-SU 分布在 scipy.stats 中没有给出正偏度?
Why doesn't Johnson-SU distribution give positive skewness in scipy.stats?
下面的代码映射了相应参数(a
、b
、loc
、scale
生成的统计矩(均值、方差、偏度、超峰度) ) 的 Johnson-SU distribution (johnsonsu
).
对于我在下面的代码中指定的循环值范围,没有参数配置导致正偏度,只有负偏度,即使可以将 Johnson-SU 分布参数化为正偏度。
import numpy as np
import pandas as pd
from scipy.stats import johnsonsu
moments = ['mu','sd','sk','ku']
X = []
for a in np.arange(0.5,5,.5):
for b in np.arange(0.5,5,.5):
for c in np.arange(-0.5,0.5,.25): #loc
for d in [1]: #scale
mvsk = johnsonsu.stats(a,b,c,d,moments='mvsk')
mvsk = [mvsk[i].tolist() for i in range(len(mvsk))]
X.append([a,b,c,d]+mvsk)
X = pd.DataFrame(np.asarray(X), columns=['a','b','c','d']+moments)
for m in moments:
print(m, X[[m]].min().round(3).values[0], X[[m]].max().round(3).values[0])
打印的最小和最大时刻是:
mu -29937.57 0.136
sd 0.053 48036174150.987
sk -414.36 -0.078
ku 0.221 41173.869
a
、b
、loc
和 scale
参数的探索范围比我在下面指定的范围更好? documentation只说a
和b
必须是肯定的,没有说loc
和scale
必须限制什么。
在查看维基百科文章和源代码时,在我看来参数 a
可以改变偏度。尝试 a
的负值。文档说 a
必须大于零,但看一眼公式和代码,这似乎是文档中的错误,实际上 a
可以小于或等于零。
我试过上面的程序,将 a
的范围替换为 np.arange(-2.5, 2.5, .5)
。它运行没有错误(尽管在结果中有关于不精确的警告,这在原始文件中也存在)和报告:
mu -202.147 548.542
sd 0.052 16114617.207
sk -414.352 402.646
ku 0.213 41173.867
PS。我已将此作为错误报告给 Scipy 项目:https://github.com/scipy/scipy/issues/13353
下面的代码映射了相应参数(a
、b
、loc
、scale
生成的统计矩(均值、方差、偏度、超峰度) ) 的 Johnson-SU distribution (johnsonsu
).
对于我在下面的代码中指定的循环值范围,没有参数配置导致正偏度,只有负偏度,即使可以将 Johnson-SU 分布参数化为正偏度。
import numpy as np
import pandas as pd
from scipy.stats import johnsonsu
moments = ['mu','sd','sk','ku']
X = []
for a in np.arange(0.5,5,.5):
for b in np.arange(0.5,5,.5):
for c in np.arange(-0.5,0.5,.25): #loc
for d in [1]: #scale
mvsk = johnsonsu.stats(a,b,c,d,moments='mvsk')
mvsk = [mvsk[i].tolist() for i in range(len(mvsk))]
X.append([a,b,c,d]+mvsk)
X = pd.DataFrame(np.asarray(X), columns=['a','b','c','d']+moments)
for m in moments:
print(m, X[[m]].min().round(3).values[0], X[[m]].max().round(3).values[0])
打印的最小和最大时刻是:
mu -29937.57 0.136
sd 0.053 48036174150.987
sk -414.36 -0.078
ku 0.221 41173.869
a
、b
、loc
和 scale
参数的探索范围比我在下面指定的范围更好? documentation只说a
和b
必须是肯定的,没有说loc
和scale
必须限制什么。
在查看维基百科文章和源代码时,在我看来参数 a
可以改变偏度。尝试 a
的负值。文档说 a
必须大于零,但看一眼公式和代码,这似乎是文档中的错误,实际上 a
可以小于或等于零。
我试过上面的程序,将 a
的范围替换为 np.arange(-2.5, 2.5, .5)
。它运行没有错误(尽管在结果中有关于不精确的警告,这在原始文件中也存在)和报告:
mu -202.147 548.542
sd 0.052 16114617.207
sk -414.352 402.646
ku 0.213 41173.867
PS。我已将此作为错误报告给 Scipy 项目:https://github.com/scipy/scipy/issues/13353