numpy.random.standard_t#
- random.standard_t(df, size=None)#
從自由度為 df 的標準 Student’s t 分佈中抽取樣本。
雙曲分佈的特例。當 df 變大時,結果會類似於標準常態分佈 (
standard_normal
)。注意
新程式碼應使用
standard_t
方法,此方法屬於Generator
實例;請參閱 快速入門。- 參數:
- dffloat 或 float 的類陣列 (array_like)
自由度,必須 > 0。
- sizeint 或 int 元組,選用
輸出形狀。如果給定的形狀是,例如
(m, n, k)
,則會抽取m * n * k
個樣本。如果 size 為None
(預設值),則如果df
是純量,則會傳回單一值。否則,會抽取np.array(df).size
個樣本。
- 傳回值:
- outndarray 或 純量
從參數化的標準 Student’s 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 分佈的推導最早於 1908 年由 William Gosset 在都柏林的 Guinness Brewery 工作時發表。由於專有問題,他必須以筆名發表,因此他使用了 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
我們從具有適當自由度的 Student’s 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% 顯著性閾值。
因此,在虛無假設為真的條件下,觀察到與我們的攝取量一樣極端的值的機率太低,我們拒絕無偏差的虛無假設。