2014-12-04 16 views
0

我希望在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

回答

2

您可以創建一個模型矩陣,其中包含的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 
. 
. 
. 
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

1

要改變的因素,你可以使用下面的代碼:

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

與此代碼您可以更改數據框的每個部分。請記住,你必須改變從要素價值的模式,以數字,如果你要計算的東西

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

最好PAJ

PS:我不知道這是否是問題

+0

謝謝是的,這是問題(第二個) – 2014-12-04 20:59:08

相關問題