使用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 或以科学计数法表示。
最佳答案
fmsb::rateratio()
对正态分布的尾部值进行不精确的计算,导致该值下溢为零。您可以自己修复此问题(出于公共(public)精神,联系维护者 (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)
(这是等效的,但更准确的计算:请参阅 ?pnorm
或 here )。然后读回文件:
source("my_rateratio.R")
(这会在您的全局工作区中创建 rateratio()
的新版本,并屏蔽 fmsb
中的版本)。
现在,如果您重新运行代码,您将看到 rr$p.value
为 2.893638e-18
。
关于r - 如何让rateratio()返回更多p值数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54130604/