t検定の死亡の報告は非常に誇張されていますか?


25

CVの昔からの古典を読んで、はっきりさせたいと思う声明に出くわしました。これが投稿であり、私の質問は最後の発言に言及しています。「私が伝えた知識はすべて時代遅れであることに注意する必要があります。おそらく、t検定を実行するように教えられた場所であればどこでもWilcoxonテストを使用したいでしょう。」

サンプル平均の分布がt検定を実行するのに十分に正常であると仮定するのが妥当かどうかについての心配がないことは、明らかに大きな利点です。そして、コンピューターは、2つのデータベクトル間の差の長いリストを簡単にランク付けできることを確認します。

それで、t検定は本当に過去のものですか?順列テストはどうですか?通常、数行のコードを書くという意味で、あまりにもアドホックですか?


3
順列テストをアドホックにするのは何ですか?フィッシャーは、それらの挙動が順列検定の挙動に近い範囲でt検定を適切であると見なしました(申し訳ありませんが、手元に正確な引用符がありません。より基本的な置換テスト。また、両側置換テストの難しさもわかりません。しかし、おそらく私はある種の答えに向かって迷っています。
Glen_b-モニカを

1
おそらく、等分散t検定に有利なのは、楽しませたいかなり単純なモデルのパラメーターの推定との関係です。
Scortchi-モニカの復職

回答:


22

古典的な1つのサンプル(ペアを含む)と2つのサンプルの等分散t検定は完全に時代遅れとは言いませんが、優れた特性を備えた多くの選択肢があり、多くの場合それらを使用する必要があります。

また、大きなサンプルでウィルコクソン-マン-ホイットニーのテストを迅速に実行する能力、または置換テストさえも最近ではなく、学生として30年以上前に定期的に両方を行っていましたが、そうする能力はありませんでしたその時点で長い間利用可能でした。

置換テストのコーディングは、一からでも-ゼロからでも非常に簡単ですが、

そのため、いくつかの選択肢と、それらが役立つ理由を以下に示します。

  1. ウェルチ・サタースウェイト自信がない場合、分散はほぼ等しくなります(サンプルサイズが同じ場合、等分散の仮定は重要ではありません)

  2. ウィルコクソン・マン・ホイットニー尾が正常であるか、通常より重い場合、特に対称に近い場合に優れています。テールが通常に近い傾向がある場合は、平均値の順列テストにより、わずかに多くのパワーが提供されます。

  3. 堅牢なt検定 -通常は良好なパワーを備えていますが、より重いテールや多少ゆがんだ代替品の下でもうまく機能します(そして良好なパワーを保持します)。

  4. GLMカウントまたは連続的な右スキューの場合(ガンマなど)に便利です。分散が平均に関連する状況に対処するように設計されています。

  5. ランダム効果または時系列モデルは、特定の形式の依存関係がある場合に役立ちます

  6. ベイジアンアプローチ、ブートストラップ、および上記のアイデアと同様の利点を提供できる他の多くの重要なテクニック。たとえば、ベイジアンアプローチでは、汚染プロセスを考慮に入れ、カウントまたは歪んだデータを処理し、特定の形式の依存関係を同時に処理できるモデルを同時に作成することができます。です。

多数の便利な代替手段が存在しますが、古いストック標準の等分散2サンプルt検定は、母集団が通常からそれほど遠くない限り(サイズが非常に大きいなど)、大きなサイズの同じサンプルでよく実行できます。 / skew)とほぼ独立しています。

代替は、単純なt検定に自信がないかもしれないが、t検定の仮定が満たされているか、満たされている場合に一般的にうまく機能する多くの状況で役立ちます。

分布が通常からあまり遠く離れない傾向がある場合、ウェルチは賢明なデフォルトです(サンプルが大きいほど余裕があります)。

順列検定は優れており、仮定が成り立つ場合のt検定と比較して電力の損失はありません(および関心のある量について直接推論することの有用な利点)が、ウィルコクソン-マン-ホイットニーは、おそらく尾が重い場合があります。少し追加の仮定を加えると、WWWは平均シフトに関連する結論を出すことができます。(置換テストよりもそれを好むかもしれない他の理由があります)

