在R
中,只需使用
> 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
执行测试的单尾版本的示例或说明?
从您的邮件列表链接:
接着说,scipy总是给出有符号的测试统计数据。这意味着给定来自双尾检验的p和t值,您将拒绝当
p/2 < alpha and t > 0
时大于检验和当p/2 < alpha and t < 0
时小于检验的空假设。在试图将一些见解作为评论添加到已接受的答案中,但由于对评论的一般限制,无法正确地将其写下来之后,我决定将我的两分钱作为完整答案。
首先,让我们适当地提出我们的调查问题。我们正在调查的数据是
用样本法
我假设,因为B的平均值明显大于A的平均值,所以您需要检查这个结果是否具有统计学意义。
所以我们有一个无效的假设
为了支持另一种假设,我们想拒绝
现在,当您调用
scipy.stats.ttest_ind(x, y)
时,这将对x.mean()-y.mean()
的值进行假设测试,这意味着为了在整个计算过程中获得正值(这简化了所有考虑事项),我们必须调用而不是
stats.ttest_ind(B,A)
。我们得到的答案是t-value = 0.42210654140239207
p-value = 0.68406235191764142
因为根据documentation这是双尾t-检验的输出,所以对于单尾检验,我们必须将
p
除以2。所以取决于你所选择的重要程度为了拒绝无效假设
H0
。对于alpha=0.05
来说,情况显然不是这样,因此您不能拒绝H0
。另一种不用对
t
或p
做任何代数就可以决定是否拒绝H0
的方法是查看t值,并将其与适用于您的问题的自由度df
的期望置信度(例如95%)下的临界t值t_crit
进行比较。因为我们已经我们从一个类似this one的统计表中得到
我们显然有
所以我们又得到了同样的结果,即我们不能拒绝
H0
。当零假设是
Ho: P1>=P2
而替代假设是Ha: P1<P2
时。为了在Python中测试它,您可以编写ttest_ind(P2,P1)
。(注意位置是P2优先)。你会得到如下结果
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值等于p value/2。Ivc的答案应该是当
(1-p/2) < alpha and t < 0
时,可以拒绝小于假设。相关问题 更多 >
编程相关推荐