Main Content

plotSurvival

コックス比例ハザード モデルの生存時間関数のプロット

R2021a 以降

説明

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

plotSurvival(coxMdl,X) は、予測子が X 内の値をもつときの生存時間関数をプロットします。プロットには X の行ごとに 1 つのラインが含まれます。

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

メモ

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

plotSurvival(coxMdl,ax,___) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、指定されたグラフィックス座標軸 ax でプロットします。

plotSurvival(___,Name,Value) では、1 つ以上の名前と値の引数を使用して追加オプションを指定します。たとえば、plotSurvival(CoxMdl,"Time",T) は、時間 T における生存時間関数をプロットします。

graphics = plotSurvival(___) は、Stair グラフィックス オブジェクトの配列を返します。Stair のプロパティを参照してください。

すべて折りたたむ

電球の寿命のシミュレーション データが格納された 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 です。

plotSurvival(coxMdl)

Figure contains an axes object. The axes object with title Estimated Survival Probability, xlabel Time, ylabel Survival Probability contains an object of type stair. This object represents Baseline.

蛍光灯電球 (予測子 = 0) と白熱灯電球 (予測子 = 1) の生存確率をプロットします。

plotSurvival(coxMdl,[0;1])

Figure contains an axes object. The axes object with title Estimated Survival Probability, xlabel Time, ylabel Survival Probability contains 2 objects of type stair. These objects represent X=0, X=1.

生存をプロットせずに計算するには、survivalを使用します。

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];
plotSurvival(coxMdl,X,stratification)
xlim([1,30])

Figure contains an axes object. The axes object with title Estimated Survival Probability, xlabel Time, ylabel Survival Probability contains 3 objects of type stair. These objects represent X=1, Stratification=1, X=1, Stratification=2, X=1, Stratification=3.

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

load coxModel

生存のプロットのプログラムによる編集を有効にするには、座標軸を作成します。

h = figure;
axes1 = axes('Parent',h);

X の予測子の値 categorical(1) と階層化レベル 3 についての生存時間関数をプロットします。この階層化レベルは一定のハザード率を表します。したがって、対数スケールでは、結果の生存のプロットは直線に近くなるはずです。時間 1 ~ 30 についてプロットします。

oo = categorical(1);
plotSurvival(coxMdl,axes1,oo,3,'Time',linspace(1,30,300));
axes1.YScale = 'log';

Figure contains an axes object. The axes object with title Estimated Survival Probability, xlabel Time, ylabel Survival Probability contains an object of type stair. This object represents X=1, Stratification=3.

入力引数

すべて折りたたむ

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

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

データ型: double | table | categorical

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

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

プロットの座標軸。グラフィックス axes オブジェクトとして指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。

R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

例: plotSurvival(CoxMdl,Time=T)

範囲外の時間の生存を計算するための外挿法。リストされた値のいずれかとして指定します。CoxModel オブジェクトでは、CoxModel.Hazard に格納される累積ベースライン ハザードを使用して関数 survival または plotSurvival のベースライン生存時間関数を計算します。範囲 (次で定義) 内の時間については、ベースライン生存時間関数の線形内挿から結果が得られます。

非階層化モデルの場合、範囲は [T1,T2] です。ここで、T1 は最も早い学習時間の (1 - eps) 倍、T2 は最も遅い学習時間です。時間 TExtrapolationMethod に応じて、結果は次のようになります。

  • 'nearest' (既定) — T < T1 の場合、時間 T1 の結果になります。T > T2 の場合、時間 T2 の結果になります。

  • 'linear' — 結果は範囲内の最も近い時間からの線形外挿になります。外挿される生存の値は [0,1] に収まるように切り捨てられます。つまり、返される生存の値が val で線形外挿が extrapval であるとすると次のようになります。

    val = max(0, min(1,extrapval)).

  • 'next'T < T1 の場合、時間 T1 の結果になります。T > T2 の場合、結果は NaN になります。

  • 'none'T < T1 または T > T2 の場合、結果は NaN になります。

  • 'previous'T < T1 の場合、結果は NaN になります。T > T2 の場合、時間 T2 の結果になります。

階層化モデルの各階層について、非階層化モデルとまったく同じように、その階層におけるイベント時間を使用して時間範囲を定義します。各階層における生存の外挿値に、階層の範囲に適用される ExtrapolationMethod が使用されます。

例: 'next'

データ型: char | string

生存推定値の時間。実数ベクトルとして指定します。plotSurvival は、必要に応じて、指定された時間を並べ替えて列ベクトルに変換します。coxMdl.Hazard(:,1) の範囲内の非階層化モデルと時間については、結果の値が学習データの時間から線形に内挿されます。近似データ範囲に収まらない Time の値については、ExtrapolationMethod で指定された外挿法を使用して生存が外挿されます。

階層化モデルの場合、coxMdl.Hazard(:,1) の各階層に対する個別の時間範囲が coxMdl.Hazard(:,2) において 0 で区切られます。plotSurvival は、非階層化モデルの場合と同じ手順を使用して各階層の生存を推定します。

例: 0:40

データ型: double

バージョン履歴

R2021a で導入