2

3,000 人の研究者によって取得された 50,000 の測定値のデータ フレームがあります。

INVESTIGATOR_ID \\\ SAMPLE_ID \\\ 測定
1000 \\\ 38942 \\\ 20.1
1000 \\\ 38942 \\\ 10.2
1001 \\\ 38432 \\\ 5.6
1002 \\\ 553 \\\ 10.6
...

私の目標は、研究者ごとのサンプル測定値をデータ セット全体からの測定値と比較することです。

  1. 各研究者について、その研究者によって収集された測定平均値から +/- 1 つの標準偏差である測定値を数えます。
  2. データ フレーム全体について、平均値から +/- 1 標準偏差である測定値をカウントします。
  3. サンプル測定値 +/- 平均値から 1 つの標準偏差を持つ調査員ごとに、フィッシャーの正確確率検定を実行して、サンプル数が有意であるかどうかを判断します (データ フレーム全体と比較して)。

ddplyによってデータを要約するために、Plyr ライブラリ ( ) を使用しましたINVESTIGATOR_ID。データを結合すると、最終結果はデー​​タ フレームであり、各行は調査者 ID、その調査者によって測定されたサンプル数、その調査者によって測定されたサンプル数 +/- 1 SD、15000、および 50000 (ここで 15000および 50000 は、対応するサンプル数 +/- 1 SD およびデータ フレーム全体のサンプルの総数です)。

INVESTIGATOR_ID \\\ NUMBER_OF_SAMPLES \\\ NUMBER_OF_SAMPLES_SD \\\ 15000 \\\ 50000

データ フレームの各行を取得し、フィールドc(2:5)をマトリックスに変換し、フィッシャーの検定を実行し、結果の新しいデータ フレームを作成するにはどうすればよいですか?

提案をありがとう。

4

1 に答える 1

4

そのようなもの(私のスクリプトから適応されたもので、ニーズに合わせてさらに変更が必要になる場合があります):

get_fisher <- function(df){
  mat <- matrix(as.numeric(df[c(2:5)]), ncol=2)
  f <- fisher.test(as.table(mat), alt="two.sided")
  return(c(df[1], f$p.value))
}

fishers <- apply(df, 1,  get_fisher)
于 2013-02-20T15:59:52.000 に答える