7

Rで生存分析を行っており、コードを整理/簡素化しようとしています。

現在、データ分析でいくつかのステップを実行しています。

  1. Surv オブジェクト (各観測が打ち切られたかどうかを示す時間変数) を作成します。
  2. 平均生存時間プロセスのプロット/推定のために、カテゴリカル予測子に従ってこの Surv オブジェクトを適合させます。と
  3. ログランク検定を計算して、グループ間の生存率に「有意な」差があるという証拠があるかどうかを尋ねます。

例として、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
4

1 に答える 1

8

上でコメントしたように、この質問を書いた直後に、実際にこれに対する答えを整理しました。

したがって、上記のステップ 3 は次のように置き換えることができます。

lung.survdiff <- survdiff(formula(lung.survfit$call$formula))

しかし、Ben Barnes が質問へのコメントで指摘しているように、survfit オブジェクトからの数式は、次のようにしてより直接的に抽出できます。

lung.survdiff <- survdiff(formula(lung.survfit))

これはまさに私が欲しかったものであり、利用可能になることを望んでいたものです -- ありがとう、ベン!

于 2012-12-12T20:15:57.680 に答える