Rで生存分析を行っており、コードを整理/簡素化しようとしています。
現在、データ分析でいくつかのステップを実行しています。
- Surv オブジェクト (各観測が打ち切られたかどうかを示す時間変数) を作成します。
- 平均生存時間プロセスのプロット/推定のために、カテゴリカル予測子に従ってこの Surv オブジェクトを適合させます。と
- ログランク検定を計算して、グループ間の生存率に「有意な」差があるという証拠があるかどうかを尋ねます。
例として、R のサバイバル パッケージの肺データセットを使用したモックアップを次に示します。したがって、次のコードは、私がやりたいことと十分に似ていますが、予測子セットに関してはかなり単純化されています (これが、私が望む理由です)。コードを簡素化するため、モデル間で一貫性のない呼び出しを行わないようにします)。
library(survival)
# Step 1: Make a survival object with time-to-event and censoring indicator.
# Following works with defaults as status = 2 = dead in this dataset.
# Create survival object
lung.Surv <- with(lung, Surv(time=time, event=status))
# Step 2: Fit survival curves to object based on patient sex, plot this.
lung.survfit <- survfit(lung.Surv ~ lung$sex)
print(lung.survfit)
plot(lung.survfit)
# Step 3: Calculate log-rank test for difference in survival objects
lung.survdiff <- survdiff(lung.Surv ~ lung$sex)
print(lung.survdiff)
今、これはすべて問題なくダンディであり、私はこれと一緒に暮らすことができますが、もっとうまくやりたいと思っています.
私の質問はステップ 3 あたりです。私がここでやりたいことは、lug.survfit オブジェクトからの数式の情報を使用して、生存曲線の差の計算、つまり survdiff の呼び出しにフィードできるようにすることです。そして、これは私の従順な [sic] プログラミング スキルが壁にぶつかる場所です。以下は、これを行うための私の現在の試みです。あなたが与えることができる助けに感謝します! これを整理できたら、ソリューションを関数にまとめることができるはずです。
lung.survdiff <- survdiff(parse(text=(lung.survfit$call$formula)))
## Which returns following:
# Error in survdiff(parse(text = (lung.survfit$call$formula))) :
# The 'formula' argument is not a formula