python – 用理论曲线绘制直方图:随机实现
发布时间:2020-12-20 13:07:57 所属栏目:Python 来源:网络整理
导读:我需要编写一个程序来生成Cauchy分布的随机实现 具有零位置和单位比例. 此外,我需要在-5和5个箱之间进行直方图,随机实现1,000个点,同时理论曲线确保它们具有相同的单位. 我计算了Cauchy分布的累积分布函数: 我写了以下python代码: from __future__ import
我需要编写一个程序来生成Cauchy分布的随机实现
具有零位置和单位比例. 此外,我需要在-5和5个箱之间进行直方图,随机实现1,000个点,同时理论曲线确保它们具有相同的单位. 我计算了Cauchy分布的累积分布函数: 我写了以下python代码: from __future__ import division import scipy import random import matplotlib.pyplot as plt import numpy as np import math as m valuesX = [] for q in range(1000): R = random.random() x = m.tan(m.pi*(R-0.5)) #Cumulative Function valuesX.append(x) z = np.linspace(-10,10,1000) y = 1/(m.pi*(1+z**2)) #Theoretical Cauchy plt.plot(y,z) plt.hist(valuesX,bins = 50,range = [-5,5],normed=True) 我的结果是: 我不知道这是否可以接受,因为我正在针对概率密度函数绘制离散值(随机实现).我怎么能比较他们两个?因为我需要找到上图的小数差异,并确定两条曲线之间的全局rms偏差作为随机实现大小的函数. 解决方法
如果您有大量的采样点,并且您的直方图箱很窄,那么您已经完成的工作应该没问题.在这种情况下,plt.hist()中的“normed = True”设置将为您提供每个bin中心的概率密度的良好近似值.然后,采样误差将由每个箱中的样本数的平方根给出.
另一方面,如果样本的数量较小,使得每个直方图箱需要更宽以便包含多于几个样本,则直方图和理论概率密度函数之间的比较变得更加微妙.在这种情况下,需要允许每个箱表示在每个箱的范围内的概率密度的积分. 因此,对于覆盖范围[a,b]的bin,需要评估以下积分: 当乘以样本总数时,这会给出您在给定bin中平均预期的样本数. 为方便起见,还可以重新排列此公式,使其具有以下形式: 当箱子很薄时,它应具有更好的数值精度(即b不大于a).对于非常薄的箱子,这个公式也更清楚地表明如何恢复概率密度本身的表达式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |