加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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)

我的结果是:

Histogram of random realization for the Cauchy distribution

我不知道这是否可以接受,因为我正在针对概率密度函数绘制离散值(随机实现).我怎么能比较他们两个?因为我需要找到上图的小数差异,并确定两条曲线之间的全局rms偏差作为随机实现大小的函数.

解决方法

如果您有大量的采样点,并且您的直方图箱很窄,那么您已经完成的工作应该没问题.在这种情况下,plt.hist()中的“normed = True”设置将为您提供每个bin中心的概率密度的良好近似值.然后,采样误差将由每个箱中的样本数的平方根给出.

另一方面,如果样本的数量较小,使得每个直方图箱需要更宽以便包含多于几个样本,则直方图和理论概率密度函数之间的比较变得更加微妙.在这种情况下,需要允许每个箱表示在每个箱的范围内的概率密度的积分.

因此,对于覆盖范围[a,b]的bin,需要评估以下积分:

enter image description here

当乘以样本总数时,这会给出您在给定bin中平均预期的样本数.

为方便起见,还可以重新排列此公式,使其具有以下形式:

enter image description here

当箱子很薄时,它应具有更好的数值精度(即b不大于a).对于非常薄的箱子,这个公式也更清楚地表明如何恢复概率密度本身的表达式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读