Hướng dẫn chi-square cdf python

Cập nhật: như đã lưu ý, chisqprob () không được dùng cho phiên bản scipy 0.17.0 trở đi. Giá trị chi-square có độ chính xác cao hiện có thể được lấy qua scipy.stats.distributions.chi2.sf (), ví dụ:

>>>from scipy.stats.distributions import chi2 >>>chi2.sf(3.84,1) 0.050043521248705189 >>>chi2.sf(1424,1) 1.2799986253099803e-311

Mặc dù stats.chisqprob () và 1-stats.chi2.cdf () xuất hiện có thể so sánh được đối với các giá trị chi-square nhỏ, đối với các giá trị chi-square lớn thì ưu tiên hơn. Giá trị thứ hai không thể cung cấp giá trị p nhỏ hơn epsilon máy và sẽ đưa ra các câu trả lời rất không chính xác gần với epsilon máy. Như được trình bày bởi những người khác, các giá trị có thể so sánh cho kết quả là các giá trị chi bình phương nhỏ bằng hai phương pháp:

>>>from scipy.stats import chisqprob, chi2 >>>chisqprob(3.84,1) 0.050043521248705189 >>>1 - chi2.cdf(3.84,1) 0.050043521248705147

Sử dụng 1-chi2.cdf () được chia nhỏ tại đây:

>>>1 - chi2.cdf(67,1) 2.2204460492503131e-16 >>>1 - chi2.cdf(68,1) 1.1102230246251565e-16 >>>1 - chi2.cdf(69,1) 1.1102230246251565e-16 >>>1 - chi2.cdf(70,1) 0.0

Trong khi chisqprob () cung cấp cho bạn kết quả chính xác cho một phạm vi giá trị chi-square lớn hơn nhiều, tạo ra giá trị p gần bằng giá trị float nhỏ nhất lớn hơn 0, cho đến khi nó quá chảy:

>>>chisqprob(67,1) 2.7150713219425247e-16 >>>chisqprob(68,1) 1.6349553217245471e-16 >>>chisqprob(69,1) 9.8463440314253303e-17 >>>chisqprob(70,1) 5.9304458500824782e-17 >>>chisqprob(500,1) 9.505397766554137e-111 >>>chisqprob(1000,1) 1.7958327848007363e-219 >>>chisqprob(1424,1) 1.2799986253099803e-311 >>>chisqprob(1425,1) 0.0

22 hữu ích 3 bình luận chia sẻ

scipy.stats.chi2= object>[source]#

A chi-squared continuous random variable.

For the noncentral chi-square distribution, see ncx2.

As an instance of the rv_continuous class, chi2 object inherits from it a collection of generic methods [see below for the full list], and completes them with details specific for this particular distribution.

Notes

The probability density function for chi2 is:

\[f[x, k] = \frac{1}{2^{k/2} \Gamma \left[ k/2 \right]} x^{k/2-1} \exp \left[ -x/2 \right]\]

for \[x > 0\] and \[k > 0\] [degrees of freedom, denoted df in the implementation].

chi2 takes df as a shape parameter.

The chi-squared distribution is a special case of the gamma distribution, with gamma parameters a = df/2, loc = 0 and scale = 2.

The probability density above is defined in the “standardized” form. To shift and/or scale the distribution use the loc and scale parameters. Specifically, chi2.pdf[x, df, loc, scale] is identically equivalent to chi2.pdf[y, df] / scale with y = [x - loc] / scale. Note that shifting the location of a distribution does not make it a “noncentral” distribution; noncentral generalizations of some distributions are available in separate classes.

Examples

>>> from scipy.stats import chi2 >>> import matplotlib.pyplot as plt >>> fig, ax = plt.subplots[1, 1]

Calculate the first four moments:

>>> df = 55 >>> mean, var, skew, kurt = chi2.stats[df, moments='mvsk']

Display the probability density function [pdf]:

>>> x = np.linspace[chi2.ppf[0.01, df], ... chi2.ppf[0.99, df], 100] >>> ax.plot[x, chi2.pdf[x, df], ... 'r-', lw=5, alpha=0.6, label='chi2 pdf']

Alternatively, the distribution object can be called [as a function] to fix the shape, location and scale parameters. This returns a “frozen” RV object holding the given parameters fixed.

Freeze the distribution and display the frozen pdf:

>>> rv = chi2[df] >>> ax.plot[x, rv.pdf[x], 'k-', lw=2, label='frozen pdf']

Check accuracy of cdf and ppf:

>>> vals = chi2.ppf[[0.001, 0.5, 0.999], df] >>> np.allclose[[0.001, 0.5, 0.999], chi2.cdf[vals, df]] True

Generate random numbers:

>>> r = chi2.rvs[df, size=1000]

And compare the histogram:

>>> ax.hist[r, density=True, histtype='stepfilled', alpha=0.2] >>> ax.legend[loc='best', frameon=False] >>> plt.show[]

Methods

rvs[df, loc=0, scale=1, size=1, random_state=None]

Random variates.

pdf[x, df, loc=0, scale=1]

Probability density function.

logpdf[x, df, loc=0, scale=1]

Log of the probability density function.

cdf[x, df, loc=0, scale=1]

Cumulative distribution function.

logcdf[x, df, loc=0, scale=1]

Log of the cumulative distribution function.

sf[x, df, loc=0, scale=1]

Survival function [also defined as 1 - cdf, but sf is sometimes more accurate].

logsf[x, df, loc=0, scale=1]

Log of the survival function.

ppf[q, df, loc=0, scale=1]

Percent point function [inverse of cdf — percentiles].

isf[q, df, loc=0, scale=1]

Inverse survival function [inverse of sf].

moment[order, df, loc=0, scale=1]

Non-central moment of the specified order.

stats[df, loc=0, scale=1, moments=’mv’]

Mean[‘m’], variance[‘v’], skew[‘s’], and/or kurtosis[‘k’].

entropy[df, loc=0, scale=1]

[Differential] entropy of the RV.

fit[data]

Parameter estimates for generic data. See scipy.stats.rv_continuous.fit for detailed documentation of the keyword arguments.

expect[func, args=[df,], loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds]

Expected value of a function [of one argument] with respect to the distribution.

median[df, loc=0, scale=1]

Median of the distribution.

mean[df, loc=0, scale=1]

Mean of the distribution.

var[df, loc=0, scale=1]

Variance of the distribution.

std[df, loc=0, scale=1]

Standard deviation of the distribution.

interval[confidence, df, loc=0, scale=1]

Confidence interval with equal areas around the median.