coxph() と predict(Surv()) の使用に関していくつか質問があります。私の質問が少し長いことは承知しており、十分に説明できていないかもしれませんが、コメントや提案をいただければ幸いです。
Cox PH モデルと住宅の屋根修理の予測を作成しようとしています。5 つの入力変数 (共変量) があります。
House_Age (開始とも呼ばれる)、House_Price、Roof_Material_Grp_New、Land_Ownership_Status_Grp、Living_Status_Grp
名前が示すように、最初の 2 つは数値変数で、最後の 3 つはカテゴリ変数です。私の問題は、House_Age ハザードを時間に依存させたいということです。私は、House_Age の 3 年ごとに「データ分割」を行うことにしました (つまり、House_Age は変数 Start に変わります)。たとえば、7 年後にイベントが発生した場合、データは次のようになります。
Start Stop Event_01_Ts
0 3 0 (Censored)
3 3 0 (Censored)
6 1 1 (Event)
Start は House_Age と同じです。開始グループの各値の推定値でわかるように、約 40 年まで線形依存性があるように見えたので、最大 Start/House_Age 40 と線形関係を持つことを選択しました。
Cox_Mod_Lin <- coxph(Surv(Stop,Event_01_Ts) ~ Start+Roof_Material_Grp_New+House_Contract_Yen+Land_Ownership_Status_Grp+Living_Status_Grp,data=Abt_Roof_Ts_Mdl)
モデルは、0.1916 の Start 変数の線形係数と 1.211 の指数値 coef exp(coef) se(coef) z Pr(>|z|)
Start 1.916e-01 1.211e+00 6.817e-03 でうまくいきます。 28.112 < 2e-16 ***
分離された Start/House_Age を見ると、ハザードは毎年 21% ずつ増加しています - これは正しいですか? 私の問題は、たとえば1年、5年、10年の「修復」確率を予測したいということです。まず、入力として survfit とゼロ ベクトルを使用して、ベースライン ハザード関数を見つけようとします。
Base <- survfit(Cox_Mod_Lin,Abt_Baseline,type='aalen')
Base_Time_Hz <- as.data.frame(cbind(Base$time,Base$cumhaz))
Base_Time_Hz_1yr <- Base_Time_Hz[which(Base_Time_Hz$Time==1),]
ここで、Abt_Baseline には、数値変数のゼロとグループのゼロレベル グループ値が含まれます。これから、time=1、5、および 10 (1 年のみが表示されます) の累積ハザードを見つけ、これに予測関数を使用して見つかった「lp」予測の指数を掛けます。
1 年間の予測:
Pred_01<-Base_Time_Hz_1yr$Cumhaz*exp(predict(Cox_Mod_Lin,Abt_Roof_Score, type="lp"))
時間依存の入力がなくても、ハザードは Start (=House_Age) 変数の関数として将来変化する場合は問題ありません。私は Start の将来の値 (毎年 1 ずつ増加) を知っているので、予測期間にわたって何らかの形で統合できると思います。だから私は2つの主な質問があります:
- これは、モデリングと予測 (の一部) を行うための賢明な方法だと思われますか?
- はいの場合 - 変化する (増加する) House_Age/Start ハザードに関して予測期間にわたって統合を行うにはどうすればよいですか?
誰でも私を助けることができますか?