ℹ️ Skipped - page is already crawled
| Filter | Status | Condition | Details |
|---|---|---|---|
| HTTP status | PASS | download_http_code = 200 | HTTP 200 |
| Age cutoff | PASS | download_stamp > now() - 6 MONTH | 0.1 months ago |
| History drop | PASS | isNull(history_drop_reason) | No drop reason |
| Spam/ban | PASS | fh_dont_index != 1 AND ml_spam_score = 0 | ml_spam_score=0 |
| Canonical | PASS | meta_canonical IS NULL OR = '' OR = src_unparsed | Not set |
| Property | Value |
|---|---|
| URL | https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html |
| Last Crawled | 2026-04-14 10:07:36 (3 days ago) |
| First Indexed | 2025-02-18 00:23:19 (1 year ago) |
| HTTP Status Code | 200 |
| Meta Title | scipy.stats.beta — SciPy v1.15.2 Manual |
| Meta Description | null |
| Meta Canonical | null |
| Boilerpipe Text | scipy.stats.
beta
=
<scipy.stats._continuous_distns.beta_gen
object>
[source]
#
A beta continuous random variable.
As an instance of the
rv_continuous
class,
beta
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
beta
is:
\[f(x, a, b) = \frac{\Gamma(a+b) x^{a-1} (1-x)^{b-1}}
{\Gamma(a) \Gamma(b)}\]
for
\(0 <= x <= 1\)
,
\(a > 0\)
,
\(b > 0\)
, where
\(\Gamma\)
is the gamma function (
scipy.special.gamma
).
beta
takes
\(a\)
and
\(b\)
as shape parameters.
This distribution uses routines from the Boost Math C++ library for
the computation of the
pdf
,
cdf
,
ppf
,
sf
and
isf
methods.
[1]
The probability density above is defined in the “standardized” form. To shift
and/or scale the distribution use the
loc
and
scale
parameters.
Specifically,
beta.pdf(x,
a,
b,
loc,
scale)
is identically
equivalent to
beta.pdf(y,
a,
b)
/
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.
References
Examples
>>>
import
numpy
as
np
>>>
from
scipy.stats
import
beta
>>>
import
matplotlib.pyplot
as
plt
>>>
fig
,
ax
=
plt
.
subplots
(
1
,
1
)
Calculate the first four moments:
>>>
a
,
b
=
2.31
,
0.627
>>>
mean
,
var
,
skew
,
kurt
=
beta
.
stats
(
a
,
b
,
moments
=
'mvsk'
)
Display the probability density function (
pdf
):
>>>
x
=
np
.
linspace
(
beta
.
ppf
(
0.01
,
a
,
b
),
...
beta
.
ppf
(
0.99
,
a
,
b
),
100
)
>>>
ax
.
plot
(
x
,
beta
.
pdf
(
x
,
a
,
b
),
...
'r-'
,
lw
=
5
,
alpha
=
0.6
,
label
=
'beta 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
=
beta
(
a
,
b
)
>>>
ax
.
plot
(
x
,
rv
.
pdf
(
x
),
'k-'
,
lw
=
2
,
label
=
'frozen pdf'
)
Check accuracy of
cdf
and
ppf
:
>>>
vals
=
beta
.
ppf
([
0.001
,
0.5
,
0.999
],
a
,
b
)
>>>
np
.
allclose
([
0.001
,
0.5
,
0.999
],
beta
.
cdf
(
vals
,
a
,
b
))
True
Generate random numbers:
>>>
r
=
beta
.
rvs
(
a
,
b
,
size
=
1000
)
And compare the histogram:
>>>
ax
.
hist
(
r
,
density
=
True
,
bins
=
'auto'
,
histtype
=
'stepfilled'
,
alpha
=
0.2
)
>>>
ax
.
set_xlim
([
x
[
0
],
x
[
-
1
]])
>>>
ax
.
legend
(
loc
=
'best'
,
frameon
=
False
)
>>>
plt
.
show
()
Methods
rvs(a, b, loc=0, scale=1, size=1, random_state=None)
Random variates.
pdf(x, a, b, loc=0, scale=1)
Probability density function.
logpdf(x, a, b, loc=0, scale=1)
Log of the probability density function.
cdf(x, a, b, loc=0, scale=1)
Cumulative distribution function.
logcdf(x, a, b, loc=0, scale=1)
Log of the cumulative distribution function.
sf(x, a, b, loc=0, scale=1)
Survival function (also defined as
1
-
cdf
, but
sf
is sometimes more accurate).
logsf(x, a, b, loc=0, scale=1)
Log of the survival function.
ppf(q, a, b, loc=0, scale=1)
Percent point function (inverse of
cdf
— percentiles).
isf(q, a, b, loc=0, scale=1)
Inverse survival function (inverse of
sf
).
moment(order, a, b, loc=0, scale=1)
Non-central moment of the specified order.
stats(a, b, loc=0, scale=1, moments=’mv’)
Mean(‘m’), variance(‘v’), skew(‘s’), and/or kurtosis(‘k’).
entropy(a, b, 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=(a, b), 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(a, b, loc=0, scale=1)
Median of the distribution.
mean(a, b, loc=0, scale=1)
Mean of the distribution.
var(a, b, loc=0, scale=1)
Variance of the distribution.
std(a, b, loc=0, scale=1)
Standard deviation of the distribution.
interval(confidence, a, b, loc=0, scale=1)
Confidence interval with equal areas around the median. |
| Markdown | [Skip to main content](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#main-content)
Back to top
[ SciPy](https://docs.scipy.org/doc/scipy-1.15.2/index.html)
- [Installing](https://scipy.org/install/)
- [User Guide](https://docs.scipy.org/doc/scipy-1.15.2/tutorial/index.html)
- [API reference](https://docs.scipy.org/doc/scipy-1.15.2/reference/index.html)
- [Building from source](https://docs.scipy.org/doc/scipy-1.15.2/building/index.html)
- [Development](https://docs.scipy.org/doc/scipy-1.15.2/dev/index.html)
- [Release notes](https://docs.scipy.org/doc/scipy-1.15.2/release.html)
- [GitHub](https://github.com/scipy/scipy "GitHub")
- [Twitter](https://twitter.com/SciPy_team "Twitter")
- [Installing](https://scipy.org/install/)
- [User Guide](https://docs.scipy.org/doc/scipy-1.15.2/tutorial/index.html)
- [API reference](https://docs.scipy.org/doc/scipy-1.15.2/reference/index.html)
- [Building from source](https://docs.scipy.org/doc/scipy-1.15.2/building/index.html)
- [Development](https://docs.scipy.org/doc/scipy-1.15.2/dev/index.html)
- [Release notes](https://docs.scipy.org/doc/scipy-1.15.2/release.html)
- [GitHub](https://github.com/scipy/scipy "GitHub")
- [Twitter](https://twitter.com/SciPy_team "Twitter")
Section Navigation
- [scipy](https://docs.scipy.org/doc/scipy-1.15.2/reference/main_namespace.html)
- [scipy.cluster](https://docs.scipy.org/doc/scipy-1.15.2/reference/cluster.html)
- [scipy.constants](https://docs.scipy.org/doc/scipy-1.15.2/reference/constants.html)
- [scipy.datasets](https://docs.scipy.org/doc/scipy-1.15.2/reference/datasets.html)
- [scipy.differentiate](https://docs.scipy.org/doc/scipy-1.15.2/reference/differentiate.html)
- [scipy.fft](https://docs.scipy.org/doc/scipy-1.15.2/reference/fft.html)
- [scipy.fftpack](https://docs.scipy.org/doc/scipy-1.15.2/reference/fftpack.html)
- [scipy.integrate](https://docs.scipy.org/doc/scipy-1.15.2/reference/integrate.html)
- [scipy.interpolate](https://docs.scipy.org/doc/scipy-1.15.2/reference/interpolate.html)
- [scipy.io](https://docs.scipy.org/doc/scipy-1.15.2/reference/io.html)
- [scipy.linalg](https://docs.scipy.org/doc/scipy-1.15.2/reference/linalg.html)
- [scipy.ndimage](https://docs.scipy.org/doc/scipy-1.15.2/reference/ndimage.html)
- [scipy.odr](https://docs.scipy.org/doc/scipy-1.15.2/reference/odr.html)
- [scipy.optimize](https://docs.scipy.org/doc/scipy-1.15.2/reference/optimize.html)
- [scipy.signal](https://docs.scipy.org/doc/scipy-1.15.2/reference/signal.html)
- [scipy.sparse](https://docs.scipy.org/doc/scipy-1.15.2/reference/sparse.html)
- [scipy.spatial](https://docs.scipy.org/doc/scipy-1.15.2/reference/spatial.html)
- [scipy.special](https://docs.scipy.org/doc/scipy-1.15.2/reference/special.html)
- [scipy.stats](https://docs.scipy.org/doc/scipy-1.15.2/reference/stats.html)
- [SciPy API](https://docs.scipy.org/doc/scipy-1.15.2/reference/index.html)
- [Statistical functions (`scipy.stats`)](https://docs.scipy.org/doc/scipy-1.15.2/reference/stats.html)
- scipy.stats.beta
# scipy.stats.beta[\#](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy-stats-beta "Link to this heading")
scipy.stats.beta *\= \<scipy.stats.\_continuous\_distns.beta\_gen object\>*[\[source\]](https://github.com/scipy/scipy/blob/v1.15.2/scipy/stats/_continuous_distns.py#L0-L1)[\#](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "Link to this definition")
A beta continuous random variable.
As an instance of the [`rv_continuous`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.rv_continuous.html#scipy.stats.rv_continuous "scipy.stats.rv_continuous") class, [`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "scipy.stats.beta") 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 [`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "scipy.stats.beta") is:
\\\[f(x, a, b) = \\frac{\\Gamma(a+b) x^{a-1} (1-x)^{b-1}} {\\Gamma(a) \\Gamma(b)}\\\]
for \\(0 \<= x \<= 1\\), \\(a \> 0\\), \\(b \> 0\\), where \\(\\Gamma\\) is the gamma function ([`scipy.special.gamma`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.special.gamma.html#scipy.special.gamma "scipy.special.gamma")).
[`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "scipy.stats.beta") takes \\(a\\) and \\(b\\) as shape parameters.
This distribution uses routines from the Boost Math C++ library for the computation of the `pdf`, `cdf`, `ppf`, `sf` and `isf` methods. [\[1\]](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#r8b11f181b37f-1)
The probability density above is defined in the “standardized” form. To shift and/or scale the distribution use the `loc` and `scale` parameters. Specifically, `beta.pdf(x, a, b, loc, scale)` is identically equivalent to `beta.pdf(y, a, b) / 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.
References
\[[1](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#id1)\]
The Boost Developers. “Boost C++ Libraries”. <https://www.boost.org/>.
Examples
Try it in your browser\!
```
>>> import numpy as np
>>> from scipy.stats import beta
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
```
Calculate the first four moments:
```
>>> a, b = 2.31, 0.627
>>> mean, var, skew, kurt = beta.stats(a, b, moments='mvsk')
```
Display the probability density function (`pdf`):
```
>>> x = np.linspace(beta.ppf(0.01, a, b),
... beta.ppf(0.99, a, b), 100)
>>> ax.plot(x, beta.pdf(x, a, b),
... 'r-', lw=5, alpha=0.6, label='beta 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 = beta(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
```
Check accuracy of `cdf` and `ppf`:
```
>>> vals = beta.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], beta.cdf(vals, a, b))
True
```
Generate random numbers:
```
>>> r = beta.rvs(a, b, size=1000)
```
And compare the histogram:
```
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
```

Go Back
Open In Tab
Methods
| | |
|---|---|
| **rvs(a, b, loc=0, scale=1, size=1, random\_state=None)** | Random variates. |
| **pdf(x, a, b, loc=0, scale=1)** | Probability density function. |
| **logpdf(x, a, b, loc=0, scale=1)** | Log of the probability density function. |
| **cdf(x, a, b, loc=0, scale=1)** | Cumulative distribution function. |
| **logcdf(x, a, b, loc=0, scale=1)** | Log of the cumulative distribution function. |
| **sf(x, a, b, loc=0, scale=1)** | Survival function (also defined as `1 - cdf`, but *sf* is sometimes more accurate). |
| **logsf(x, a, b, loc=0, scale=1)** | Log of the survival function. |
| **ppf(q, a, b, loc=0, scale=1)** | Percent point function (inverse of `cdf` — percentiles). |
| **isf(q, a, b, loc=0, scale=1)** | Inverse survival function (inverse of `sf`). |
| **moment(order, a, b, loc=0, scale=1)** | Non-central moment of the specified order. |
| **stats(a, b, loc=0, scale=1, moments=’mv’)** | Mean(‘m’), variance(‘v’), skew(‘s’), and/or kurtosis(‘k’). |
| **entropy(a, b, loc=0, scale=1)** | (Differential) entropy of the RV. |
| **fit(data)** | Parameter estimates for generic data. See [scipy.stats.rv\_continuous.fit](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_continuous.fit.html#scipy.stats.rv_continuous.fit) for detailed documentation of the keyword arguments. |
| **expect(func, args=(a, b), 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(a, b, loc=0, scale=1)** | Median of the distribution. |
| **mean(a, b, loc=0, scale=1)** | Mean of the distribution. |
| **var(a, b, loc=0, scale=1)** | Variance of the distribution. |
| **std(a, b, loc=0, scale=1)** | Standard deviation of the distribution. |
| **interval(confidence, a, b, loc=0, scale=1)** | Confidence interval with equal areas around the median. |
[previous scipy.stats.argus](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.argus.html "previous page")
[next scipy.stats.betaprime](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.betaprime.html "next page")
On this page
- [`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta)
© Copyright 2008-2025, The SciPy community.
Created using [Sphinx](https://www.sphinx-doc.org/) 7.3.7.
Built with the [PyData Sphinx Theme](https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html) 0.15.2. |
| Readable Markdown | scipy.stats.beta *\= \<scipy.stats.\_continuous\_distns.beta\_gen object\>*[\[source\]](https://github.com/scipy/scipy/blob/v1.15.2/scipy/stats/_continuous_distns.py#L0-L1)[\#](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "Link to this definition")
A beta continuous random variable.
As an instance of the [`rv_continuous`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.rv_continuous.html#scipy.stats.rv_continuous "scipy.stats.rv_continuous") class, [`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "scipy.stats.beta") 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 [`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "scipy.stats.beta") is:
\\\[f(x, a, b) = \\frac{\\Gamma(a+b) x^{a-1} (1-x)^{b-1}} {\\Gamma(a) \\Gamma(b)}\\\]
for \\(0 \<= x \<= 1\\), \\(a \> 0\\), \\(b \> 0\\), where \\(\\Gamma\\) is the gamma function ([`scipy.special.gamma`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.special.gamma.html#scipy.special.gamma "scipy.special.gamma")).
[`beta`](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#scipy.stats.beta "scipy.stats.beta") takes \\(a\\) and \\(b\\) as shape parameters.
This distribution uses routines from the Boost Math C++ library for the computation of the `pdf`, `cdf`, `ppf`, `sf` and `isf` methods. [\[1\]](https://docs.scipy.org/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html#r8b11f181b37f-1)
The probability density above is defined in the “standardized” form. To shift and/or scale the distribution use the `loc` and `scale` parameters. Specifically, `beta.pdf(x, a, b, loc, scale)` is identically equivalent to `beta.pdf(y, a, b) / 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.
References
Examples
```
>>> import numpy as np
>>> from scipy.stats import beta
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
```
Calculate the first four moments:
```
>>> a, b = 2.31, 0.627
>>> mean, var, skew, kurt = beta.stats(a, b, moments='mvsk')
```
Display the probability density function (`pdf`):
```
>>> x = np.linspace(beta.ppf(0.01, a, b),
... beta.ppf(0.99, a, b), 100)
>>> ax.plot(x, beta.pdf(x, a, b),
... 'r-', lw=5, alpha=0.6, label='beta 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 = beta(a, b)
>>> ax.plot(x, rv.pdf(x), 'k-', lw=2, label='frozen pdf')
```
Check accuracy of `cdf` and `ppf`:
```
>>> vals = beta.ppf([0.001, 0.5, 0.999], a, b)
>>> np.allclose([0.001, 0.5, 0.999], beta.cdf(vals, a, b))
True
```
Generate random numbers:
```
>>> r = beta.rvs(a, b, size=1000)
```
And compare the histogram:
```
>>> ax.hist(r, density=True, bins='auto', histtype='stepfilled', alpha=0.2)
>>> ax.set_xlim([x[0], x[-1]])
>>> ax.legend(loc='best', frameon=False)
>>> plt.show()
```

Methods
| | |
|---|---|
| **rvs(a, b, loc=0, scale=1, size=1, random\_state=None)** | Random variates. |
| **pdf(x, a, b, loc=0, scale=1)** | Probability density function. |
| **logpdf(x, a, b, loc=0, scale=1)** | Log of the probability density function. |
| **cdf(x, a, b, loc=0, scale=1)** | Cumulative distribution function. |
| **logcdf(x, a, b, loc=0, scale=1)** | Log of the cumulative distribution function. |
| **sf(x, a, b, loc=0, scale=1)** | Survival function (also defined as `1 - cdf`, but *sf* is sometimes more accurate). |
| **logsf(x, a, b, loc=0, scale=1)** | Log of the survival function. |
| **ppf(q, a, b, loc=0, scale=1)** | Percent point function (inverse of `cdf` — percentiles). |
| **isf(q, a, b, loc=0, scale=1)** | Inverse survival function (inverse of `sf`). |
| **moment(order, a, b, loc=0, scale=1)** | Non-central moment of the specified order. |
| **stats(a, b, loc=0, scale=1, moments=’mv’)** | Mean(‘m’), variance(‘v’), skew(‘s’), and/or kurtosis(‘k’). |
| **entropy(a, b, loc=0, scale=1)** | (Differential) entropy of the RV. |
| **fit(data)** | Parameter estimates for generic data. See [scipy.stats.rv\_continuous.fit](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.rv_continuous.fit.html#scipy.stats.rv_continuous.fit) for detailed documentation of the keyword arguments. |
| **expect(func, args=(a, b), 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(a, b, loc=0, scale=1)** | Median of the distribution. |
| **mean(a, b, loc=0, scale=1)** | Mean of the distribution. |
| **var(a, b, loc=0, scale=1)** | Variance of the distribution. |
| **std(a, b, loc=0, scale=1)** | Standard deviation of the distribution. |
| **interval(confidence, a, b, loc=0, scale=1)** | Confidence interval with equal areas around the median. | |
| Shard | 63 (laksa) |
| Root Hash | 12122434965281355463 |
| Unparsed URL | org,scipy!docs,/doc/scipy-1.15.2/reference/generated/scipy.stats.beta.html s443 |