十、分布

原文:Distributions

译者:飞龙

协议:CC BY-NC-SA 4.0

概率分布反映了函数/数据源的可能结果的发生概率。

这是维基百科上的概率分布。如果你想要更全面地了解概率/分布,请查看此文章

  1. %matplotlib inline
  2. import numpy as np
  3. import matplotlib.pyplot as plt

概率分布

通常,给定数据源,我们想要考虑并检查我们的数据样本似乎遵循什么样的概率分布。更具体地说,我们试图推断出数据生成器遵循的概率分布,提出一个问题:它可以用什么函数代替?

检查数据的分布很重要,因为我们通常希望对我们的数据应用统计测试,并且许多统计测试都带有关于它们所应用的数据分布的基本假设。 确保我们应用适当的统计方法,需要考虑并检查数据的分布。

非正式地,我们可以从可视化我们的数据开始,看看它的形状是什么,以及它看起来遵循哪种分布。更正式地说,我们可以统计测试数据样本是否遵循特定分布。

在这里,我们将开始可视化一些最常见的分布。 Scipy(scipy.stats)有一系列代码和函数,用于处理和生成不同的分布 - 所有这些都具有一致的 API。我们将从不同的基础分布生成合成数据,并快速查看它们的外观,绘制生成数据的直方图。

你可以使用此笔记本来探索不同的参数,来了解这些分布。为进一步探索,绘制每个分布的概率密度函数。

均匀分布

均匀分布是一种分布,其中每个可能的值是同等可能的。

这是维基百科)上的均匀分布。

  1. from scipy.stats import uniform
  2. dat = uniform.rvs(size=10000)
  3. plt.hist(dat);

png

正态分布

正态(也称为高斯或“钟形曲线”)分布是由其均值和标准差定义的分布。

维基百科 上的正态分布。

  1. from scipy.stats import norm
  2. dat = norm.rvs(size=10000)
  3. plt.hist(dat, bins=20);

png

伯努利分布

伯努利分布是二元分布 - 它只需要两个值(0 或 1),概率为p

维基百科上的伯努利分布.

  1. from scipy.stats import bernoulli
  2. r = bernoulli.rvs(0.5, size=1000)
  3. plt.hist(r);

png

Gamma 分布

Gamma 分布是由两个参数定义的连续概率分布。

维基百科上的 Gamma 分布。

给定不同的参数,伽玛分布可能看起来非常不同。探索不同的参数。

指数分布在技术上是 Gamma 分布的一个特例,但也在 scipy 中单独实现为expon

  1. from scipy.stats import gamma
  2. dat = gamma.rvs(a=1, size=100000)
  3. plt.hist(dat, 50);

png

Beta 分布

Beta 分布是在区间[0,1]上定义的分布,由两个形状参数定义。

维基百科上的 Beta 分布。

  1. from scipy.stats import beta
  2. dat = beta.rvs(1, 1, size=1000)
  3. plt.hist(dat, 50);

png

泊松分布

在给定已知平均速率(和独立出现)的情况下,泊松分布建模了固定时间间隔的事件。

维基百科上的泊松分布。

  1. from scipy.stats import poisson
  2. dat = poisson.rvs(mu=1, size=100000)
  3. plt.hist(dat);

png