【问题标题】:How can I get rateratio() to return more p-value digits?如何让 rateratio() 返回更多 p 值数字?
【发布时间】:2019-01-10 14:15:31
【问题描述】:

使用fmsb 计算发病率。

例子:

rr <- rateratio(853, 7703, 284, 3508)
rr
Cases   Person-time
Exposed    853     284
Unexposed 7703    3508
Total       8556    3792

发病率比估计及其显着性概率

data: 853 7703 284 3508
p-value <2.2e-16
95 percent confidence interval:<br/>
1.274426 1.468068
sample estimates:
[1] 1.367824

然后当我尝试返回值以稍后存储在表中时:

p <- rr$p.value
p
[1] 0

如何更改格式以使其返回具有更多位数的 p 值?最好是 3 或 4 或科学计数法。

【问题讨论】:

    标签: r p-value


    【解决方案1】:

    fmsb::rateratio() 对正态分布的尾值进行了不精确的计算,导致值下溢为零。您可以自己解决此问题(本着公益的精神联系维护者 (maintainer("fmsb")) 建议对包进行此改进)。

    将函数的源代码保存到文件中:

    dump("rateratio",file="my_rateratio.R")
    

    在文本编辑器(或 RStudio 或其他)中编辑文件并更改第 14 行,即

    p.v <- 2 * (1 - pnorm(abs(.CHI)))
    

    p.v <- 2 * pnorm(abs(.CHI), lower=FALSE)
    

    (这是等效的,但更准确的计算:请参阅 ?pnormhere)。然后读回文件:

    source("my_rateratio.R")
    

    (这会在您的全局工作区中创建一个新版本的rateratio(),将fmsb 中的版本屏蔽)。

    现在,如果您重新运行代码,您将看到 rr$p.value2.893638e-18

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 2014-12-16
      • 2013-12-30
      • 2023-03-03
      相关资源
      最近更新 更多