python画概率图_如何使用Python在dataFram中使用特定列数据绘制正态概率图

你想要“概率”图。

所以对于一个情节,你会有如下的东西。import scipy.stats

import numpy as np

import matplotlib.pyplot as plt

# 100 values from a normal distribution with a std of 3 and a mean of 0.5

data = 3.0 * np.random.randn(100) + 0.5

counts, start, dx, _ = scipy.stats.cumfreq(data, numbins=20)

x = np.arange(counts.size) * dx + start

plt.plot(x, counts, 'ro')

plt.xlabel('Value')

plt.ylabel('Cumulative Frequency')

plt.show()

如果要绘制分布,并且您知道它,请将其定义为函数,并按此方式绘制:import numpy as np

from matplotlib import pyplot as plt

def my_dist(x):

return np.exp(-x ** 2)

x = np.arange(-100, 100)

p = my_dist(x)

plt.plot(x, p)

plt.show()

如果没有作为分析函数的精确分布,也许可以生成一个大样本,提取直方图并以某种方式平滑数据:import numpy as np

from scipy.interpolate import UnivariateSpline

from matplotlib import pyplot as plt

N = 1000

n = N/10

s = np.random.normal(size=N) # generate your data sample with N elements

p, x = np.histogram(s, bins=n) # bin it into n = N/10 bins

x = x[:-1] + (x[1] - x[0])/2 # convert bin edges to centers

f = UnivariateSpline(x, p, s=n)

plt.plot(x, f(x))

plt.show()

可以在单变量pline函数调用中增加或减少s(平滑因子),以增加或减少平滑。例如,使用这两种方法:

事件到达时间的概率密度函数(PDF)。import numpy as np

import scipy.stats

# generate data samples

data = scipy.stats.expon.rvs(loc=0, scale=1, size=1000, random_state=123)

核密度估计可以通过调用scipy.stats.gaussian_kde(data,bw_method=bw)

其中bw是估计过程的(可选)参数。对于这个数据集,考虑到bw的三个值,拟合如下所示# test values for the bw_method option ('None' is the default value)

bw_values = [None, 0.1, 0.01]

# generate a list of kde estimators for each bw

kde = [scipy.stats.gaussian_kde(data,bw_method=bw) for bw in bw_values]

# plot (normalized) histogram of the data

import matplotlib.pyplot as plt

plt.hist(data, 50, normed=1, facecolor='green', alpha=0.5);

# plot density estimates

t_range = np.linspace(-2,8,200)

for i, bw in enumerate(bw_values):

plt.plot(t_range,kde[i](t_range),lw=2, label='bw = '+str(bw))

plt.xlim(-1,6)

plt.legend(loc='best')

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值