python绘制累积分布函数图,python画数据分布图
参考文献:
一篇绘制累积经验分布函数图像的博客
如何得到样本数据的经验分布函数?从统计模型。分发。experimental _ distribution import ECDFecdf=ECDF([3,3,1,4]) #返回了一个分布函数,我是说数学书上的函数type(ecdf)Out[19]:统计模型。分发。实验_分布.ECDFecdf(3) #往这个分布函数中输入自变量,会得到其分布函数值Out[20]:0.75 ecdf(1)Out[21]:0.25 help(ECDF)#看看介绍,我也没太懂模块统计模型。分发。实验_分布中关于分布函数类的帮助:ECDF类(StepFunction) ECDF(x,side=right) 以阶跃函数的形式返回数组的经验CDF . 参数- x:array _ like Observations side:{ left , right},可选默认为对的.定义构成步的间隔的形状。"右"对应于[甲,乙]音程,"左"对应于甲,乙. 返回 - 作为阶跃函数的经验CDF . 示例-将numpy作为NP 从统计模型导入。分发。实验_分布导入ECDF ecdf=ECDF([3,3,1,4]) ecdf([3,55,0.5,1.5]) 数组([ 0.75,1 . 0.0.25]) 方法解析顺序: ECDF 阶跃函数内置函数。对象 此处定义的方法: __init__(self,x,side=right) 初始化自我.请参阅帮助(类型(自我))以获得准确的签名。 - 继承自阶跃函数的方法: __call__(自己,时间)将自己作为函数调用。 - 从阶跃函数继承的数据描述符: _ _词典__ 实例变量字典(如果已定义) __weakref__ 对象的弱引用列表(如果已定义)绘制样本的经验分布函数方法一:博客原文
# 这也是借鉴别人博客的代码,我再补充点自己的看法导入numpy作为NP导入pandas作为PD导入matplotlib。py绘图为PLT数据=NP。数组([64.3,65.0,65.0,67.2,67.3,67.3,68.0,68.0,68.8,68.8,68.8,69.7,70.3,70.4,70.4 75.8,75.8,75.8,76.5,76.5数据特征计算s=np.std(datas,ddof=1)#样本标准差xbar=np.mean(datas)#样本均值#数据可视化画数据经验分布曲线图nt,bin,patches=plt.hist(datas,bins=10,histtype=step ,\cumulative=True,density=True,color=darkcyan)#datas是数据,垃圾箱是分组数PLT . title( bin=10 )经验函数分布图1.jpg ,dpi=200)plt.show()#数据可视化画数据经验分布曲线图nt,bin,patches=plt.hist(datas,bins=15,histtype=step ,\cumulative=True,density=True,color= dark cyan )#数据是数据,垃圾箱是分组数PLT。标题( bin=15 )#正态分布函数曲线拟合y=(1/(NP。sqrt(2 * NP。pi)* s))* NP。exp(-0.5 *(bins-xbar)* * 2/s * * 2))y=y . cumsum()y=y/y[-1]PLT。plot(箱,y,“番茄”,线宽=1.5,标签=“理论”)。保存无花果(经验函数分布图2.jpg ,dpi=200)plt.show()#这种方法有点奇怪,指定垃圾箱参数之后,就不能说绘制出来的经验分布函数是原样本的经验分布函数了# 自己试试看,图太多了不方便一一往上贴,看看返回数组plt.hist([3,3,1,4],histtype=step ,cumulative=True,density=True)Out[25]:(array([0.25,0.25,0.25,0.25,0.75,0.75,0.75,1 .])、数组([1。 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4.]),[matplotlib。补丁。0x 14 FB 356 be 20]处的多边形。hist([3,3,1,4),histtype=step ,cumulative=True) #没有密度参数表示计数,而非计算频率出[26]:(数组([1。 1. 1. 1. 1. 1. 3. 3. 3. 4.])、数组([1。 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4.]),[matplotlib。补丁。0x 14 FB 4c 47d 90]处的多边形。hist([3,3,1,4],histtype=step ,cumulative=True,bins=4,density=True)Out[28]:(array([0.25,0.25,0.75,1 .])、数组([1。 1.75, 2.5 , 3.25, 4.]),[matplotlib。补丁。多边形在0x 14 FB 6 E5 bb 20])PLT。hist([3,3,1,4),histtype=step ,cumulative=True,bins=3,density=True)Out[29]:(array([0.25,0.25,1。])、数组([1。 2. 3. 4.]),[matplotlib。补丁。多边形在0x 14 FB 4c 31850]]PLT。hist([3,3,1,4),histtype=step ,cumulative=True,bins=5,density=True)Out[30]:(array([0.25,0.25,0.25,0.75,1 .])、数组([1。 1.6, 2.2, 2.8, 3.4, 4.]),[matplotlib。补丁。0x 14 fb4c 37820处的多边形])#也就是说,垃圾箱参数是平均分原数据的份数。由原数据的最大值和最小值以及垃圾箱参数共同决定各个子区间的范围。方法二:来自统计模型。分发。experimental _ distribution import ECD FX=[3,3,1,4]ecdf=ECDF([3,3,1,4])type(ecdf)Out[37]:stats模型。分发。实验_分布.ECDFy=ecdf(x) #计算分布函数值x.sort()xOut[43]: [1,3,3,4]y.sort()画阶梯函数之前一定要记得排序,不然就是乱七八糟的回字形plt.step(x,y)Out[45]:[matplotlib。台词。0x 14 fc 03 b 6850处的2d线]这就是我想要的了
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。