【问题标题】:Confidence interval for proportion differences in RR 中比例差异的置信区间
【发布时间】:2016-01-29 12:38:29
【问题描述】:

我正在为以下内容寻找一种快速方法(无需创建太多新数据框):

假设我有两个变量:data$occupation(行,从上到下,“1”到“4”)和data$disease(列,从左到右,“是”和“否”)以下数据:

mat1<-matrix(c(54,23,28,45,16,10,17,13), 4,2)

我想最终得到一个表格,其中包含不同“职业”类别中“是”的比例、职业之间比例的百分比差异以及该差异的置信区间:

使用prop.test(table(data$occupation, data$disease), correct=FALSE),我得到了不同的比例,但现在我想找到一个突击队,它给出了与相关 CI 的比例(我可以参考我可以输入)之间的差异。

twoby2()(给出 OR 和 RR)这样的东西会很好。

【问题讨论】:

  • 你不能简单地引导吗?或者,您是否可以不拟合多项式 logit,并获得系数线性组合的置信区间?

标签: r confidence-interval


【解决方案1】:

我是统计新手,但是对于this posting,我会这样尝试

tab <- table(data$occupation, data$disease)
combinations <- t(combn(nrow(tab), 2))
cbind(combinations, t(apply(combinations, 1, function(rows) {
  re <- prop.test(x=tab[rows, 1], n=rep(nrow(data), 2), correct=F)
  re$estimate <- unname(re$estimate)
  return(c(
    propY1 = re$estimate[1], 
    propY2 = re$estimate[2],
    diff = re$estimate[1]-re$estimate[2], 
    l = re$conf.int[1],
    u = re$conf.int[2]
  ))
})))
#             propY1    propY2        diff           l           u
# [1,] 1 2 0.2621359 0.1116505  0.15048544  0.07661756  0.22435331
# [2,] 1 3 0.2621359 0.1359223  0.12621359  0.05007540  0.20235179
# [3,] 1 4 0.2621359 0.2184466  0.04368932 -0.03871570  0.12609434
# [4,] 2 3 0.1116505 0.1359223 -0.02427184 -0.08783067  0.03928698
# [5,] 2 4 0.1116505 0.2184466 -0.10679612 -0.17774178 -0.03585045
# [6,] 3 4 0.1359223 0.2184466 -0.08252427 -0.15583081 -0.00921773

【讨论】:

  • 有趣!如果这可行,那将非常有帮助。当我尝试它时,它给出了Error in apply(rows, 1, function(rows) { : object 'rows' not found
  • 糟糕,我打错了。请再试一次。但是,如果从统计的角度来看这是一个有效的程序,它仍然是开放的。
  • 现在有新错误Error in prop.test(x = tab[rows, 1], n = rep(nrow(data), 2), correct = F) : 'x' and 'n' must have the same length 如果我能得到与prop.test() 中相同的结果进行个人比较,我想我很高兴,不是吗?顺便说一句,我只是用它来进行探索性数据分析
  • 我使用mat1&lt;-matrix(c(54,23,28,45,16,10,17,13), 4,2, dimnames=list(occupation=vector(), disease=c("yes", "no"))); data &lt;- reshape2::melt(transform(as.data.frame(mat1), occupation=factor(1:4)), id.var="occupation", variable.name="disease"); data &lt;- as.data.frame(splitstackshape::expandRows(data, "value")) 准备了来自您的mat1data
  • 您能否使用带有两个数据库变量的命令来重现相同的内容:例如我们需要的表是tab&lt;-with(data,table(occupation, disease)) 也许您在此准备步骤中做了一些不同的事情。因此,如果可能的话,您能否从tab 开始介绍相同的步骤?
猜你喜欢
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
  • 2020-09-01
  • 2019-03-12
相关资源
最近更新 更多