survival
構文
説明
は、与えられた階層化変数 s
= survival(coxMdl
,X
,Stratification
)Stratification
の値についての生存時間関数を推定します。Stratification
には X
の行ごとに 1 つの行が必要です。
メモ
階層化変数を使用して coxMdl
に学習させ、予測子変数 X
を渡す場合は、survival
に階層化変数も渡さなければなりません。
では、前の構文におけるいずれかの入力引数の組み合わせを使用し、1 つ以上の名前と値の引数を使用して追加のオプションを指定します。たとえば、s
= survival(___,Name,Value
)survival(CoxMdl,"Time",T)
は、時間 T
における生存を計算します。
例
生存の計算
電球の寿命のシミュレーション データが格納された 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);
生存を時間の階段状グラフとしてプロットします (時間 Tout
は coxMdl.Hazard(:,1)
にも格納されます)。
hold on; stairs(Tout,s,'b-') xlabel 'Time \it t' ylabel 'Probability of failure after time \it t'
このプロットに蛍光灯電球と白熱灯電球の生存時間関数を重ねてプロットします。
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
生存データを作成せずにプロットを直接作成するには、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')
または、引数 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')
入力引数
X
— モデルの予測子
学習に使用された予測子の平均、すべてカテゴリカル予測子の場合は 0
(既定値) | 学習に使用された型の予測子の配列
モデルの予測子。coxMdl
の学習に使用された型と同じ型の予測子の配列として指定します。X
の各行が 1 つの予測子のセットを表します。
データ型: double
| table
| categorical
Stratification
— 階層化レベル
学習に使用された型の変数
階層化レベル。coxMdl
の学習に使用された型と同じ型の変数として指定します。Stratification
には X
と同じ数の行を指定します。
データ型: single
| double
| logical
| char
| string
| table
| cell
| categorical
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: survival(CoxMdl,Time=T)
ExtrapolationMethod
— 範囲外の時間の生存についての外挿法
'nearest'
(既定値) | 'linear'
| 'next'
| 'none'
| 'previous'
範囲外の時間の生存を計算するための外挿法。リストされた値のいずれかとして指定します。CoxModel
オブジェクトでは、CoxModel.Hazard
に格納される累積ベースライン ハザードを使用して関数 survival
または plotSurvival
のベースライン生存時間関数を計算します。範囲 (次で定義) 内の時間については、ベースライン生存時間関数の線形内挿から結果が得られます。
非階層化モデルの場合、範囲は [T1,T2]
です。ここで、T1
は最も早い学習時間の (1 - eps
) 倍、T2
は最も遅い学習時間です。時間 T
の ExtrapolationMethod
に応じて、結果は次のようになります。
'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
Time
— 生存推定値の時間
coxMdl.Hazard(:,1)
(既定値) | 実数ベクトル
生存推定値の時間。実数ベクトルとして指定します。survival
は、必要に応じて、指定された時間を並べ替えて列ベクトルに変換します。coxMdl.Hazard(:,1)
の範囲内の非階層化モデルと時間については、結果の値が学習データの時間から線形に内挿されます。近似データ範囲に収まらない Time
の値については、ExtrapolationMethod
で指定された外挿法を使用して生存が外挿されます。
階層化モデルの場合、coxMdl.Hazard(:,1)
の各階層に対する個別の時間範囲が coxMdl.Hazard(:,2)
において 0 で区切られます。survival
は、非階層化モデルの場合と同じ手順を使用して各階層の生存を推定します。
例: 0:40
データ型: double
出力引数
s
— 生存推定値
数値列ベクトル | 数値列ベクトルの cell 配列
生存推定値。数値列ベクトルまたは数値列ベクトルの cell 配列として返されます。
非階層化モデルの場合、
s
は、推定確率が格納された並べ替えられた数値列ベクトルです。階層化モデルの場合、
s
は、各階層化レベルについての推定確率が格納された並べ替えられた数値列ベクトルの cell 配列です。
survival
は、X
の各行について生存推定値の列を返します。
Tout
— 生存推定値の時間
mdl.Hazard(:,1)
(既定値) | 数値列ベクトル | 数値列ベクトルの cell 配列
生存推定値の時間。次のいずれかとして返されます。
非階層化モデルの場合、
Tout
は、学習セットの時間が格納された並べ替えられた数値列ベクトルです。階層化モデルの場合、
Tout
は、各階層化レベルについての学習セットの学習時間が格納された並べ替えられた数値列ベクトルの cell 配列です。
ベクトル coxMdl.Hazard(:,1)
には、階層化モデルと非階層化モデルの両方についての時間が格納されます。階層化モデルの場合、異なる階層化レベルの時間がエントリ 0 で区切られます。
データ型: double
| cell
バージョン履歴
R2021a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)