viz API

viz API 参考

probscale.viz.probplot(data, ax=None, plottype='prob', dist=None, probax='x', problabel=None, datascale='linear', datalabel=None, bestfit=False, return_best_fit_results=False, estimate_ci=False, ci_kws=None, pp_kws=None, scatter_kws=None, line_kws=None, **fgkwargs)[源代码]

概率图、百分位数图和分位数图。

参数

data : 类似数组

要绘制的 1 维数据

ax : matplotlib 轴,可选

要绘制的轴。如果未提供,将创建一个新的轴。

plottype : 字符串(默认值 = ‘prob’)

要创建的图的类型。选项为

  • ‘prob’:概率图
  • ‘pp’:百分位数图
  • ‘qq’:分位数图

dist : scipy 分布,可选

用于计算刻度位置的分布。如果未指定,将使用标准正态分布。

probax : 字符串,可选(默认值 = ‘x’)

将用作概率(或分位数)轴的轴(‘x’ 或 ‘y’)。

problabel, datalabel : 字符串,可选

分别为概率/分位数轴和数据轴的轴标签。

datascale : 字符串,可选(默认值 = ‘log’)

非概率轴的刻度

bestfit : 布尔值,可选(默认值为 False)

指定是否应向图中添加最佳拟合线。

return_best_fit_results : 布尔值(默认值为 False)

如果为 True,则会返回结果字典以及图形。

estimate_ci : 布尔值,可选(False)

使用百分位数自举估计并绘制最佳拟合线周围的置信带。

ci_kws : 字典,可选

当计算最佳拟合线时,直接传递给 viz.fit_line 的关键字参数字典。

pp_kws : 字典,可选

当计算绘图位置时,直接传递给 viz.plot_pos 的关键字参数字典。

scatter_kws, line_kws : 字典,可选

分别绘制散点图和最佳拟合线时,直接传递给 ax.plot 的关键字参数字典。

返回值

fig : matplotlib.Figure

绘制图形的图形。

result : 线性拟合结果的字典,可选

键为

  • q : 分位数数组
  • x, y : 传递给函数的数组数据
  • xhat, yhat : 最佳拟合线中绘制的建模数据数组
  • res : 最佳拟合线的系数数组。
其他参数
 

color : 字符串,可选

直接指定的 matplotlib 颜色参数,用于数据系列和最佳拟合线(如果绘制)。此参数可用于与 seaborn 包兼容,不建议一般使用。相反,颜色应在 scatter_kwsline_kws 中指定。

注意

用户不应指定此参数。它仅供 seaborn 在 FacetGrid 中操作时使用。

label : 字符串,可选

数据系列的直接指定的图例标签。此参数可用于与 seaborn 包兼容,不建议一般使用。相反,数据系列标签应在 scatter_kws 中指定。

注意

用户不应指定此参数。它仅供 seaborn 在 FacetGrid 中操作时使用。

另请参阅

viz.plot_pos, viz.fit_line, numpy.polyfit, scipy.stats.probplot, scipy.stats.mstats.plotting_positions

示例

y 轴上带有概率的概率图

>>> import numpy; numpy.random.seed(0)
>>> from matplotlib import pyplot
>>> from scipy import stats
>>> from probscale.viz import probplot
>>> data = numpy.random.normal(loc=5, scale=1.25, size=37)
>>> fig = probplot(data, plottype='prob', probax='y',
...          problabel='Non-exceedance probability',
...          datalabel='Observed values', bestfit=True,
...          line_kws=dict(linestyle='--', linewidth=2),
...          scatter_kws=dict(marker='o', alpha=0.5))
../_images/viz-1.png

x 轴上带有分位数的分位数图

>>> fig = probplot(data, plottype='qq', probax='x',
...          problabel='Theoretical Quantiles',
...          datalabel='Observed values', bestfit=True,
...          line_kws=dict(linestyle='-', linewidth=2),
...          scatter_kws=dict(marker='s', alpha=0.5))
../_images/viz-2.png
probscale.viz.plot_pos(data, postype=None, alpha=None, beta=None)[源代码]

