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

问题描述 投票:0回答:3

我希望在R中应用参数生存分析。我的数据是Veteran的肺癌研究数据。这是数据的前20列:

我想我需要将celltype转换为分类虚拟变量,如讲义所示:

首先,我想知道是否有任何方法可以像原始形式一样使用celltype。如果是这样,怎么样?

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

以下是获取整个数据的方法:

library(survival)
veteran

以下是R模型的拟合方式:

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

这是输出:

r survival-analysis r-factor
3个回答
2
投票

您可以使用celltypemodel.matrix创建一个包含4个虚拟变量的模型矩阵:

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
.
.
.

1
投票

要更改因子,您可以使用以下代码:

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

使用此代码,您可以更改数据框的每个部分。请记住,如果要计算某些内容,则必须将值的模式从因子更改为数值

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

最好的页面

PS:我不确定这是不是问题


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 
© www.soinside.com 2019 - 2024. All rights reserved.