カテゴリ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
- })
- mean(p_vals < alpha) # Estimated power
- }
コメント
コメントを投稿