時間依存性変数を含むCox比例ハザード回帰
解説
このページでは、時間依存性変数 (Time-Dependent Covariate) を含むCox比例ハザード回帰を行う機能を提供します。
観察期間中に値が変化する変数 (例: 治療開始、合併症発症、移植実施など) を適切にモデル化し、不死時間バイアス (Immortal Time Bias) を回避した正確なハザード比を推定します。
不死時間バイアスとは
不死時間バイアスは、観察開始後に発生するイベント (例: 治療開始) を、あたかも観察開始時点から存在していたかのように扱うことで生じるバイアスです。
上図の例では、患者Aは4ヶ月目に治療を開始し、10ヶ月目に死亡しました。
- 誤った解析 (時間固定): 患者Aを「治療あり群」として0ヶ月目から10ヶ月目まで全期間カウント → 治療群の生存期間が過大評価される
- 正しい解析 (時間依存性): 0〜4ヶ月は「治療なし」、4〜10ヶ月は「治療あり」として分けてカウント → 正確なハザード比が得られる
時間依存性変数の指定方法
このアプリでは、状態が「なし→あり」に変化した時点を記録したカラムを指定します。
| 値 | 解釈 |
|---|---|
| 正の数値 (例: 4) | その時点で なし→あり に変化 |
| 0 または 負の値 | 観察開始時点ですでに あり |
| 観察期間以上の値 | 全期間で なし (変化なし) |
| 空欄・非数値 | 全期間で なし (変化なし) |
データ例
| ID | 追跡月数 | 死亡 | 化学療法開始月 | 解釈 |
|---|---|---|---|---|
| 1 | 10 | 1 | 4 | 4ヶ月目に化学療法開始、10ヶ月目に死亡 |
| 2 | 12 | 0 | 化学療法なし、12ヶ月で打ち切り | |
| 3 | 8 | 1 | 0 | 観察開始時から化学療法中、8ヶ月目に死亡 |
| 4 | 15 | 0 | 20 | 15ヶ月時点で化学療法未開始、打ち切り |
データ形式の図解
内部処理: Counting Process形式への変換
アプリ内部では、データを自動的に Counting Process形式 (start, stop形式) に変換して解析します。
例: ID=1 (追跡月数=10, 死亡=1, 化学療法開始月=4) の場合
| start | stop | event | 化学療法 |
|---|---|---|---|
| 0 | 4 | 0 | なし |
| 4 | 10 | 1 | あり |
この変換により、同一患者が複数の時間区間に分割され、各区間での状態が正しく反映されます。
※ この変換は自動的に行われ、ユーザーは意識する必要はありません。
設定と機能
- 観察期間: 観察開始から、イベント発生または打ち切りまでの期間です。
- 時間依存性変数と同じ単位 (日、月、年など) で記録してください。
- イベント (二値変数): 例えば「死亡」などのイベントの有無を設定します。
- ユーザーは任意の値をイベントとして設定できますが、デフォルトでは “1” がイベントの発生、“0” が観察打ち切りを意味します。
- 時間依存性変数: 状態が変化した時点を示すカラムを指定します (複数選択可)。
- なし→ありの一方向の変化のみに対応しています。
- 空欄や非数値は「変化なし (全期間でなし)」として扱われます。
- 説明変数: 時間固定の共変量を指定します。連続変数とカテゴリ変数は明示的に分けて設定します。
- 層別化変数: 比例ハザード性の仮定を満たさない変数がある場合、その変数を層別化変数に指定することで対処できます。
比例ハザード性の検定
比例ハザード性の検定 (Schoenfeld残差に基づく検定) は常に実行されます。p値が0.05未満の変数がある場合は、その変数を層別化変数に移動することで対処できる場合があります。
完全分離について
時間依存性変数の値によってイベントの有無がほぼ完全に決まる場合 (例: 治療を受けた人が全員死亡、または全員生存)、完全分離 (Complete Separation) が発生し、ハザード比が極端な値 (非常に大きいまたは非常に小さい) になります。この場合、推定値は信頼できません。アプリは完全分離を検出し、警告を表示します。
使用上の注意
- 時間依存性変数はなし→ありの一方向の変化のみに対応しています。あり→なしの変化 (例: 治療中止) を扱う場合は、事前にデータを加工してください。
- 複数の時間依存性変数を同時に指定できます。各変数の変化時点で区間が分割されます。
- 競合リスクが存在する場合は、このアプリではなく「競合リスク解析」の使用を推奨します。時間依存性変数とFine-Gray回帰の組み合わせは統計学的に問題があるため、本アプリでは対応していません。
アプリ
| 分類内容 | 値 | |
| {{ item.tag }} |
データの取り扱い
- データインポート
- データの読み込みは、ブラウザ内で完結し、外部へのデータ送信は発生しません。
- データ保持
- 読み込んだデータはブラウザ内に保持されます。
- ブラウザのセッションが終了または全てのタブが閉じられると、保持していたデータは自動的に破棄されます。
- データの安全性
- ブラウザがクラッシュした場合でも、10分経過すれば次回の起動時にデータは安全に消去されます。
- 共用のPCでの使用も考慮し、データの外部漏洩のリスクを最小化しています。
クラウド R を利用する時のデータ送信
- 最小限のデータ送信
- 外部のRサーバーへ送信されるデータは、数値計算に必要な最小限のセットに制限されています。
- 送信データは解析に必要なサブセットのみに限られます。
- ユーザーコントロール下のデータ送信
- 送信前に、どのデータが外部サーバーへ送信されるのか内容を確認することが可能です。
- データの送信はユーザーの操作により行われ、自動的な送信は行いません。
- クラウド R 出力結果の保持
- クラウド R からの出力結果は、将来の自動翻訳や自動解説の機能実現のため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
- 通信経路も全て暗号化していますので、たとえプライバシーに関わる情報が含まれていたとしても、通常は漏洩する恐れはありません。
AI による解説を利用する時のデータ送信
- 最小限のデータ送信
- 外部のAIサーバーへ送信されるデータは、クラウド R の出力結果と、用いた統計手法の徐放です。
- ただし、クラウド R の出力結果に連続した数値データが含まれる場合は、AI にデータ形式を認識させる目的で、連続データの最初の行のみを送信します。
- クラウド R 出力結果の保持
- AI による解説内容は、将来の品質向上などのため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
Reactive stat において、統計データの変数は、通常の数値や文字列として扱われます。 したがって、日付や時間の概念は直接的にはサポートされていません。
統計計算を行う際には、日付や時間の差分を数値として事前に用意しておく必要があります。
チェックされた行が削除対象となります
削除対象の行
データ入力
AI による R コードの解説
R の出力結果
R出力図形
AI による R 出力結果の解説
- データ: カラム名 (列名) をそのまま記述するか、"列名" のようにダブルクォートで挟んで指定
- 算術演算子: +, -, *, /, ()
- 基本関数: abs(), sqrt(), pow(), exp(), log(), log10()
- 三角関数: sin(), cos(), tan(), asin(), acos(), atan()
- 丸め関数: round(), floor(), ceil()
体重 / pow(身長, 2), "体重" / ("身長" * "身長")
{{ column }}