4

我正在尝试引导 95% 的 CI 和测量平均值,以检查治疗的效果大小。我想使用的方法称为 LnRR 或对数响应比(123)。它是简单地计算出来的Log(Response to treatment / Response to control)。如果 95% 的 CI 不与 0 重叠,则有超过 95% 的概率自然产生效果。负 LnRR 意味着治疗有负面影响。

引导包中的引导功能有点令人困惑,我正在努力计算 95% 的 CI 和平均值。我试过以下:

library(boot)
set.seed(2)
dat <- data.frame(treatment = rnorm(10, 1.2, 0.4), control = rnorm(10, 1.5, 0.3))

boot(dat, function(x) log(x[,1]/x[,2]), R = 999) # Because LnRR = log(dat[,1]/dat[,2])

我显然做错了什么。如何为此类函数引导置信区间 (boot.ci)?我确信答案就在这里,但由于某种原因,我就是不明白该怎么做。

4

1 回答 1

7

我同意boot起初的语法有点混乱。问题是您需要编写一个函数来获取您的数据和一个包含子样本索引的向量 i。让我们明确地重写您的函数以使其更清晰:

yourFun <- function(x, i) {
  xSub <- x[i, ] #resample x
  LnRR <- log(xSub[, 1])/xSub[ ,2]
  return(mean(LnRR))
}

然后以或多或少与您相同的方式调用 boot:

b <- boot(dat, yourFun, R=999)
plot(b) #always worth looking at

#Calculate ci's
boot.ci(b)
于 2012-10-24T16:31:14.323 回答