问题是关于“生存”库中的survdiff()函数的输出结构。也就是说,我有一个包含生存数据的数据框
> dat
ID Time Treatment Gender Censored
1 E002 2.7597536 IND F 0
2 E003 4.2710472 Control M 0
3 E005 1.4784394 IND F 0
4 E006 6.8993840 Control F 1
5 E008 9.5934292 IND M 0
6 E009 2.9897331 Control F 0
7 E014 1.3470226 IND F 1
8 E016 2.1683778 Control F 1
9 E018 2.7597536 IND F 1
10 E022 1.3798768 IND F 0
11 E023 0.7227926 IND M 1
12 E024 5.5195072 IND F 0
13 E025 2.4640657 Control F 0
14 E028 7.4579055 Control M 1
15 E029 5.5195072 Control F 1
16 E030 2.7926078 IND M 0
17 E031 4.9938398 Control F 0
18 E032 2.7268994 IND M 0
19 E033 0.1642710 IND M 1
20 E034 4.1396304 Control F 0
和模型
> diff = survdiff(Surv(Time, Censored) ~ Treatment+Gender, data = dat)
> diff
Call:
survdiff(formula = Surv(Time, Censored) ~ Treatment + Gender,
data = dat)
N Observed Expected (O-E)^2/E (O-E)^2/V
Treatment=Control, Gender=M 2 1 1.65 0.255876 0.360905
Treatment=Control, Gender=F 7 3 2.72 0.027970 0.046119
Treatment=IND, Gender=M 5 2 2.03 0.000365 0.000519
Treatment=IND, Gender=F 6 2 1.60 0.100494 0.139041
Chisq= 0.5 on 3 degrees of freedom, p= 0.924
我想知道包含右列(O-E)^ 2 / V值的输出对象的字段是什么?我想进一步使用它们但不能从diff $ obs,diff $ exp,diff $ var或它们的组合中获得它们。
非常感谢你的帮助。
答案 0 :(得分:1)
你可以用一种简单的方式找到它。当你运行" diff"时,实际上你会调用print.survdiff(diff)
。您可以下载生存包here的包源,然后打开存档文件,在R文件夹中,您将找到包含此功能的文件print.survdiff.S(您可以使用Notepad ++ / Sublime /打开它)任何可以读取R语法的东西)。
据我所见,最后一栏来自
行((otmp-etmp)^2)/ diag(x$var)
使用
从对象中获取otmp
和etmp
if (is.matrix(x$obs)){
otmp <- apply(x$obs,1,sum)
etmp <- apply(x$exp,1,sum)
}
else {
otmp <- x$obs
etmp <- x$exp
}
因此,您可以通过使用diff
而不是x
运行此代码来获得相同的内容(尽管我建议您不要调用您的对象diff,因为这是R中的基本函数)。