Main Content

survival

コックス比例ハザード モデルの生存の計算

    説明

    s = survival(coxMdl) は、コックス比例ハザード モデル coxMdl のベースライン生存時間関数を推定します。時間 t における生存時間関数は、時間 t までの生存の推定確率です。"ベースライン" という用語は、予測子の決まったベースラインにおける生存時間関数を意味します。この値は coxMdl.Baseline に格納され、既定値は学習に使用されたデータ セットの平均です。

    s = survival(coxMdl,X) は、予測子が X 内の値をもつときの生存時間関数を推定します。この場合、sX の各行に対する列です。

    s = survival(coxMdl,X,Stratification) は、与えられた階層化変数 Stratification の値についての生存時間関数を推定します。Stratification には X の行ごとに 1 つの行が必要です。

    メモ

    階層化変数を使用して coxMdl に学習させ、予測子変数 X を渡す場合は、survival に階層化変数も渡さなければなりません。

    s = survival(___,'Time',T) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、時間 T における生存を計算します。

    [s,Tout] = survival(___) は、それぞれの生存推定値が計算された時間 Tout も返します。

    すべて折りたたむ

    電球の寿命のシミュレーション データが格納された lightbulb データ セットでコックス比例ハザード回帰を実行します。電球データの 1 列目には 2 種類の電球の寿命 (時間単位) が含まれています。2 列目には電球が蛍光灯と白熱灯のどちらであるかを示すバイナリ変数が含まれています。0 は電球が蛍光灯であることを示し、1 は白熱灯であることを示します。3 列目には打ち切り情報が含まれています。0 は電球が故障するまで観測されたことを示し、1 は観測が打ち切られたことを示します。

    電球の寿命について、打ち切りを考慮してコックス比例ハザード モデルを当てはめます。予測子変数は電球のタイプです。

    load lightbulb
    coxMdl = fitcox(lightbulb(:,2),lightbulb(:,1), ...
        'Censoring',lightbulb(:,3));

    ベースライン生存時間関数を時間 t の関数として計算します。これは、時間 t の後に電球が故障する確率を意味します。既定では、予測子の平均についてベースラインが計算され、この場合は mean(lightbulb(:,2)) = 0.5 です。生存時間関数が計算された時間 Tout を返します。

    [s,Tout] = survival(coxMdl);

    生存を時間の階段状グラフとしてプロットします (時間 ToutcoxMdl.Hazard(:,1) にも格納されます)。

    hold on;
    stairs(Tout,s,'b-')
    xlabel 'Time \it t'
    ylabel 'Probability of failure after time \it t'

    Figure contains an axes object. The axes object contains an object of type stair.

    このプロットに蛍光灯電球と白熱灯電球の生存時間関数を重ねてプロットします。

    s_fluorescent = survival(coxMdl,0);
    s_incandescent = survival(coxMdl,1);
    stairs(Tout,s_fluorescent,'r-')
    stairs(Tout,s_incandescent,'k-')
    legend('Baseline','Fluorescent','Incandescent')
    hold off

    Figure contains an axes object. The axes object contains 3 objects of type stair. These objects represent Baseline, Fluorescent, Incandescent.

    生存データを作成せずにプロットを直接作成するには、plotSurvivalを使用します。

    coxModel データを読み込みます (これはコックス比例ハザード モデル オブジェクトの例で生成されるシミュレーション データです)。coxMdl という名前のモデルには、階層化レベルが 3 つ (1、2、および 3) と 3 つのカテゴリカル値 (1、1/20、および 1/100) をもつ予測子 X が含まれています。

    load coxModel

    3 つの階層化レベルの X = 1 の生存時間関数を計算します。

    c1 = categorical(1);
    X = [c1;c1;c1];
    stratification = [1;2;3];
    s = survival(coxMdl,X,stratification);

    3 つの生存時間関数をプロットします。最初に、3 つの階層化レベルの時間を調べます。

    t1 = find(coxMdl.Hazard(:,3) == 1);
    t1 = coxMdl.Hazard(t1,1);
    t2 = find(coxMdl.Hazard(:,3) == 2);
    t2 = coxMdl.Hazard(t2,1);
    t3 = find(coxMdl.Hazard(:,3) == 3);
    t3 = coxMdl.Hazard(t3,1);

    3 つのレベルの生存をプロットします。時間 1 ~ 30 についてプロットを表示します。

    plot(t1,s{1},t2,s{2},t3,s{3})
    xlim([1,30])
    legend('Stratification Level 1','Stratification Level 2','Stratification Level 3','Location','northeast')
    xlabel('Time t')
    ylabel('Probability of Survival Past t')

    Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Stratification Level 1, Stratification Level 2, Stratification Level 3.

    または、引数 Time を指定して時間 1 ~ 30 における生存を評価します。

    t = linspace(1,30,300);
    st = survival(coxMdl,X,stratification,'Time',t);
    figure
    plot(t,st{1},t,st{2},t,st{3})
    legend('Stratification Level 1','Stratification Level 2','Stratification Level 3','Location','northeast')
    xlabel('Time t')
    ylabel('Probability of Survival Past t')

    Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Stratification Level 1, Stratification Level 2, Stratification Level 3.

    入力引数

    すべて折りたたむ

    当てはめたコックス比例ハザード モデル。CoxModel オブジェクトとして指定します。coxMdl の作成には fitcox を使用します。

    モデルの予測子。coxMdl の学習に使用された型と同じ型の予測子の配列として指定します。X の各行が 1 つの予測子のセットを表します。

    データ型: double | table | categorical

    階層化レベル。coxMdl の学習に使用された型と同じ型の変数として指定します。Stratification には X と同じ数の行を指定します。

    データ型: single | double | logical | char | string | table | cell | categorical

    生存推定値の時間。実数ベクトルとして指定します。survival は、必要に応じて、指定された時間を並べ替えて列ベクトルに変換します。結果の値は学習データの時間から線形に内挿されます。

    例: 0:40

    データ型: double

    出力引数

    すべて折りたたむ

    生存推定値。数値列ベクトルまたは数値列ベクトルの cell 配列として返されます。

    • 非階層化モデルの場合、s は、推定確率が格納された並べ替えられた数値列ベクトルです。

    • 階層化モデルの場合、s は、各階層化レベルについての推定確率が格納された並べ替えられた数値列ベクトルの cell 配列です。

    survival は、X の各行について生存推定値の列を返します。

    生存推定値の時間。次のいずれかとして返されます。

    • 非階層化モデルの場合、Tout は、学習セットの時間が格納された並べ替えられた数値列ベクトルです。

    • 階層化モデルの場合、Tout は、各階層化レベルについての学習セットの学習時間が格納された並べ替えられた数値列ベクトルの cell 配列です。

    ベクトル coxMdl.Hazard(:,1) には、階層化モデルと非階層化モデルの両方についての時間が格納されます。階層化モデルの場合、異なる階層化レベルの時間がエントリ 0 で区切られます。

    データ型: double | cell

    バージョン履歴

    R2021a で導入