2013-04-13 43 views
17

R,它是能夠進行雙樣本單尾t檢驗簡單地通過使用如何使用numpy的執行兩樣本單尾t檢驗/ SciPy的

> A = c(0.19826790, 1.36836629, 1.37950911, 1.46951540, 1.48197798, 0.07532846) 
> B = c(0.6383447, 0.5271385, 1.7721380, 1.7817880) 
> t.test(A, B, alternative="greater") 

    Welch Two Sample t-test 

data: A and B 
t = -0.4189, df = 6.409, p-value = 0.6555 
alternative hypothesis: true difference in means is greater than 0 
95 percent confidence interval: 
-1.029916  Inf 
sample estimates: 
mean of x mean of y 
0.9954942 1.1798523 

在Python世界, scipy提供了類似的功能ttest_ind,但它只能進行雙尾t檢驗。關於我發現的主題的最新信息是this鏈接,但它似乎相當於討論在scipy中實施單尾對雙尾的策略。

因此,我的問題是,有沒有人知道如何使用numpy/scipy執行單尾測試版本的任何示例或說明?

回答

44

從你的郵件列表的鏈接:

因爲片面的測試可以從雙面 測試備份出來。 (對稱分佈片面P值僅僅是雙面P值的一半 )

它接着說,SciPy的總是給人檢驗統計量作爲簽名。這意味着給定來自雙尾測試的p值和t值,當p/2 < alpha and t > 0時,您會拒絕大於測試的零假設,而在p/2 < alpha and t < 0時,您會拒絕該假設。

+0

可能相關:http://stats.stackexchange.com/q/31361/21790 –

+0

這裏也是一個相關的視頻:https://www.udacity.com/course/viewer#!/c-ud359/l -649959144/e-638170794/m-638170795 – MarsPlus

+0

我對't'這個表達式有些困惑。 H0:第一次大於第二次 'first = np.random.normal(3,2,400); second = np.random.normal(6,2,400); t,p = stats.ttest_ind(first,second,axis = 0,equal_var = True) t-stat = -23.0,p-value/2 = 1.33e-90 ' 因此,我有一個零假設大於測試但t <0,這意味着我不能拒絕零假設? – Tonja

1

當虛設假設爲Ho: P1>=P2且備選假設爲Ha: P1<P2。爲了用Python測試它,你寫了ttest_ind(P2,P1)。 (注意位置是第一個P2)。

first = np.random.normal(3,2,400) 
second = np.random.normal(6,2,400) 
stats.ttest_ind(first, second, axis=0, equal_var=True) 

你會得到像下面 Ttest_indResult(statistic=-20.442436213923845,pvalue=5.0999336686332285e-75)

在Python,statstic <0你真正的p值時,結果卻是real_pvalue = 1-output_pvalue/2= 1-5.0999336686332285e-75/2,這大約是0.99。由於你的p值大於0.05,你不能拒絕6> = 3的零假設。當statstic >0時,實際的z分值實際上等於-statstic,實際的p值等於pvalue/2。

Ivc的答案應該是當(1-p/2) < alpha and t < 0時,你可以拒絕低於假設。