オッズ比     Last modified: Jan 07, 2007

目的

オッズ比とその信頼限界を求める。
R では,fisher.test 関数で,オッズ比(超幾何分布による最尤推定値)と 95% 信頼限界を求めることができる。
また,vcd ライブラリーにも oddsratio 関数が用意されている(各セルの数値に必ず 0.5 が加えられる。log=FALSE 引数をつけ,summary 関数を適用すること)。

使用法

odds.ratio(a, b, c, d, correct=FALSE)

引数

所見(結果)あり 所見(結果)なし
対象群(要因あり) a b
対照群(要因なし) c d
correct 各セルに 0.5 を加える(a, b, c, d のどれかが 0 のときには自動的に 0.5 を加える) ソース インストールは,以下の 1 行をコピーし,R コンソールにペーストする source("http://aoki2.si.gunma-u.ac.jp/R/src/odds_ratio.R", encoding="euc-jp") # オッズ比を計算する odds.ratio <- function( a, b, c, d, # 4 つのセルの観察値 correct=FALSE) # 補正をするとき TRUE にする { cl <- function(x) { or*exp(c(1, -1)*qnorm(x)*sqrt(1/a+1/b+1/c+1/d)) } if (correct || a*b*c*d == 0) { # a,b,c,d のいずれかが 0 のときには必ず補正する a <- a+0.5 b <- b+0.5 c <- c+0.5 d <- d+0.5 } or <- a*d/(b*c) conf <- rbind(cl90=cl(0.05), cl95=cl(0.025), cl99=cl(0.005), cl999=cl(0.0005)) conf <- data.frame(conf) colnames(conf) <- paste(c("下側","上側"), "信頼限界値", sep="") rownames(conf) <- paste(c(90, 95, 99, 99.9), "%信頼区間", sep="") list(or=or, conf=conf) } 使用例 > odds.ratio(3, 5, 6, 8) $or # オッズ比 [1] 0.8 $conf 下側信頼限界値 上側信頼限界値 90%信頼区間 0.17957613 3.563948 95%信頼区間 0.13488007 4.744956 99%信頼区間 0.07709193 8.301777 99.9%信頼区間 0.04027949 15.888980 > odds.ratio(3, 5, 6, 8, correct=TRUE) # 0.5 を加える $or [1] 0.8321678 $conf 下側信頼限界値 上側信頼限界値 90%信頼区間 0.20235212 3.422269 95%信頼区間 0.15433409 4.487040 99%信頼区間 0.09089284 7.618899 99.9%信頼区間 0.04916982 14.083909 # 2×2 分割表を以下のように定義する > x <- matrix(c(3, 5, 6, 8), byrow=TRUE, nc=2) > x [,1] [,2] [1,] 3 5 [2,] 6 8 # 作りつけの関数 fisher.test による推定 > fisher.test(x) Fisher's Exact Test for Count Data data: x p-value = 1 alternative hypothesis: true odds ratio is not equal to 1 95 percent confidence interval: 0.08839317 6.37801297 # かなり広い信頼区間になる sample estimates: odds ratio 0.8081216 # 作りつけの関数 oddsratio による推定 > library(vcd) # vcd ライブラリーを使うために必須 > oddsratio(x, log=FALSE) [1] 0.8


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI

Made with Macintosh