实现对数正态拟合的KS检验

时间:2017-05-28 12:19:35

标签: python pandas scipy

所以我有一些股票价格数据,我想测试价格是否遵循对数正态分布。我的代码如下:

import scipy.stats as stats
print(stats.kstest(df['DJIA'], "lognorm", stats.lognorm.fit(df['DJIA'])))

结果如下:

KstestResult(statistic=0.90996368658950855, pvalue=0.0)

p值为零意味着数据不符合对数正态分布,这是不可能的,因为预期股票价格将是对数正态分布的。价格的直方图如下:

enter image description here

我试图将直方图与对数正态函数拟合,但无法做到这一点。

1 个答案:

答案 0 :(得分:2)

您应该在适合分配的价格时调整价格数据。尝试拟合直方图中的计数数据。您显示的图表看起来不像股票价格的直方图,它看起来像价格数据的条形图。

count, bins, ignored = plt.hist(df['DJIA'], 100, normed=True, align='mid')
params = stats.lognorm.fit(count)
stats.kstest(count, "lognorm", params)

小心kstest和fit,因为log-normal是一个连续分布,你的直方图是离散的。