计算数据集的绘图位置。大量借用自 scipy.stats.mstats.plotting_positions

绘图位置定义为:(i-alpha)/(n+1-alpha-beta),其中

  • i 是等级顺序
  • n 是数据集的大小
  • alphabeta 是用于调整位置的参数。

可以显式设置 alphabeta 的值。也可以通过 postype 参数访问典型值。可用的 postype 值(alpha,beta)为

“type 4”(alpha=0,beta=1)
经验 CDF 的线性插值。
“type 5”或“hazen”(alpha=0.5,beta=0.5)
分段线性插值。
“type 6”或“weibull”(alpha=0,beta=0)
威布尔绘图位置。所有分布的无偏超额概率。建议用于水文应用。
“type 7”(alpha=1,beta=1)
R 中的默认值。不建议与概率刻度一起使用,因为最小和最大数据点分别获得 0 和 1 的绘图位置,因此无法显示。
“type 8”(alpha=1/3,beta=1/3)
近似中位数无偏。
“type 9”或“blom”(alpha=0.375,beta=0.375)
如果数据呈正态分布,则位置近似无偏。
“median”(alpha=0.3175,beta=0.3175)
所有分布的中位数超额概率(在 scipy.stats.probplot 中使用)。
“apl”或“pwm”(alpha=0.35,beta=0.35)
用于概率加权矩。
“cunnane”(alpha=0.4,beta=0.4)
对于正态分布的数据,分位数几乎是无偏的。这是默认值。
“gringorten”(alpha=0.44,beta=0.44)
用于 Gumble 分布。
参数

data : 类似数组

需要计算绘图位置的值。

postype : 字符串,可选(默认值:“cunnane”)

alpha, beta : 浮点数,可选

如果通过 postype 参数提供的选项不足,则自定义绘图位置参数。

返回值

plot_pos : numpy.array

计算出的绘图位置,已排序。

data_sorted : numpy.array

原始数据值,已排序。

参考文献

http://artax.karlin.mff.cuni.cz/r-help/library/lmomco/html/pp.html http://astrostatistics.psu.edu/su07/R/html/stats/html/quantile.html https://docs.scipy.org.cn/doc/scipy-0.17.0/reference/generated/scipy.stats.probplot.html https://docs.scipy.org.cn/doc/scipy-0.17.0/reference/generated/scipy.stats.mstats.plotting_positions.html

probscale.viz.fit_line(x, y, xhat=None, fitprobs=None, fitlogs=None, dist=None, estimate_ci=False, niter=10000, alpha=0.05)[源代码]

以各种形式(线性、对数、概率刻度)将线拟合到 x-y 数据。

参数

x, y : 类似数组

分别为自变量和因变量数据。

xhat : 类似数组,可选

应该估计 yhat 的值。如果未提供,则回退到 x 的排序值。

fitprobs, fitlogs : 字符串,可选。

定义数据的转换方式。有效值为 “x”、“y” 或 “both”。如果使用 fitprobs,则变量应表示为百分比,即对于概率变换,数据将使用 lambda x: dist.ppf(x / 100.) 进行变换。对于对数变换,则使用 lambda x: numpy.log(x)。请注意不要将相同的值传递给 fitlogsfigprobs,因为这两个变换都将被应用。

dist : 分布,可选

一个完全符合规范的类似于 scipy.stats 分布的对象,可以调用 dist.ppfdist.cdf。如果未提供,则默认为 scipt.stats.norm 的最小实现。

estimate_ci : 布尔值,可选(False)

使用百分位数自举估计并绘制最佳拟合线周围的置信带。

niter : int,可选 (默认值 = 10000)

如果提供了 estimate_ci,则为 bootstrap 迭代的次数。

alpha : float,可选 (默认值 = 0.05)

bootstrap 估计的置信水平。

返回值

xhat, yhat : numpy 数组

xy 的线性模型估计值。

results : dict

线性拟合结果的字典。键包括

  • 斜率
  • 截距
  • yhat_lo (估计 y 值的置信区间的下限)
  • yhat_hi (估计 y 值的置信区间的上限)