R
では、次を使用するだけで2サンプルの片側t検定を実行できます。
> 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 world、scipy
は同様の関数 ttest_ind を提供しますが、両側t検定のみを実行できます。私が見つけたトピックに関する最も近い情報 this linkですが、scipy
で片側対両側を実装するポリシーの議論のようです。
したがって、私の質問は、numpy/scipy
を使用して片側バージョンのテストを実行する方法に関する例や指示を誰もが知っているということです。
メーリングリストのリンクから:
片側テストは両側テストからバックアウトできるためです。 (対称分布では、片側p値は両側p値のちょうど半分です)
さらに、scipyは常に符号付きの検定統計量を提供すると言います。これは、両側検定のp値とt値が与えられた場合、p/2 < alpha and t > 0
、およびp/2 < alpha and t < 0
。
受け入れられた回答にコメントとしていくつかの洞察を追加しようとしたが、コメントの一般的な制限のためにそれらを適切に書き留めることができなかったので、完全な回答として2セントを入れることにしました。
まず、調査問題を適切に定式化しましょう。調査中のデータは
_A = np.array([0.19826790, 1.36836629, 1.37950911, 1.46951540, 1.48197798, 0.07532846])
B = np.array([0.6383447, 0.5271385, 1.7721380, 1.7817880])
_
サンプル手段で
_A.mean() = 0.99549419
B.mean() = 1.1798523
_
Bの平均は明らかにAの平均よりも大きいため、この結果が統計的に有意であるかどうかを確認したいと思います。
帰無仮説があります
_H0: A >= B
_
対立仮説を支持して拒否したい
_H1: B > A
_
scipy.stats.ttest_ind(x, y)
を呼び出すと、これはx.mean()-y.mean()
の値に対して仮説検定を行います。つまり、計算全体で正の値を取得するために(すべての考慮事項を単純化します)コール
_stats.ttest_ind(B,A)
_
stats.ttest_ind(B,A)
の代わりに。私たちは答えとして得ます
t-value = 0.42210654140239207
_p-value = 0.68406235191764142
_documentation に従って、これは両側t検定の出力であるため、片側検定ではp
を2で除算する必要があります。したがって、選択した重要度レベルalpha
に応じて、
_p/2 < alpha
_
帰無仮説_H0
_を拒否するため。 _alpha=0.05
_の場合は明らかにそうではないため、拒否することはできません_H0
_。
t
またはp
で代数を行わずに_H0
_を拒否するかどうかを決定する別の方法は、t値を見て、それをクリティカルt値と比較することです。 _t_crit
_は、問題に適用される自由度df
の望ましい信頼レベル(例:95%)で。私たちが持っているので
_df = sample_size_1 + sample_size_2 - 2 = 8
_
this one thatのような統計テーブルから取得します
_t_crit(df=8, confidence_level=95%) = 1.860
_
私たちは明らかに持っています
_t < t_crit
_
したがって、同じ結果、つまりを拒否することはできません_H0
_。
帰無仮説が_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
_の場合である必要があります。これは、小なり仮説を拒否できます。
これを見ましたか? numpyで統計 "t-test"を計算する方法
それがまさにこの質問が見ているものだと思います。
基本的に:
import scipy.stats
x = [1,2,3,4]
scipy.stats.ttest_1samp(x, 0)
Ttest_1sampResult(statistic=3.872983346207417, pvalue=0.030466291662170977)
rのこの例と同じ結果です。 https://stats.stackexchange.com/questions/51242/statistical-difference-from-zero