如何在R中的生存分析中使用字符串变量?

问题描述:

我希望在R中应用参数生存分析。我的数据是老兵的肺癌研究数据。下面是数据的第20列:如何在R中的生存分析中使用字符串变量?

enter image description here

我想我需要转换celltype中分类虚拟变量讲义建议位置:

enter image description here

Firstty,我想知道是否有任何方式使用原始形式的celltype。如果是这样,怎么样?

其次,我如何创建上面提到的虚拟变量?

这里是你如何让整个数据:

library(survival) 
veteran 

和这里的模型是如何安装在R:

weibull <- survreg(S ~c2 + c3 + c4, dist="w") 

这里是输出:

enter image description here

您可以创建一个模型矩阵,其中包含的4个虚拟变量与model.matrix

model.matrix(~ 0 + celltype, veteran) 

结果:

celltypesquamous celltypesmallcell celltypeadeno celltypelarge 
1     1     0    0    0 
2     1     0    0    0 
3     1     0    0    0 
4     1     0    0    0 
5     1     0    0    0 
. 
. 
. 

你不需要做任何特殊。只需在公式中输入该变量名称即可。 (我没有留下深刻印象与你的教练的R编程能力,如果这是你教的):

> weibull <- survreg(Surv(time,status) ~celltype, dist="w", data=veteran) 
> weibull 
Call: 
survreg(formula = Surv(time, status) ~ celltype, data = veteran, 
    dist = "w") 

Coefficients: 
     (Intercept) celltypesmallcell  celltypeadeno  celltypelarge 
     5.4065502  -1.0831923  -1.2162022  -0.2627843 

Scale= 1.03048 

Loglik(model)= -734.2 Loglik(intercept only)= -748.1 
    Chisq= 27.87 on 3 degrees of freedom, p= 3.9e-06 
n= 137 
+0

谢谢代码,但你的输出与我的讲义中的输出不同。你觉得有什么不同?我已经把输出放到我的帖子上面。 – 2014-12-04 20:38:29

+0

看起来非常类似于我的输出。只有'(Intercept)'参数是不同的,推理统计都是一样的。你从来没有展示过这个'S'对象是如何创建的,所以你现在真的要求我们读你的思想。 – 2014-12-04 21:08:02

+0

这是因为S没有在讲义中给出。看了数据后,我认为S = Surv(时间,状态)。对不起, – 2014-12-04 21:14:27

要改变的因素,你可以使用下面的代码:

DataFrame$celltype[DataFrame$celltype == "large"] <- 1 

与此代码您可以更改数据框的每个部分。请记住,你必须改变从要素价值的模式,以数字,如果你要计算的东西

DataFrame$celltype <- as.numeric(DataFrame$celltype) 

最好PAJ

PS:我不知道这是否是问题

+0

谢谢是的,这是问题(第二个) – 2014-12-04 20:59:08