Class for convenient construction of Q-Q, P-P, and probability plots.
Can take arguments specifying the parameters for dist or fit them automatically. (See fit under kwargs.)
Parameters : | data : array-like
dist : A scipy.stats or statsmodels distribution
distargs : tuple
loc : float
a : float
scale : float
fit : boolean
|
---|
See also
scipy.stats.probplot
Notes
Depends on matplotlib.
distribution’s fit() method.
methods are similar, so examples 1 through 4 apply to all three methods.
Compares the sample and theoretical probabilities (percentiles).
Compares the sample and theoretical quantiles
Same as a Q-Q plot, however probabilities are shown in the scale of the theoretical distribution (x-axis) and the y-axis contains unscaled quantiles of the sample data.
Examples
>>> import statsmodels.api as sm
>>> from matplotlib import pyplot as plt
>>> # example 1
>>> data = sm.datasets.longley.load()
>>> data.exog = sm.add_constant(data.exog)
>>> model = sm.OLS(data.endog, data.exog)
>>> mod_fit = model.fit()
>>> res = mod_fit.resid # residuals
>>> probplot = sm.ProbPlot(res)
>>> probplot.qqplot()
>>> plt.show()
qqplot of the residuals against quantiles of t-distribution with 4 degrees of freedom:
>>> # example 2
>>> import scipy.stats as stats
>>> probplot = sm.ProbPlot(res, stats.t, distargs=(4,))
>>> fig = probplot.qqplot()
>>> plt.show()
qqplot against same as above, but with mean 3 and std 10:
>>> # example 3
>>> probplot = sm.ProbPlot(res, stats.t, distargs=(4,), loc=3, scale=10)
>>> fig = probplot.qqplot()
>>> plt.show()
Automatically determine parameters for t distribution including the loc and scale:
>>> # example 4
>>> probplot = sm.ProbPlot(res, stats.t, fit=True)
>>> fig = probplot.qqplot(line='45')
>>> plt.show()
A second ProbPlot object can be used to compare two seperate sample sets by using the other kwarg in the qqplot and ppplot methods.
>>> # example 5
>>> import numpy as np
>>> x = np.random.normal(loc=8.25, scale=2.75, size=37)
>>> y = np.random.normal(loc=8.75, scale=3.25, size=37)
>>> pp_x = sm.ProbPlot(x, fit=True)
>>> pp_y = sm.ProbPlot(y, fit=True)
>>> fig = pp_x.qqplot(line='45', other=pp_y)
>>> plt.show()
The following plot displays some options, follow the link to see the code.
Methods
ppplot([xlabel, ylabel, line, other, ax]) | P-P plot of the percentiles (probabilities) of x versus the |
probplot([line, ax, exceed]) | Probability plot of the unscaled quantiles of x versus the |
qqplot([xlabel, ylabel, line, other, ax]) | Q-Q plot of the quantiles of x versus the quantiles/ppf of a |
sample_percentiles() | |
sample_quantiles() | |
sorted_data() | |
theoretical_percentiles() | |
theoretical_quantiles() |