2014-12-04 2 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 фиктивных переменных для celltype с 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

спасибо для кода, но ваш результат отличается от вашего в лекциях. Как вы думаете, что другое? Я поставил вывод в свой пост выше. –

+0

Похоже на то, что для меня такой же результат. Только параметр '(Intercept)' отличается, и статистические данные выводятся одинаково. Вы никогда не показывали, как этот объект 'S' был создан, поэтому вы действительно просите нас прочитать ваш ум сейчас. –

+0

Это потому, что S не было дано в лекциях. Посмотрев данные, я подумал, что S = Surv (время, статус). Извините за это –

1

Чтобы изменить факторы, которые вы можете использовать следующий код:

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

с этим кодом вы можете изменить каждую часть вашего фрейма. Имейте в виду, что у вас есть режим значения от фактора изменится на числовое, если вы хотите, чтобы вычислить что-то

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

лучший PAJ

PS: Я не уверен, если это был вопрос

+0

спасибо, да, это был вопрос (второй) –

Смежные вопросы