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_kws
和line_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))
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))
-
probscale.viz.
plot_pos
(data, postype=None, alpha=None, beta=None)[源代码]¶ 计算数据集的绘图位置。大量借用自
scipy.stats.mstats.plotting_positions
。绘图位置定义为:
(i-alpha)/(n+1-alpha-beta)
,其中i
是等级顺序n
是数据集的大小alpha
和beta
是用于调整位置的参数。
可以显式设置
alpha
和beta
的值。也可以通过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)
。请注意不要将相同的值传递给fitlogs
和figprobs
,因为这两个变换都将被应用。dist : 分布,可选
一个完全符合规范的类似于 scipy.stats 分布的对象,可以调用
dist.ppf
和dist.cdf
。如果未提供,则默认为scipt.stats.norm
的最小实现。estimate_ci : 布尔值,可选(False)
使用百分位数自举估计并绘制最佳拟合线周围的置信带。
niter : int,可选 (默认值 = 10000)
如果提供了
estimate_ci
,则为 bootstrap 迭代的次数。alpha : float,可选 (默认值 = 0.05)
bootstrap 估计的置信水平。
返回值 xhat, yhat : numpy 数组
x
和y
的线性模型估计值。results : dict
线性拟合结果的字典。键包括
- 斜率
- 截距
- yhat_lo (估计 y 值的置信区间的下限)
- yhat_hi (估计 y 值的置信区间的上限)