投稿

10月, 2026の投稿を表示しています

カテゴリ3つ以上の変数を含むフィッシャーの正確な確率の検出力について

自分が指導しているのではない院生から表題の計算をしてくれるツールがないか尋ねられた。 Rのfisher.test()では2x2に限らずカテゴリ3つ以上の変数が含まれていても独立性の確率を計算してくれるが、パッケージを探してもサンプルサイズと効果量と有意水準を与えて検出力を計算してくれる関数は見つからなかった。 2x2の場合ならEZRでもG*Powerでもjamoviのモジュールでもできるのだが、2x3以上についてはシミュレーションプログラムを書くしかなさそうだった。 Googleで"power.fisher.test multiple categories"と検索してみたら、AIによる回答が以下のコードを提案してきたが、これは正しいのだろうか? 効果量を与えるのではなく、各セルの期待確率を与える必要があるようだが。とりあえず後で考えるためメモだけしておく。 # Define a function to simulate power for an r x c table sim_power_fisher rc <- function (matrix_p, n_total, alpha = 0.05 , nsim = 1000 ) {    # matrix_p is a matrix of expected cell probabilities    p_vals <- replicate(nsim, {     # Generate multinomial counts     sim_data <- rmultinom( 1 , size = n_total, prob = matrix_p)   dim(sim_data) <- dim(matrix_p)    # Run Fisher's exact test (uses hybrid or Monte Carlo for > 2x2)     res <- fisher.test(sim_data, simulate.p.value = TRUE , B = 2000 )   res$p.value  }) ...