我有一个从-5到5的直方图,我可以随意操作和绘图,并使用以下PDF对其进行单样本KS测试:norm,cauchy,students t,laplace。< / p>
但是,我必须对数据进行对称化(使其从0到5)并对其进行KS测试。这对于常态和柯西来说很好..但是我找不到scipy.stats中的“半学生”PDF
所以我非常感谢你的帮助:
1)如何绘制直方图从5,4,3,2,1,0,1,2 ......重新开始,没有负数,不仅仅显示0到0 5,我可以按照惯例为我的KS测试设置loc = 0。 (我希望我能做一个plt.MirroredAboutX()或其他什么?)或者,
2)有没有人知道半个学生的PDF是否隐藏在我掩饰的某个地方?
谢谢!
修改:使用此列表
澄清上面的#1l = [-1.93067027 -1.00267766 -0.6349767 -0.82698775 -0.59277326 -0.67801007 -0.60888202 -0.27387228 -0.03645225 -0.02120668 0.02004329 0.40640109 0.661673 0.77414735 0.86466529 0.53162743 0.64943555 0.7827397 1.8450599 1.44000795]
和plt.hist(np.abs(l))
向我显示0到2的直方图。
我希望直方图从0到2,现在在y轴上镜像/翻转,以便x轴的范围从2到2(因为它以0为中心),这就是这个很好的对称,绘制直方图。
答案 0 :(得分:0)
您可以绘制numpy直方图结果的条形图。然后,您可以反转阵列以绘制它们的镜像版本。
import matplotlib.pyplot as plt
import numpy as np
l = "-1.93067027 -1.00267766 -0.6349767 -0.82698775 -0.59277326 -0.67801007 -0.60888202 -0.27387228 -0.03645225 -0.02120668 0.02004329 0.40640109 0.661673 0.77414735 0.86466529 0.53162743 0.64943555 0.7827397 1.8450599 1.44000795"
l = np.array(list(map(lambda x: float(x),l.split() )))
step = 0.25
bins = np.arange(0,2.01, step)
hist, edges = np.histogram(np.abs(l),bins=bins)
plt.bar(bins[:-1], hist, width=step, align="edge", ec="k")
plt.bar(-bins[::-1][:-1], hist[::-1], width=step, align="edge", ec="k")
plt.show()
请注意,执行此操作时,y轴已失去其定量含义,因为每个值在镜像图中都会占两倍。