単一のサンプルを平均と比較する順列検定


10

人々が単一のサンプルを平均と比較するために順列テストを実装する場合(たとえば、順列t検定で行うように)、平均はどのように処理されますか?順列テストの平均とサンプルを取る実装を見てきましたが、それらが実際に内部で何をしているのかは不明です。仮定された平均に対して1つのサンプルの順列検定(たとえば、t検定)を行う意味のある方法さえありますか?または、代わりに、それらはデフォルトで非置換テストにデフォルトで設定されていますか?(たとえば、順列関数を呼び出すか、順列テストフラグを設定しても、デフォルトで標準のt検定または同様の関数に設定されます)

標準の2サンプル順列検定では、2つのグループがあり、ラベルの割り当てをランダム化します。しかし、1つの「グループ」が想定されている場合、これはどのように処理されますか?当然のことながら、仮定された平均自体にはサンプルサイズがありません。それでは、平均を順列形式に変換する典型的な方法は何ですか?「平均」サンプルは単一点と見なされますか?サンプルグループと同じサイズのサンプルですか?無限サイズのサンプル?

仮定された平均が仮定されていることを考えると、それは技術的には無限のサポート、または仮定したいサポートが技術的にあると言えます。ただし、どちらも実際の計算にはあまり役立ちません。値がすべて平均に等しい、同じサイズのサンプルは、いくつかのテストで時々行われるもののようです(たとえば、ペアの残りの半分に想定される位置を入力するだけです)。これは、仮定された平均が分散なしで正しかったかどうかを確認できる長さの等しいサンプルであるため、少し意味があります。

だから私の質問はこれです:実際には、2番目のセットが平均(または同様の抽象的な仮定値)である場合、人々は実際に置換テストスタイルのラベルのランダム化をエミュレートしますか?もしそうなら、人々はこれを行うときにラベルのランダム化をどのように処理しますか?


6
特定の仮説平均の順列検定は、データからその仮説平均を差し引き、ゼロの平均に対して検定することと同じです。ここでは、対応のあるテストについて説明します。これは、ヌルの下ではペアが同じ分布を持っていると仮定します。これは、後続の1サンプル検定の基準となる差異が対称であると見なされることを意味します。これに基づいて、兆候はそれぞれの違いでランダムに反転されます...(ctd)
Glen_b -Reinstate Monica

1
(ctd)...(対応のあるテストの場合、グループラベルを反転することと同じです)。これはランダム化テストの場合です。完全な置換テストの場合、可能なすべての符号反転の組み合わせを実行します。対称性を想定できない場合、何を置換するかを確認するのは少し難しいですが、ブートストラップテストを実行できるはずです。2n
Glen_b-モニカを復活させる

それは理にかなっている。しかし、私は人々が行う計算の実装から少し考えています。あなたがそれをサインテストに変換することができるならば、人々は実際に順列を計算することを気にしますか?長さNのシーケンスの場合、符号反転の順列の完全なセットは同じになりますか?だから私は、内部では、二項分布を乱す置換を手動で生成するのではなく、二項検定にそれを注ぎ込むだけかもしれないと思います。単一サンプルと平均のケースで標準のテストを使用するのではなく、ラベルを付け替えたり並べ替えたりすることでメリットがあるかどうか、私は主に疑問に思っています。
2013

私はそれをサインテストに変換することを全く提案していませんでした。スキームの下で、私はサインが置換されていることを解き明かしていましたが、元のデータの絶対値は保持されています。置換されたはここで、はまたはいずれかです。つまり、が平均ゼロに対する1つの標本検定で11.43だった場合、置換されたはすべて-11.43または+11.43になります。絶対データを最初にランク付けした場合、実際にはウィルコクソンの符号付きランク検定が行われるため、ランク付けされていない(元のデータ)バージョンのようになります。x i s [ k ] i | x i | s + 1 1 x 10 x 10kthxisi[k]|xi|s+11x10x10
Glen_b-モニカを復活させる

回答:


6

Glen_bのコメントを回答に拡張する

ゼロ平均の帰無仮説に対する、サンプルの平均の近似1サンプル順列検定は、サンプルのデータにランダムな符号を割り当てることによって実装されます。ゼロ以外の帰無仮説は、データから目的の帰無平均を差し引くことによってテストできます。

これはonetPermutation、パッケージのR関数のソースで簡単に確認できますDAAG。以下は、関連するコードの抜粋であり、私が追加したコメントが含まれています。

function (x, nsim) {

  ## Initialize and pre-allocate

  n <- length(x)
  dbar <- mean(x)
  absx <- abs(x)  # there's actually a bug in the code; below you'll see that the function ends up re-computing abs(x) instead of using this
  z <- array(, nsim)


  ## Run the simulation    

  for (i in 1:nsim) {                             # Do nsim times:
      mn <- sample(c(-1, 1), n, replace = TRUE)   #  1. take n random draws from {-1, 1}, where n is the length of the data to be tested
      xbardash <- mean(mn * abs(x))               #  2. assign the signs to the data and put them in a temporary variable
      z[i] <- xbardash                            #  3. save the new data in an array
  }


  ## Return the p value
  # p = the fraction of fake data that is:
  #      larger than |sample mean of x|, or
  #    smaller than -|sample mean of x|

  (sum(z >= abs(dbar)) + sum(z <= -abs(dbar)))/nsim
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.