2

特定の時間におけるさまざまな人々の生存推定値を取得しようとしています。

私のコードは次のとおりです。

s = Surv(outcome.[,1], outcome.[,2])        
survplot= (survfit(s ~ person.list[,1]))  
plot(survplot, mark.time=FALSE)            

summary(survplot[1], times=4)[1]           

このコードは、生存オブジェクトを作成し、11人ごとに生存曲線を作成し、各曲線をプロットします。要約関数を使用して、で人1の生存推定値を取得できtime = 4ます。

指定された時間における各人の生存推定値のリストを作成しようとしています(time = 4)。

どんな助けでもいただければ幸いです。

ありがとう、マット

4

1 に答える 1

3

あなたの言うことがすべて本当なら、これは引数としてインデックスを使用してリストを生成する典型的な方法です:

 t4list <- lapply(1:11, function(x) summary(survplot[x], times=4)[1] )
 t4list

その時点での生存推定値のベクトルが本当に必要sapplyな場合は、結果が「多次元」である場合に、結果を数値ベクトルや行列などのアトミック形式に単純化しようとします。私はあなたが有用な結果を得ることができたと思っていただろう:

summary(survplot, times=4)[1]

これは、予測された生存時間のベクトルを提供することに成功しているはずです (そのような時間が存在すると仮定します)。貪欲になりすぎて、見積もりがある場所を過ぎて「時間」の値を押し出すと、エラーがスローされます。皮肉なことに、共変量のすべてのレベルに推定値がある時間が少なくとも 1 回ある場合、そのエラーはスローされません。ヘルプ ページの例を出発点として使用します。

fit <- survfit(Surv(time, status) ~ x, data = aml) 
summary(fit, times=c(10, 20, 60) )[1]
#$surv
#[1] 0.9090909 0.7159091 0.1840909 0.6666667 0.5833333
# not very informative about which times and covariates were estimated 
# and which are missing

# this is more informative
as.data.frame( summary(fit, times=c(10, 20, 60) )[c("surv", "time", "strata")])
       surv time          strata
1 0.9090909   10    x=Maintained
2 0.7159091   20    x=Maintained
3 0.1840909   60    x=Maintained
4 0.6666667   10 x=Nonmaintained
5 0.5833333   20 x=Nonmaintained

一方、単に 60 を使用すると、エラー メッセージが表示されます。

> summary(fit, times=c( 60) )[1]
Error in factor(rep(1:nstrat, scount), labels = names(fit$strata)) : 
  invalid labels; length 2 should be 1 or 1
于 2012-03-02T16:42:26.027 に答える