二項分布をまとめて計算
はじめに
複数の頻度と95%信頼区間を計算したい。普段、頻度とその95%信頼区間はbinom.test(a, b)を用いて計算しています。これに、データフレームのデータを流し込んで一気に、頻度 estimateと信頼区間の上限upperと下限lowerの値をベクトルとして得たい。
サンプルコード
bunsi <- c(1, 2, 3, 4) bunbo <- c(10, 15, 16, 20) df <- data.frame(bunsi, bunbo) result <- mapply( binom.test, df$bunsi, df$bunbo ) estimates <- unlist(result[5,]) # estimate, 頻度 conf_int <- matrix ( unlist(result[4,]) , byrow=F, nrow=2 ) # conf.int lower <- conf_int[1,] upper <- conf_int[2,]
解説
このRスクリプトは、4つの異なる二項分布に関する二項検定を行っています。 まず、ベクトル`bunsi`と`bunbo`が定義されており、それぞれ成功回数と試行回数を表しています。
次に、これらのベクトルを使用してデータフレーム`df`が作成されます。
`mapply`関数は、`binom.test`を用いて、`df`の各行について二項検定を行います。`binom.test`は、二項分布における成功の確率を推定し、その確率が指定した値(デフォルトでは0.5)から有意に異なるかどうかを検定します。
結果のリストから、`estimates`(推定値)と`conf_int`(信頼区間)が抽出されます。`estimates`は成功の確率の推定値を、`conf_int`はその95%信頼区間を表しています。
最後に、信頼区間の下限`lower`と上限`upper`が抽出されています。 したがって、このスクリプトは4つの二項分布の成功確率を推定し、その信頼区間を計算しています。