2016-07-23 17 views
2

Rでsurvivまたはflexsurvregの予測生存プロットを作成しようとしていますが、survivで複数の予測変数を使用するとプロットの誤差が生じます。私は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

ありがとうございました。あなたはage = 1を割り当てただけでしたか、別の理由がありますか? – NiroshaR

+0

@Maniあなたは大歓迎です。 「年齢」とその他の変数には値が必要ですが、私が行った値を選択する特別な理由はありませんでした。私は「セックス」の効果を見たいと思ったので、他のものを任意に設定し、青と赤の曲線の間で「性別」を除いてすべてを保持しました。 –

+1

ありがとうございます。それは本当に役に立ちました。 – NiroshaR

関連する問題