- 阅读权限
- 255
- 威望
- 2 级
- 论坛币
- 497611 个
- 通用积分
- 12827.5505
- 学术水平
- 517 点
- 热心指数
- 662 点
- 信用等级
- 353 点
- 经验
- 152600 点
- 帖子
- 2454
- 精华
- 1
- 在线时间
- 2048 小时
- 注册时间
- 2012-11-6
- 最后登录
- 2025-5-27
|
R是调用S语言的函数,survdiff.fit是S语言的函数。代码在survival包里找到的,如下:
- survdiff.fit <- function(y, x, strat, rho=0) {
- #
- # This routine is almost always called from survdiff
- # If called directly, remember that it does no error checking
- #
- n <- length(x)
- if (ncol(y) !=2) stop ("Invalid y matrix")
- if (nrow(y) !=n | length(x) !=n) stop("Data length mismatch")
- ngroup <- length(unique(x))
- if (ngroup <2) stop ("There is only 1 group")
- if (is.category(x)) x <- as.numeric(x)
- else x <- match(x, unique(x))
- if (missing(strat)) strat <- rep(1,n)
- else strat <- as.numeric(as.factor(strat))
- nstrat <- length(unique(strat))
- if (length(strat) !=n) stop("Data length mismatch")
- ord <- order(strat, y[,1], -y[,2])
- strat2 <- c(1*(diff(strat[ord])!=0), 1)
- xx <- .C(Csurvdiff2, as.integer(n),
- as.integer(ngroup),
- as.integer(nstrat),
- as.double(rho),
- as.double(y[ord,1]),
- as.integer(y[ord,2]),
- as.integer(x[ord]),
- as.integer(strat2),
- observed = double(ngroup*nstrat),
- expected = double(ngroup*nstrat),
- var.e = double(ngroup * ngroup),
- double(ngroup), double(n))
- if (nstrat==1) list(expected = xx$expected,
- observed = xx$observed,
- var = matrix(xx$var.e, ngroup, ngroup))
- else list(expected = matrix(xx$expected, ngroup),
- observed = matrix(xx$observed, ngroup),
- var = matrix(xx$var.e, ngroup, ngroup))
- }
复制代码
|
|