2016-07-23 2 views
2

Я пытаюсь создать предсказанные графики выживания для survreg или flexsurvreg в R. Но я получаю ошибки для сюжета, когда я использую более одного предиктора в выживаемости. Я хотел бы попробовать его с помощью flexsurvreg или survreg. Для набора данных для легких я использовал следующий код, чтобы соответствовать модели.прогнозируемая кривая выживаемости в R-параметрическом методе

require(survival) 
s <- with(lung,Surv(time,status)) 

sWei <- survreg(s ~ as.factor(sex)+age+ph.ecog+wt.loss+ph.karno,dist='weibull',data=lung) 

fitKM <- survfit(s ~ sex,data=lung) 
plot(fitKM) 

lines(predict(sWei, newdata=list(sex=1),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="blue") 
lines(predict(sWei, newdata=list(sex=2),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="red") 

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

> lines(predict(sWei, newdata=list(sex=1),type="quantile",p=seq(.01,.99,by=.01)),seq(.99,.01,by=-.01),col="red") 
Error in eval(expr, envir, enclos) : object 'age' not found 
+0

Вы используете много переменных в модели. При создании 'newdata' вам нужно создать значения для всех переменных в модели. –

+0

Спасибо, Роман. В моей модели я должен использовать множество переменных, есть ли другой способ создания кривой выживания после настройки для многих переменных. – NiroshaR

ответ

3

Мы должны дать значения в list для каждой переменной в модели, так что можно построить кривую.

require(survival) 
s <- with(lung,Surv(time,status)) 

sWei <- survreg(s ~ as.factor(sex)+age+ph.ecog+wt.loss+ph.karno,dist='weibull',data=lung) 

fitKM <- survfit(s ~ sex,data=lung) 
plot(fitKM) 

lines(predict(sWei, newdata=list(sex=1, 
           age = 1, 
           ph.ecog = 1, 
           ph.karno = 90, 
           wt.loss = 2), 
           type="quantile", 
           p=seq(.01,.99,by=.01)), 
           seq(.99,.01,by=-.01), 
           col="blue") 
lines(predict(sWei, newdata=list(sex=2, 
           age = 1, 
           ph.ecog = 1, 
           ph.karno = 90, 
           wt.loss = 2), 
           type="quantile", 
           p=seq(.01,.99,by=.01)), 
           seq(.99,.01,by=-.01), 
           col="red") 

enter image description here

+0

Большое спасибо. Вы просто назначили возраст = 1, или есть другая причина. – NiroshaR

+0

@Mani Вы очень желанны. 'age', а другие переменные должны иметь значение, но у меня не было особых причин для выбора значений, которые я сделал. Я понял, что вы хотите увидеть эффект «пола», поэтому я просто произвольно установил остальные и сохранил все, кроме «пола», между синими и красными кривыми. –

+1

Хорошо, спасибо. Это было действительно полезно. – NiroshaR

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