統計ER

R, EZR, SPSS, KH Coder を使ったデータ分析方法を紹介するブログ。ニッチな内容が多め

EZR の 2群の比率の差の信頼区間 小数点以下の桁を増やす方法

EZRで2群の比率の差の信頼区間を求めると小数点以下3桁に丸められた数値が出力される。

小数点以下の桁数を増やす方法。

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

EZRで2群の比率の差の信頼区間を求める

「統計解析」→「名義変数の解析」→「2群の比率の差の信頼区間の計算」メニューを使って、計算する。

「統計解析」→「名義変数の解析」→「2群の比率の差の信頼区間の計算」

例えば、47000分の460と39000分の200の差の95%信頼区間を計算すると、Rスクリプト窓に以下のように書かれて、出力窓に結果が表示される。

Rスクリプト

#####2群の比率の差の信頼区間の計算#####
prop.diff.conf(460, 47000, 200, 39000, 95)

出力

> prop.diff.conf(460, 47000, 200, 39000, 95)
[1] 比率の差     : 0.005
[1] 95% 信頼区間              : 0.004 - 0.006

EZRで2群の比率の差の信頼区間を計算するスクリプトを確認して一部変更する

Rスクリプト窓に、prop.diff.conf と書いて、実行し、prop.diff.conf関数の中身を表示させる。

prop.diff.conf()関数の中身は以下の通り。

> prop.diff.conf
function (r1, n1, r2, n2, conf) 
{
    alpha <- 1 - conf/100
    p1 <- r1/n1
    p2 <- r2/n2
    D <- p1 - p2
    SE <- sqrt(p1 * (1 - p1)/n1 + p2 * (1 - p2)/n2)
    pl <- D - qnorm(1 - alpha/2) * SE
    pu <- D + qnorm(1 - alpha/2) * SE
    print(paste(gettext(domain = "R-RcmdrPlugin.EZR", "Difference :"), 
        " ", round(D, 3), sep = ""), quote = F)
    print(paste(conf, gettext(domain = "R-RcmdrPlugin.EZR", "% confidence interval :"), 
        " ", round(pl, 3), " - ", round(pu, 3), sep = ""), quote = F)
}

round(, 3)とあるところ3か所を、例えばround(,8)として、小数点以下8桁まで表示させるように変更する。

function (r1, n1, r2, n2, conf) 
{
    alpha <- 1 - conf/100
    p1 <- r1/n1
    p2 <- r2/n2
    D <- p1 - p2
    SE <- sqrt(p1 * (1 - p1)/n1 + p2 * (1 - p2)/n2)
    pl <- D - qnorm(1 - alpha/2) * SE
    pu <- D + qnorm(1 - alpha/2) * SE
    print(paste(gettext(domain = "R-RcmdrPlugin.EZR", "Difference :"), 
        " ", round(D, 8), sep = ""), quote = F)
    print(paste(conf, gettext(domain = "R-RcmdrPlugin.EZR", "% confidence interval :"), 
        " ", round(pl, 8), " - ", round(pu, 8), sep = ""), quote = F)
}

>>もう統計で悩むのを終わりにしませんか?


↑1万人以上の医療従事者が購読中

EZRで2群の比率の差の信頼区間を計算する修正スクリプトを実行する

新しい関数名、例えば prop.diff.conf.rev という名前の関数に上記の内容を格納するというスクリプトをRスクリプト窓に貼り付けて実行する。

prop.diff.conf.rev <- 
function (r1, n1, r2, n2, conf) 
{
    alpha <- 1 - conf/100
    p1 <- r1/n1
    p2 <- r2/n2
    D <- p1 - p2
    SE <- sqrt(p1 * (1 - p1)/n1 + p2 * (1 - p2)/n2)
    pl <- D - qnorm(1 - alpha/2) * SE
    pu <- D + qnorm(1 - alpha/2) * SE
    print(paste(gettext(domain = "R-RcmdrPlugin.EZR", "Difference :"), 
        " ", round(D, 8), sep = ""), quote = F)
    print(paste(conf, gettext(domain = "R-RcmdrPlugin.EZR", "% confidence interval :"), 
        " ", round(pl, 8), " - ", round(pu, 8), sep = ""), quote = F)
}

新しい関数 prop.diff.conf.rev() を使って、先ほどと同じ計算をしてみる。

Rスクリプト窓に、prop.diff.conf.rev(460, 47000, 200, 39000, 95) と書いて、実行をクリックする。

すると以下のように結果が表示される。小数点以下8桁まで表示されている。

> prop.diff.conf.rev(460, 47000, 200, 39000, 95)
[1] 比率の差     : 0.00465903
[1] 95% 信頼区間              : 0.0035212 - 0.00579685

まとめ

EZRで2群の比率の差の信頼区間を計算する場合、結果の値の小数点以下の桁数を変更するには、メニューやダイアログボックスからは変更できないが、Rスクリプトを少し修正すると可能である。

おすすめ書籍

EZR公式マニュアル