p値を計算するこれらの2つの方法は同等である必要があります。
t.test(rats.drug,mu=1.2)$p.value
2*pt((mean(rats.drug)-1.2)*sqrt(n)/sd(rats.drug),df=n-1)
2番目の方法の問題は、より大きい値(実際には)を取得するリスクがあることです。2
2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1)
[1] 2
これはもちろん修正できます
2*pt((1.5-1.2)*sqrt(100)/.5,df=100-1,lower=F)
[1] 3.245916e-08
私の質問
明らかに、t検定関数のアルゴリズムは、これらの2つのケースを区別するのに十分にインテリジェントです(サンプルの平均が与えられた平均より大きいか小さいか)。t検定関数によって行われる、p値の計算を手動で複製する簡単な方法はありますか?
現在の私の解決策は、結果の値がより大きいかどうかをチェックするifステートメントであり、この場合、lower = Fオプションを使用して同じ計算を再度実行しますが、おそらくより良い方法があります。
getAnywhere(t.test.default)
。あなたは見つけることができますpval <- 2 * pt(-abs(tstat), df)
が。