r - 在 survdiff 中获得更高的 pvalue 精度
问题描述
我正在使用生存包运行 survdiff,p 值为 0.02。我希望看到它具有更高的精度(即 0.02xxxx)。有没有我可以传递的参数来指定 pvalue 的长度。我阅读了生存包的文档,但没有找到任何关于如何指定它的说明。
survdiff(surv_object~access_sam2$Area_mTLSHL)
解决方案
学分。
类对象的 p 值的计算"survdiff"
并不完全显而易见。我必须查看print
该类对象的方法中发生了什么,以了解计算自由度的方式。
下面的代码是代码的简化,print.survdiff
因此学分转到
citation("survival")
#
#Therneau T (2015). _A Package for Survival Analysis
#in S_. version 2.38, <URL:
#https://CRAN.R-project.org/package=survival>.
#
#Terry M. Therneau, Patricia M. Grambsch (2000).
#_Modeling Survival Data: Extending the Cox Model_.
#Springer, New York. ISBN 0-387-98784-3.
#
#To see these entries in BibTeX format, use
#'print(<citation>, bibtex=TRUE)', 'toBibtex(.)', or
#set 'options(citation.bibtex.max=999)'.
代码本身可以在源代码中看到或通过运行
getAnywhere("print.survdiff")
现在解决问题的问题。
我编写了一个通用pvalue
函数,以便更轻松地为 function 返回的类的对象调用方法survdiff
。该示例取自该功能的帮助页面。
返回值是一个有 3 个成员的命名列表,名称是不言自明的。其中之一chisq
是重复返回的值survdiff
。为了完整起见,我将其包括在内。
pvalue <- function(x, ...) UseMethod("pvalue")
pvalue.survdiff <- function (x, ...)
{
if (length(x$n) == 1) {
df <- 1
pval <- pchisq(x$chisq, 1, lower.tail = FALSE)
} else {
if (is.matrix(x$obs)) {
otmp <- rowSums(x$obs)
etmp <- rowSums(x$exp)
} else {
otmp <- x$obs
etmp <- x$exp
}
df <- sum(etmp > 0) - 1
pval <- pchisq(x$chisq, df, lower.tail = FALSE)
}
list(chisq = x$chisq, p.value = pval, df = df)
}
srv <- survdiff(Surv(futime, fustat) ~ rx, data = ovarian)
pvalue(srv)
#$chisq
#[1] 1.06274
#
#$p.value
#[1] 0.3025911
#
#$df
#[1] 1
推荐阅读
- html - 如何从 SVG img 中删除额外的高度
- python-3.x - Google Cloud Functions (GCF) - 使用 apt-get 安装包
- blockchain - Corda Azure 单一分类帐资源 - Web 服务器问题中没有 Cordapp
- javascript - 无法在请求中编辑变量
- bash - 如何安全地提前退出 bash 脚本?
- c - C编译器的区别?Char 中的 NUL 控制字符
- angular - ionic 4 - 如何检索传递给模态的数据
- python - 无法在 Python 中使用 Stem 和 Tor 更改我的 IP 地址?
- asp.net-mvc - ASP.NET MVC 引导日期选择器错误
- java - 使用 XPath 检索 XML 元素会引发 NullPointerException