R语言epitools/questionr包oddsratio函数计算逻辑及结果问询
关于R语言epitools::oddsratio与questionr::odds.ratio的计算逻辑问题解答
问题1:2×2矩阵手动计算与函数结果差异
你手动计算的比值比(OR)是基于“行=暴露组/非暴露组,列=病例/对照”的假设,得到的 crude OR 为 (1/3)/(6/1) = 1/18 ≈ 0.0556,但epitools::oddsratio(m)$measure给出0.085075,核心原因可能有两个:
- 矩阵行列的对齐逻辑不符:
epitools::oddsratio默认将矩阵的行定义为结局(病例/对照),列定义为暴露状态,如果你的手动计算是反过来的,就会出现偏差。可以通过rev参数调整行列顺序,比如oddsratio(m, rev="row")来匹配你手动计算的分组逻辑。 - 校正估计的使用:当2×2矩阵存在极小单元格计数(比如你的矩阵里有两个1),部分版本的函数可能默认启用了连续性校正或贝叶斯先验校正,导致点估计与 crude OR 不同。你可以显式指定
method="wald"并关闭校正(如果支持),比如oddsratio(m, method="wald", correction=FALSE),看结果是否与手动计算一致。
另外,questionr::odds.ratio的默认逻辑是计算行变量相对于列变量的OR,同样需要确认你的矩阵行列定义是否与函数默认匹配。
问题2:3行2列矩阵的多组OR计算
当输入3行2列矩阵时,epitools::oddsratio(m)$measure输出的3行结果中,第一行是参考组(默认第一行作为基准),第二行是第二行相对于第一行的OR,第三行是第三行相对于第一行的OR——也就是将第一行作为对照,分别计算其余两行与它的比值比。
内容的提问来源于stack exchange,提问作者elieli
相关产品推荐
相关产品推荐

