epiDisplay ordinal.or.display的p值与MASS软件包中的polr计算得出的p值之间存在差异吗?

时间:2019-06-21 14:29:54

标签: r statistics logistic-regression ordinal mass

我正在尝试使用有序逻辑回归(具体而言,来自MASS软件包的polr)来计算一组生物标记物的几率和相关的p值。我一直在使用epiDisplay包中的“ ordinal.or.display()”函数来查看回归结果,但请注意显示的p值与我手动计算的值之间的差异……大约是原来的两倍。当我使用正态分布计算时,它会很大。我是否缺少特定于序数逻辑回归的东西,还是epiDisplay函数存在问题?

我尝试查看epiDisplay软件包(https://cran.r-project.org/web/packages/epiDisplay/epiDisplay.pdf)的文档,但没有找到任何解释该p值是如何计算的。任何帮助或其他知识非常感谢!

#the model using polr from MASS
#generating artifical outcome var from mt cars

mtcars <- mtcars
mtcars$outcome <- round(runif(nrow(mtcars))*5)
myMod <-polr(ordered(outcome) ~ factor(am)+ factor(carb)+ wt,
             data = mtcars,
             Hess = TRUE)

summary <- summary(myMod)
(ctable <- coef(summary(myMod)))
p <- pnorm(abs(ctable[, "t value"]), lower.tail = FALSE) * 2

## combined table: p = 0.624
(ctable <- cbind(ctable, "p value" = p))


ordinal.or.display(myMod) #p value = 0.312

我希望p值相同-epiDisplay可能不会乘以2吗?

1 个答案:

答案 0 :(得分:0)

每当模拟数据时,请设置随机数种子。否则,我们将无法复制您的结果。

set.seed(123)

当您应该使用t分布时,已使用正态分布获取p值。因此,您用于计算p值的代码应为:

df <- summary(myMod)$df.residual
p <- pt(abs(ctable[, "t value"]), df=df, lower.tail=FALSE) * 2

这也是epiDisplay包中的ordinal.or.display函数进行计算的方式。您可以通过查看第9行的代码进行检查。

library(epiDisplay)
ordinal.or.display

现在检查:

data(mtcars)
mtcars$outcome <- round(runif(nrow(mtcars))*5)

myMod <- polr(ordered(outcome) ~ factor(am)+ factor(carb)+ wt,
              data = mtcars,
              Hess = TRUE)

ctable <- coef(summary(myMod))

df <- summary(myMod)$df.residual
p <- pt(abs(ctable[, "t value"]), df=df, lower.tail=FALSE) * 2

options(digits=2)

(ctable <- cbind(ctable, "p value:" = p))

       Value Std. Error t value p value:
am1   -2.335       1.19  -1.962    0.064
carb2  0.045       0.92   0.049    0.961
carb3  1.840       1.40   1.319    0.202
carb4 -0.618       1.16  -0.534    0.599
carb6  1.721       1.85   0.933    0.362
carb8  2.418       2.10   1.152    0.263
wt    -0.875       0.68  -1.295    0.210

ordinal.or.display(myMod)
#Waiting for profiling to be done...
      Ordinal OR lower95ci upper95ci P value
am1   0.097      0.009     0.971     0.064  
carb2 1.046      0.166     6.477     0.961  
carb3 6.298      0.428     112.827   0.202  
carb4 0.539      0.051     5.065     0.599  
carb6 5.59       0.121     273.826   0.362  
carb8 11.218     0.162     864.225   0.263  
wt    0.417      0.106     1.573     0.210

我也一样。