楼主: he20090411
5710 1

[问答] 关于survival包里的survdiff函数的源程序 [推广有奖]

  • 0关注
  • 0粉丝

学前班

60%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
80 点
帖子
1
精华
0
在线时间
2 小时
注册时间
2013-8-4
最后登录
2016-8-24

楼主
he20090411 发表于 2014-11-25 22:12:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
求助大神,我在查看survival包里的survdiff源代码时,发现其中有一个survdiff.fit函数,但我在R里面调用它时却提示没有这个对象,在网上搜索也搜不到相关信息,请问有哪位大神知道这个函数是什么吗? QQ截图20141125221228.png
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Survival Diff SUR DIF 源程序 survival 源程序

沙发
jiangbeilu 学生认证  发表于 2014-11-26 00:05:33
R是调用S语言的函数,survdiff.fit是S语言的函数。代码在survival包里找到的,如下:
  1. survdiff.fit <- function(y, x, strat, rho=0) {
  2.     #
  3.     # This routine is almost always called from survdiff
  4.     #  If called directly, remember that it does no error checking
  5.     #
  6.     n <- length(x)
  7.     if (ncol(y) !=2) stop ("Invalid y matrix")
  8.     if (nrow(y) !=n | length(x) !=n) stop("Data length mismatch")

  9.     ngroup <- length(unique(x))
  10.     if (ngroup <2) stop ("There is only 1 group")
  11.     if (is.category(x)) x <- as.numeric(x)
  12.     else x <- match(x, unique(x))

  13.     if (missing(strat)) strat <- rep(1,n)
  14.     else strat <- as.numeric(as.factor(strat))
  15.     nstrat <- length(unique(strat))
  16.     if (length(strat) !=n) stop("Data length mismatch")

  17.     ord <- order(strat, y[,1], -y[,2])
  18.     strat2 <- c(1*(diff(strat[ord])!=0), 1)

  19.     xx <- .C(Csurvdiff2, as.integer(n),
  20.                    as.integer(ngroup),
  21.                    as.integer(nstrat),
  22.                    as.double(rho),
  23.                    as.double(y[ord,1]),
  24.                    as.integer(y[ord,2]),
  25.                    as.integer(x[ord]),
  26.                    as.integer(strat2),
  27.                    observed = double(ngroup*nstrat),
  28.                    expected = double(ngroup*nstrat),
  29.                    var.e    = double(ngroup * ngroup),
  30.                    double(ngroup), double(n))

  31.     if (nstrat==1)  list(expected = xx$expected,
  32.                          observed = xx$observed,
  33.                          var      = matrix(xx$var.e, ngroup, ngroup))
  34.     else            list(expected = matrix(xx$expected, ngroup),
  35.                          observed = matrix(xx$observed, ngroup),
  36.                          var      = matrix(xx$var.e, ngroup, ngroup))
  37.     }
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 03:57