如何获得rateratio()返回更多的p值数字?

时间:2019-01-10 14:15:31

标签: r p-value

使用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或科学计数法。

1 个答案:

答案 0 :(得分:2)

fmsb::rateratio()对正态分布的尾值进行不精确的计算,导致该值下溢为零。您可以自己解决此问题(与维护人员联系以{@ {1}}来提出对此软件包的改进建议,这是出于公共意愿)。

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

maintainer("fmsb")

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

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

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

(这是等效的,但计算更准确:请参见p.v <- 2 * pnorm(abs(.CHI), lower=FALSE) here)。然后读回文件:

?pnorm

(这将在全局工作区中创建source("my_rateratio.R") 的新版本,从而掩盖rateratio()中的版本)。

现在,如果您重新运行代码,您会看到fmsbrr$p.value