numpy.random.RandomState.standard_t#

方法

random.RandomState.standard_t(df, size=None)#

從自由度為 df 的標準學生 t 分佈中抽取樣本。

雙曲分佈的特例。當 df 變大時,結果會類似於標準常態分佈(standard_normal)。

注意

新程式碼應使用 standard_t 方法,此方法屬於 Generator 實例;請參閱快速入門

參數:
dffloat 或 floats 的 array_like

自由度,必須 > 0。

sizeint 或 ints 元組,選用

輸出形狀。如果給定的形狀是例如 (m, n, k),則會抽取 m * n * k 個樣本。如果 size 為 None(預設),則如果 df 是純量,則會傳回單一值。否則,會抽取 np.array(df).size 個樣本。

傳回:
outndarray 或 純量

從參數化的標準學生 t 分佈中抽取的樣本。

另請參閱

random.Generator.standard_t

新程式碼應使用此方法。

註解

t 分佈的機率密度函數為

\[P(x, df) = \frac{\Gamma(\frac{df+1}{2})}{\sqrt{\pi df} \Gamma(\frac{df}{2})}\Bigl( 1+\frac{x^2}{df} \Bigr)^{-(df+1)/2}\]

t 檢定基於資料來自常態分佈的假設。t 檢定提供了一種方法來檢定樣本平均值(即從資料計算的平均值)是否是對真實平均值的良好估計。

t 分佈的推導最初由 William Gosset 於 1908 年在都柏林的健力士啤酒廠工作時發表。由於專有問題,他不得不使用筆名發表,因此他使用了 Student 這個名字。

參考文獻

[1]

Dalgaard, Peter, “Introductory Statistics With R”, Springer, 2002。

[2]

Wikipedia, “Student’s t-distribution” https://en.wikipedia.org/wiki/Student’s_t-distribution

範例

從 Dalgaard 第 83 頁 [1],假設 11 位女性的每日能量攝取量(千焦耳 (kJ))為

>>> intake = np.array([5260., 5470, 5640, 6180, 6390, 6515, 6805, 7515, \
...                    7515, 8230, 8770])

她們的能量攝取量是否系統性地偏離了 7725 kJ 的建議值?我們的虛無假設將是不存在偏差,而對立假設將是存在效應,可能是正向或負向,因此使我們的檢定成為雙尾檢定。

因為我們正在估計平均值,而且我們的樣本中有 N=11 個值,所以我們的自由度為 N-1=10。我們將顯著性水準設定為 95%,並使用我們的攝取量的經驗平均值和經驗標準差來計算 t 統計量。我們使用 ddof 為 1,以根據變異數的無偏估計來計算我們的經驗標準差(注意:由於平方根的凹性,最終估計不是無偏的)。

>>> np.mean(intake)
6753.636363636364
>>> intake.std(ddof=1)
1142.1232221373727
>>> t = (np.mean(intake)-7725)/(intake.std(ddof=1)/np.sqrt(len(intake)))
>>> t
-2.8207540608310198

我們從自由度足夠的學生 t 分佈中抽取 1000000 個樣本。

>>> import matplotlib.pyplot as plt
>>> s = np.random.standard_t(10, size=1000000)
>>> h = plt.hist(s, bins=100, density=True)

我們的 t 統計量是否落在分佈的兩個尾部發現的兩個臨界區域之一?

>>> np.sum(np.abs(t) < np.abs(s)) / float(len(s))
0.018318  #random < 0.05, statistic is in critical region

此雙尾檢定的機率值約為 1.83%,低於預先確定的 5% 顯著性閾值。

因此,在虛無假設為真的條件下,觀察到像我們的攝取量一樣極端的值的機率太低,我們拒絕無偏差的虛無假設。

../../../_images/numpy-random-RandomState-standard_t-1.png