scipy.stats.

rv_histogram#

類別 scipy.stats.rv_histogram(histogram, *args, density=None, **kwargs)[source]#

產生由直方圖給定的分布。這對於從分箱資料樣本產生範本分布很有用。

作為 rv_continuous 類別的子類別,rv_histogram 從它繼承了一系列通用方法 (請參閱 rv_continuous 以取得完整列表),並根據提供的分箱資料樣本的屬性實作它們。

參數:
histogramarray_like 的元組

包含兩個 array_like 物件的元組。第一個包含 n 個 bin 的內容,第二個包含 (n+1) 個 bin 邊界。特別是,接受 numpy.histogram 的傳回值。

density布林值,選用

如果為 False,則假設直方圖與每個 bin 的計數成正比;否則,假設它與密度成正比。對於恆定的 bin 寬度,這些是等效的,但當 bin 寬度變化時,區別很重要 (請參閱「注意事項」)。如果為 None (預設值),則為了向後相容性而設定 density=True,但如果 bin 寬度可變,則會發出警告。明確設定 density 以消除警告。

在版本 1.10.0 中新增。

注意事項

當直方圖具有不相等的 bin 寬度時,與每個 bin 的計數成正比的直方圖和與 bin 上的機率密度成正比的直方圖之間存在區別。如果使用預設的 density=False 呼叫 numpy.histogram,則產生的直方圖是每個 bin 的計數數,因此應將 density=False 傳遞給 rv_histogram。如果使用 density=True 呼叫 numpy.histogram,則產生的直方圖以機率密度表示,因此應將 density=True 傳遞給 rv_histogram。為了避免警告,當輸入直方圖具有不相等的 bin 寬度時,請務必明確傳遞 density

除了 loc 和 scale 之外,沒有其他形狀參數。pdf 定義為來自所提供直方圖的階梯函數。cdf 是 pdf 的線性內插。

在版本 0.19.0 中新增。

範例

從 numpy 直方圖建立 scipy.stats 分布

>>> import scipy.stats
>>> import numpy as np
>>> data = scipy.stats.norm.rvs(size=100000, loc=0, scale=1.5,
...                             random_state=123)
>>> hist = np.histogram(data, bins=100)
>>> hist_dist = scipy.stats.rv_histogram(hist, density=False)

行為類似一般的 scipy rv_continuous 分布

>>> hist_dist.pdf(1.0)
0.20538577847618705
>>> hist_dist.cdf(2.0)
0.90818568543056499

PDF 在直方圖的最高 (最低) bin 之上 (之下) 為零,由原始資料集的最大值 (最小值) 定義

>>> hist_dist.pdf(np.max(data))
0.0
>>> hist_dist.cdf(np.max(data))
1.0
>>> hist_dist.pdf(np.min(data))
7.7591907244498314e-05
>>> hist_dist.cdf(np.min(data))
0.0

PDF 和 CDF 遵循直方圖

>>> import matplotlib.pyplot as plt
>>> X = np.linspace(-5.0, 5.0, 100)
>>> fig, ax = plt.subplots()
>>> ax.set_title("PDF from Template")
>>> ax.hist(data, density=True, bins=100)
>>> ax.plot(X, hist_dist.pdf(X), label='PDF')
>>> ax.plot(X, hist_dist.cdf(X), label='CDF')
>>> ax.legend()
>>> fig.show()
../../_images/scipy-stats-rv_histogram-1.png
屬性:
random_state

取得或設定用於產生隨機變數的產生器物件。

方法

__call__(*args, **kwds)

凍結給定引數的分布。

cdf(x, *args, **kwds)

給定 RV 的累積分布函數。

entropy(*args, **kwds)

RV 的微分熵。

expect([func, args, loc, scale, lb, ub, ...])

透過數值積分計算函數相對於分布的期望值。

fit(data, *args, **kwds)

從資料傳回形狀 (如果適用)、位置和比例參數的估計值。

fit_loc_scale(data, *args)

使用第 1 個和第 2 個動差從資料估計 loc 和 scale 參數。

freeze(*args, **kwds)

凍結給定引數的分布。

interval(confidence, *args, **kwds)

信賴區間,其在中間值周圍具有相等的面積。

isf(q, *args, **kwds)

給定 RV 在 q 的反向存活函數 ( sf 的反函數)。

logcdf(x, *args, **kwds)

給定 RV 在 x 的累積分布函數的對數。

logpdf(x, *args, **kwds)

給定 RV 在 x 的機率密度函數的對數。

logsf(x, *args, **kwds)

給定 RV 的存活函數的對數。

mean(*args, **kwds)

分布的平均值。

median(*args, **kwds)

分布的中間值。

moment(order, *args, **kwds)

指定階數的分布的非中心動差。

nnlf(theta, x)

負對數概似函數。

pdf(x, *args, **kwds)

給定 RV 在 x 的機率密度函數。

ppf(q, *args, **kwds)

給定 RV 在 q 的百分點函數 ( cdf 的反函數)。

rvs(*args, **kwds)

給定類型的隨機變數。

sf(x, *args, **kwds)

給定 RV 在 x 的存活函數 (1 - cdf)。

stats(*args, **kwds)

給定 RV 的一些統計量。

std(*args, **kwds)

分布的標準差。

support(*args, **kwargs)

分布的支持度。

var(*args, **kwds)

分布的變異數。