fitcox
説明
関数 fitcox
は、寿命データについてのコックス比例ハザード モデルを作成します。基本的なコックス モデルには、ハザード関数 h0(t) とモデル係数 b が含まれており、予測子 X
についての時間 t におけるハザード率は次のようになります。
係数 b は時間に依存しません。fitcox
は、モデル係数 b とハザード率 h0(t) の両方を推定し、それらを結果の CoxModel
オブジェクトにプロパティとして格納します。
完全なコックス モデルは、基本的なモデルを拡張したもので、異なるベースラインを基準とするハザードや階層化変数などが含まれています。コックス比例ハザード モデルの拡張を参照してください。
例
コックス比例ハザード回帰の推定
ワイブル確率変数では、形状パラメーターが同じであればハザード率は比例します。ワイブル分布を参照してください。スケール パラメーターを 、形状パラメーターを とすると、時間 におけるハザード率は次のようになります。
.
ワイブル分布から疑似無作為標本を生成します。スケール パラメーターは 1、5、および 1/3 で、形状パラメーターはいずれも B
とします。
rng default % For reproducibility B = 2; A = ones(100,1); data1 = wblrnd(A,B); A2 = 5*A; data2 = wblrnd(A2,B); A3 = A/3; data3 = wblrnd(A3,B);
データの table を作成します。予測子は 3 つの変数の型で、1、2、または 3 です。
predictors = categorical([A;2*A;3*A]); data = table(predictors,[data1;data2;data3],'VariableNames',["Predictors" "Times"]);
データにコックス回帰を当てはめます。
mdl = fitcox(data,"Times")
mdl = Cox Proportional Hazards regression model Beta SE zStat pValue _______ _______ _______ __________ Predictors_2 -3.5834 0.33187 -10.798 3.5299e-27 Predictors_3 2.1668 0.20802 10.416 2.0899e-25 Log-likelihood: -1197.917
rates = exp(mdl.Coefficients.Beta)
rates = 2×1
0.0278
8.7301
寿命データへのコックス比例ハザード モデルの当てはめ
電球の寿命のシミュレーション データが格納された lightbulb
データ セットでコックス比例ハザード回帰を実行します。電球データの 1 列目には 2 種類の電球の寿命 (時間単位) が含まれています。2 列目には電球が蛍光灯と白熱灯のどちらであるかを示すバイナリ変数が含まれています。0 は電球が蛍光灯であることを示し、1 は白熱灯であることを示します。3 列目には打ち切り情報が含まれています。0 は電球が故障するまで観測されたことを示し、1 は観測が打ち切られたことを示します。
lightbulb
データ セットを読み込みます。
load lightbulb
電球の寿命について、打ち切りを考慮してコックス比例ハザード モデルを当てはめます。予測子変数は電球のタイプです。
coxMdl = fitcox(lightbulb(:,2),lightbulb(:,1), ... 'Censoring',lightbulb(:,3))
coxMdl = Cox Proportional Hazards regression model Beta SE zStat pValue ______ ______ ______ __________ X1 4.7262 1.0372 4.5568 5.1936e-06 Log-likelihood: -212.638
を評価して、蛍光灯電球と比較した白熱灯電球のハザード率を求めます。
hr = exp(coxMdl.Coefficients.Beta)
hr = 112.8646
ハザード率の推定値は = 112.8646 です。つまり、白熱灯電球の推定ハザードは蛍光灯電球のハザードの 112.86 倍であることを意味します。coxMdl.Coefficients.pValue
の値が小さいことから、2 種類の電球のハザード率が同じになる、つまり Beta
= 0 になる可能性は無視できます。
入力引数
X
— 予測子の値
行列 | テーブル
予測子の値。行列または table として指定します。
行列には、予測子ごとに 1 つの列と観測値ごとに 1 つの行が格納されます。
table には、観測値ごとに 1 つの行が格納されます。table には予測子に加えて時間のデータも格納できます。
既定では、予測子データが table 内にある場合、fitcox
は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列のいずれか、あるいは文字ベクトルの cell 配列である場合に、変数を categorical であると見なします。予測子データが行列である場合、fitcox
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 CategoricalPredictors
を使用してそれらを指定します。
X
、T
、'Frequency'
の値、または 'Stratification'
の値に NaN
値が含まれている場合、fitcox
はコックス モデルを当てはめるときに、NaN
値がある行をすべてのデータから削除します。
データ型: double
| table
| categorical
T
— イベント時間
実数の列ベクトル | 実数の 2 列の行列 | table X
の列の名前 | table X
のウィルキンソンの表記法による式
イベント時間。次のいずれかとして指定します。
実数の列ベクトル。
開始時間と終了時間を表す 2 つの列からなる実数の行列。
table
X
の列の名前。table
X
のウィルキンソンの表記法による式。たとえば、table の列'x'
と'y'
をモデルに含める場合は次のように指定します。'T ~ x + y'
ウィルキンソンの表記法を参照してください。
ベクトルまたは行列の要素について、T
の行数は X
の行数と同じでなければなりません。
時変係数をもつモデルを当てはめるには、2 列の形式の T
を使用します。共変量が時間に依存するコックス比例ハザード モデルを参照してください。
データ型: single
| double
| char
| string
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後ろにする必要がありますが、ペアの順序は関係ありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: 打ち切り値 cens
を含むデータを当てはめるには、'Censoring',cens
を指定します。
Baseline
— ベースライン ハザードの計算対象となる X
値
mean(X)
(連続予測子の場合の既定値) | 0
(カテゴリカル予測子の場合の既定値) | 実数スカラー | 実数の行ベクトル
ベースライン ハザードの計算対象となる X
値。実数のスカラーまたは行ベクトルとして指定します。Baseline
が行ベクトルの場合、長さは予測子の数であるため、ベースラインは予測子ごとに 1 つになります。
連続予測子の既定のベースラインは mean(X)
であるため、それらの予測子に対する X
の既定のハザード率は h(t)*exp((X – mean(X))*b)
です。カテゴリカル予測子の既定のベースラインは 0
です。0 を基準にしてすべての予測子に対するベースラインを計算するには「0
」を入力します。これにより、X
のハザード率は h(t)*exp(X*b)
になります。ベースラインを変更するとハザード率は変わりますが、係数推定値には影響しません。
特定されたカテゴリカル予測子の場合、fitcox
はダミー変数を作成します。fitcox
は、カテゴリの数よりも 1 つ少ないダミー変数を作成します。詳細については、ダミー変数の自動作成を参照してください。
例: 'Baseline',0
データ型: double
Beta
— 係数の初期値
0.01/std(X)
(既定値) | 数値ベクトル
係数の初期値。係数の値の数値ベクトルとして指定します。これらの値から fitcox
で実行される尤度最大化の反復が開始されます。
データ型: double
CategoricalPredictors
— カテゴリカル予測子のリスト
正の整数のベクトル | logical ベクトル | 文字行列 | string 配列 | 文字ベクトルの cell 配列 | 'all'
カテゴリカル予測子のリスト。次の表のいずれかの値として指定します。
値 | 説明 |
---|---|
正の整数のベクトル | ベクトルの各エントリは、カテゴリカル変数が含まれている予測子データ (X ) の列に対応するインデックス値です。 |
logical ベクトル | true というエントリは、予測子データ (X ) の対応する列がカテゴリカル変数であることを意味します。 |
文字行列 | 行列の各行は table X 内の予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。文字行列の各行が同じ長さになるように、名前を余分な空白で埋めてください。 |
文字ベクトルの cell 配列または string 配列 | 配列の各要素は table X 内の予測子変数の名前です。名前は PredictorNames のエントリに一致しなくてはなりません。 |
'all' | すべての予測子がカテゴリカルです。 |
既定では、予測子データがテーブル内にある場合、fitcox
は、その変数が logical ベクトル、categorical ベクトル、文字配列、string 配列のいずれか、あるいは文字ベクトルの cell 配列である場合に、変数を categorical であると見なします。予測子データが行列である場合、fitcox
はすべての予測子が連続的であると見なします。他の予測子をカテゴリカル予測子として指定するには、名前と値の引数 'CategoricalPredictors'
を使用してそれらを指定します。
特定されたカテゴリカル予測子の場合、fitcox
はダミー変数を作成します。fitcox
は、カテゴリの数よりも 1 つ少ないダミー変数を作成します。詳細については、ダミー変数の自動作成を参照してください。
例: 'CategoricalPredictors','all'
データ型: single
| double
| logical
| char
| string
| cell
Censoring
— 打ち切りのインジケーター
0 の配列 (既定値) | 0 と 1 の配列 | table X
の列の名前
打ち切りのインジケーター。X
と同じ行数の boolean ベクトル、または table X
の列の名前として指定します。右側打ち切りの観測値の場合は 1、完全に観測された観測値の場合は 0 を使用します。既定の設定では、すべての観測値が完全に観測されます。たとえば、打ち切りデータのコックス比例ハザード モデルを参照してください。
例: 'Censoring',cens
データ型: logical
Frequency
— 観測値の頻度または重み
1 の配列 (既定値) | 非負のスカラー値のベクトル
OptimizationOptions
— アルゴリズム制御パラメーター
構造体
fitcox
で解を推定するために使用する反復アルゴリズムのアルゴリズム制御パラメーター。構造体として指定します。この構造体の作成には statset
を使用します。パラメーター名と既定値については、次の表を参照するか「statset('fitcox')
」と入力してください。
表にある "終了許容誤差" とは、内部の反復によるその値の変化が許容値未満になると反復が停止することを意味します。
構造体のフィールド | 説明 | 値 |
---|---|---|
Display | コマンド ラインに返す情報の量 |
|
MaxFunEvals | 関数評価の最大数 | 正の整数 (既定値は 200 ) |
MaxIter | 最大反復回数 | 正の整数 (既定値は 100 ) |
TolFun | 尤度の変化の終了許容誤差 (コックス比例ハザード モデルを参照) | 正のスカラー (既定値は 1e-8 ) |
TolX | パラメーター (予測子の推定) の変化の終了許容誤差 | 正のスカラー (既定値は 1e-8 ) |
例: 'OptimizationOptions',statset('TolX',1e-6,'MaxIter',200)
PredictorNames
— 予測子変数名
一意な名前の string 配列 | 一意な文字ベクトルの cell 配列
予測子変数名。一意な名前の string 配列または一意な文字ベクトルの cell 配列として指定します。'PredictorNames'
の機能は、学習データの提供方法によって決まります。
X
を数値配列として指定した場合、'PredictorNames'
を使用してX
内の予測子変数に名前を割り当てることができます。PredictorNames
内の名前の順序は、X
の列の順序に一致しなければなりません。つまり、PredictorNames{1}
はX(:,1)
の名前、PredictorNames{2}
はX(:,2)
の名前であり、他も同様です。また、size(X,2)
とnumel(PredictorNames)
は等しくなければなりません。既定では
PredictorNames
は{'X1','X2',...}
です。
X
を table として指定した場合、'PredictorNames'
を使用して学習に使用する予測子変数を選択できます。つまり、fitcox
は、学習中にPredictorNames
の予測子変数と時間変数のみを使用します。PredictorNames
はX.Properties.VariableNames
のサブセットでなければならず、時間変数T
の名前を含めることはできません。既定では、すべての予測子変数の名前が
PredictorNames
に格納されます。学習用の予測子は、
'PredictorNames'
とウィルキンソンの表記法による式の両方ではなく、いずれか一方を使用して指定します。
例: 'PredictorNames',{'Sex','Age','Weight','Smoker'}
データ型: string
| cell
Stratification
— 階層化変数
[]
(既定値) | 実数値の行列 | table X
の列の名前 | カテゴリカル変数の配列
階層化変数。実数値の行列、table X
の列の名前、またはカテゴリカル変数の配列として指定します。この行列の行数は T
と同じでなければならず、各行は 1 つの観測値に対応しなければなりません。
既定の []
は階層化変数なしです。
X
、T
、'Frequency'
の値、または 'Stratification'
の値に NaN
値が含まれている場合、fitcox
はコックス モデルを当てはめるときに、NaN
値がある行をすべてのデータから削除します。
例: 'Stratification',Gender
データ型: single
| double
| char
| string
| categorical
TieBreakMethod
— 同時発生の故障時間の処理メソッド
'breslow'
(既定値) | 'efron'
同順位の故障時間の処理方法。'breslow'
(Breslow の方法) または 'efron'
(Efron の方法) として指定します。同時発生イベントの部分尤度関数を参照してください。
例: 'TieBreakMethod','efron'
データ型: char
| string
バージョン履歴
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)