scipy.stats.vonmises#
- scipy.stats.vonmises = <scipy.stats._continuous_distns.vonmises_gen object>[原始碼]#
馮米氏連續隨機變數。
作為
rv_continuous
類別的實例,vonmises
物件繼承了其通用方法集合(完整列表請見下方),並以針對此特定分佈的詳細資訊完成它們。另請參閱
scipy.stats.vonmises_fisher
超球面上的 Von-Mises Fisher 分佈
筆記
對於
vonmises
和vonmises_line
的機率密度函數為\[f(x, \kappa) = \frac{ \exp(\kappa \cos(x)) }{ 2 \pi I_0(\kappa) }\]對於 \(-\pi \le x \le \pi\), \(\kappa \ge 0\)。 \(I_0\) 是零階修正貝索函數 (
scipy.special.i0
)。vonmises
是一種圓形分佈,它不將分佈限制在固定區間。目前,SciPy 中沒有圓形分佈框架。cdf
的實作方式使得cdf(x + 2*np.pi) == cdf(x) + 1
。vonmises_line
是相同的分佈,定義在實數線上的 \([-\pi, \pi]\) 上。這是一個規則的(即非圓形的)分佈。關於分佈參數的注意事項:
vonmises
和vonmises_line
接受kappa
作為形狀參數(集中度)和loc
作為位置(圓形平均值)。 接受scale
參數,但沒有任何作用。範例
匯入必要的模組。
>>> import numpy as np >>> import matplotlib.pyplot as plt >>> from scipy.stats import vonmises
定義分佈參數。
>>> loc = 0.5 * np.pi # circular mean >>> kappa = 1 # concentration
透過
pdf
方法計算x=0
的機率密度。>>> vonmises.pdf(0, loc=loc, kappa=kappa) 0.12570826359722018
驗證百分位數函數
ppf
反轉了累積分佈函數cdf
,達到浮點數精確度。>>> x = 1 >>> cdf_value = vonmises.cdf(x, loc=loc, kappa=kappa) >>> ppf_value = vonmises.ppf(cdf_value, loc=loc, kappa=kappa) >>> x, cdf_value, ppf_value (1, 0.31489339900904967, 1.0000000000000004)
透過呼叫
rvs
方法繪製 1000 個隨機變數。>>> sample_size = 1000 >>> sample = vonmises(loc=loc, kappa=kappa).rvs(sample_size)
在笛卡爾和極座標網格上繪製馮米氏密度,以強調它是一種圓形分佈。
>>> fig = plt.figure(figsize=(12, 6)) >>> left = plt.subplot(121) >>> right = plt.subplot(122, projection='polar') >>> x = np.linspace(-np.pi, np.pi, 500) >>> vonmises_pdf = vonmises.pdf(x, loc=loc, kappa=kappa) >>> ticks = [0, 0.15, 0.3]
左圖包含笛卡爾圖。
>>> left.plot(x, vonmises_pdf) >>> left.set_yticks(ticks) >>> number_of_bins = int(np.sqrt(sample_size)) >>> left.hist(sample, density=True, bins=number_of_bins) >>> left.set_title("Cartesian plot") >>> left.set_xlim(-np.pi, np.pi) >>> left.grid(True)
右圖包含極座標圖。
>>> right.plot(x, vonmises_pdf, label="PDF") >>> right.set_yticks(ticks) >>> right.hist(sample, density=True, bins=number_of_bins, ... label="Histogram") >>> right.set_title("Polar plot") >>> right.legend(bbox_to_anchor=(0.15, 1.06))
方法
rvs(kappa, loc=0, scale=1, size=1, random_state=None)
隨機變數。
pdf(x, kappa, loc=0, scale=1)
機率密度函數。
logpdf(x, kappa, loc=0, scale=1)
機率密度函數的對數。
cdf(x, kappa, loc=0, scale=1)
累積分佈函數。
logcdf(x, kappa, loc=0, scale=1)
累積分佈函數的對數。
sf(x, kappa, loc=0, scale=1)
生存函數(也定義為
1 - cdf
,但 sf 有時更準確)。logsf(x, kappa, loc=0, scale=1)
生存函數的對數。
ppf(q, kappa, loc=0, scale=1)
百分點函數(
cdf
的反函數 — 百分位數)。isf(q, kappa, loc=0, scale=1)
反生存函數(
sf
的反函數)。moment(order, kappa, loc=0, scale=1)
指定階數的非中心動差。
stats(kappa, loc=0, scale=1, moments=’mv’)
平均值 ('m')、變異數 ('v')、偏度 ('s') 和/或峰度 ('k')。
entropy(kappa, loc=0, scale=1)
RV 的(微分)熵。
fit(data)
通用資料的參數估計。 有關關鍵字引數的詳細文件,請參閱 scipy.stats.rv_continuous.fit。
expect(func, args=(kappa,), loc=0, scale=1, lb=None, ub=None, conditional=False, **kwds)
關於分佈的函數(單一引數)的期望值。
median(kappa, loc=0, scale=1)
分佈的中位數。
mean(kappa, loc=0, scale=1)
分佈的平均值。
var(kappa, loc=0, scale=1)
分佈的變異數。
std(kappa, loc=0, scale=1)
分佈的標準差。
interval(confidence, kappa, loc=0, scale=1)
具有圍繞中位數的相等區域的信賴區間。