【发布时间】:2016-07-29 04:31:41
【问题描述】:
我的数据(pd 系列)看起来像(每日股票收益,n = 555):
S = perf_manual.returns
S = S[~((S-S.mean()).abs()>3*S.std())]
2014-03-31 20:00:00 0.000000
2014-04-01 20:00:00 0.000000
2014-04-03 20:00:00 -0.001950
2014-04-04 20:00:00 -0.000538
2014-04-07 20:00:00 0.000764
2014-04-08 20:00:00 0.000803
2014-04-09 20:00:00 0.001961
2014-04-10 20:00:00 0.040530
2014-04-11 20:00:00 -0.032319
2014-04-14 20:00:00 -0.008512
2014-04-15 20:00:00 -0.034109
...
我想从中生成一个概率分布图。使用:
print stats.normaltest(S)
n, bins, patches = plt.hist(S, 100, normed=1, facecolor='blue', alpha=0.75)
print np.sum(n * np.diff(bins))
(mu, sigma) = stats.norm.fit(S)
print mu, sigma
y = mlab.normpdf(bins, mu, sigma)
plt.grid(True)
l = plt.plot(bins, y, 'r', linewidth=2)
plt.xlim(-0.05,0.05)
plt.show()
我得到以下信息:
NormaltestResult(statistic=66.587382579416982, pvalue=3.473230376732532e-15)
1.0
0.000495624926242 0.0118790391467
我的印象是 y 轴是一个计数,但我想用概率代替。我该怎么做?我已经尝试了很多 StackOverflow 答案,但无法弄清楚。
【问题讨论】:
-
你确定这些是计数吗?我猜它们是概率密度值,因为当您对其进行积分时,您的图表被归一化为 1。您的 x 值范围非常小。
-
可能,概率密度不是我的强项。我怎样才能至少把这些变成百分比?
-
您希望获得多少百分比?对于每个 bin,数据在这个 bin 中的概率是多少?概率密度基本上意味着某些 x 范围的密度积分可以为您提供该范围的概率。
-
是的,数据在 bin 中的概率。
-
你看过
seaborn吗?几个内置的复合图,可能包含您正在寻找的内容(一旦您弄清楚数据的含义)。
标签: python matplotlib histogram probability-density