当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python SciPy stats.probplot用法及代码示例


本文简要介绍 python 语言中 scipy.stats.probplot 的用法。

用法:

scipy.stats.probplot(x, sparams=(), dist='norm', fit=True, plot=None, rvalue=False)#

计算概率图的分位数,并可选择显示该图。

生成样本数据相对于指定理论分布(默认为正态分布)的分位数的概率图。 probplot 可选择计算数据的 best-fit 线,并使用 Matplotlib 或给定绘图函数绘制结果。

参数

x array_like

probplot 创建绘图的样本/响应数据。

sparams 元组,可选

Distribution-specific 形状参数(形状参数加上位置和比例)。

dist str 或 stats.distributions 实例,可选

分布或分布函数名称。对于正态概率图,默认值为 ‘norm’。看起来足够像 stats.distributions 实例的对象(即它们具有 ppf 方法)也被接受。

fit 布尔型,可选

如果为 True(默认),则将最小二乘回归 (best-fit) 线拟合到样本数据。

plot 对象,可选

如果给定,则绘制分位数。如果给出并且scipy.stats.fit为真,也绘制最小二乘拟合。阴谋是一个必须具有方法 “plot” 和 “text” 的对象。这matplotlib.pyplot可以使用模块或 Matplotlib Axes 对象,或具有相同方法的自定义对象。默认为无,这意味着不创建绘图。

rvalue 布尔型,可选

如果阴谋提供和scipy.stats.fit为 True,设置右值to True 包括绘图上的决定系数。默认值为 False。

返回

(osm, osr) ndarray 的元组

理论分位数(osm,或顺序统计中位数)和有序响应(osr)的元组。 osr 是简单排序的输入 x。有关如何计算 osm 的详细信息,请参阅注释部分。

(slope, intercept, r) 浮点数元组,可选

包含最小二乘拟合结果的元组(如果由以下方法执行)probplot.r是决定系数的平方根。如果fit=Falseplot=None,这个元组不返回。

注意

即使阴谋给出,该图不显示或保存probplot;plt.show()或者plt.savefig('figname.png')应该在调用后使用probplot.

probplot 生成概率图,不应与 Q-Q 或 P-P 图混淆。 Statsmodels 具有更广泛的此类函数,请参阅 statsmodels.api.ProbPlot

用于理论分位数的公式(概率图的横轴)是 Filliben 的估计:

quantiles = dist.ppf(val), for

        0.5**(1/n),                  for i = n
  val = (i - 0.3175) / (n + 0.365),  for i = 2, ..., n-1
        1 - 0.5**(1/n),              for i = 1

其中i表示i-th有序值,n是值的总数。

例子

>>> import numpy as np
>>> from scipy import stats
>>> import matplotlib.pyplot as plt
>>> nsample = 100
>>> rng = np.random.default_rng()

具有小自由度的 t 分布:

>>> ax1 = plt.subplot(221)
>>> x = stats.t.rvs(3, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

具有较大自由度的 t 分布:

>>> ax2 = plt.subplot(222)
>>> x = stats.t.rvs(25, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

两个正态分布与广播的混合:

>>> ax3 = plt.subplot(223)
>>> x = stats.norm.rvs(loc=[0,5], scale=[1,1.5],
...                    size=(nsample//2,2), random_state=rng).ravel()
>>> res = stats.probplot(x, plot=plt)

标准正态分布:

>>> ax4 = plt.subplot(224)
>>> x = stats.norm.rvs(loc=0, scale=1, size=nsample, random_state=rng)
>>> res = stats.probplot(x, plot=plt)

使用 distsparams 关键字生成具有对数伽玛分布的新图形:

>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> x = stats.loggamma.rvs(c=2.5, size=500, random_state=rng)
>>> res = stats.probplot(x, dist=stats.loggamma, sparams=(2.5,), plot=ax)
>>> ax.set_title("Probplot for loggamma dist with shape parameter 2.5")

使用 Matplotlib 显示结果:

>>> plt.show()
scipy-stats-probplot-1_00.png
scipy-stats-probplot-1_01.png

相关用法


注:本文由纯净天空筛选整理自scipy.org大神的英文原创作品 scipy.stats.probplot。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。