[発言数、待ち時間、または同様の種類のデータを処理していることがわかっている場合、GLMルートは賢明です。依存の潜在的な形態について少し知っていれば、それも容易に処理でき、依存の可能性を考慮する必要があります。

したがって、t検定は確かに過去のものではありませんが、適用される場合はほぼ常にほぼ同様に、またはほぼ同様に行うことができ、代替のいずれかを参加させることによって、潜在的に大きな利益を得ることができます。つまり、私はt検定に関するその投稿の感情に広く同意しています...多くの場合、おそらくデータを収集する前に仮定について考えるべきであり、それらのいずれかが本当に期待されない場合は保持するために、t検定では、通常、代替案が非常にうまく機能するため、単にその仮定を行わないことで失うものはほとんどありません。

データを収集するという大きな問題に直面している場合、推論にアプローチするための最善の方法を真剣に検討することに少し時間を費やさない理由はありません。

私は一般的に仮定の明示的なテストに対して助言することに注意してください-それは間違った質問に答えるだけでなく、そうすることで、仮定の拒否または非拒否に基づいて分析を選択すると、テストの両方の選択肢の特性に影響を与えます; 合理的に安全に仮定を立てることができない場合(プロセスを十分に知っているか、それを仮定できるか、または状況に応じて手順が敏感ではないため)、一般的に言えば、手順を使用する方が良いそれは想定していません。


# set up some data
x <- c(53.4, 59.0, 40.4, 51.9, 43.8, 43.0, 57.6)
y <- c(49.1, 57.9, 74.8, 46.8, 48.8, 43.7)
xyv <- stack(list(x=x,y=y))$values
nx  <- length(x)

# do sample-x mean for all combinations for permutation test
permmean = combn(xyv,nx,mean)

# do the equivalent resampling for a randomization test
randmean <- replicate(100000,mean(sample(xyv,nx)))

# find p-value for permutation test
left  = mean(permmean<=mean(x))
# for the other tail, "at least as extreme" being as far above as the sample
# was below
right = mean(permmean>=(mean(xyv)*2-mean(x)))
pvalue_perm = left+right
"Permutation test p-value"; pvalue_perm

# this is easier: 
#      pvalue = mean(abs(permmean-mean(xyv))>=abs(mean(x)-mean(xyv))) 
# but I'd keep left and right above for adapting to other tests

# find p-value for randomization test
left  = mean(randmean<=mean(x))
right = mean(randmean>=(mean(xyv)*2-mean(x)))
pvalue_rand = left+right
"Randomization test p-value"; pvalue_rand

(結果のp値はそれぞれ0.538と0.539です。対応する通常の2つのサンプルt検定のp値は0.504で、Welch-Satterthwaite t検定のp値は0.522です。)

計算のコードは、順列検定の組み合わせに対してそれぞれ1行であり、p値も1行で実行できることに注意してください。

これを、順列検定またはランダム化検定を実行し、t検定のような出力を生成する関数に適合させることは簡単なことです。

結果の表示は次のとおりです。

ここに画像の説明を入力してください

# Draw a display to show distn & p-vale region for both 
opar <- par()
par(mfrow=c(2,1))
hist(permmean, n=100, xlim=c(45,58))
abline(v=mean(x), col=3)
abline(v=mean(xyv)*2-mean(x), col=3, lty=2)
abline(v=mean(xyv), col=4)
hist(randmean, n=100, xlim=c(45,58))
abline(v=mean(x), col=3)
abline(v=mean(xyv)*2-mean(x), col=3, lty=2)
abline(v=mean(xyv), col=4)

par(opar)

コードの最初のブロックの16行には、小さなタイプミスがあります。#pvalue = mean(abs(permmean-mean(xyv))> = abs(mean(x)-mean(xyv)))と読みます。また、右=平均(permmean> = 2 * mean(xyv)-平均(x))として右尾がテストされるのはなぜですか?
アントニ・パレラダ

良い答え(+1)ですが、t検定のみに言及している場合を除き、通常、仮定を行わないことで失うものはほとんどないという声明には同意しません。それが一般的な声明であるかどうかは少し不明瞭です。より複雑なモデルと限られたサンプルサイズの場合、仮定はしばしば重要です。
エリック

1
@Erikそれは一般的なステートメントとして意図されていませんでした。私は明確にしましょう
Glen_b -Reinstateモニカ

1
tt

2
@Stephanには非常に多くの他の考慮事項があり(少なくとも重回帰を見ると、広く使われている選択肢の幾分削減されたセット)、その場合に答えるのは長く、いくつかの実質的な違いがあります。
Glen_b-モニカの復職
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.