生存曲線と群間比較
このページでは、Kaplan-Meier法による生存曲線の描画と、Logrank検定、Logrank trend検定を用いた生存データの群間比較の機能を提供します。
解説
生存率
生存率とは、特定の時間内に特定のイベント(例えば、死亡や疾病の再発)が発生しない確率を指します。 この確率は、時間の経過とともに変化し、それを視覚的に表現するのが生存曲線です。
- Kaplan-Meier法: この方法は、時間の経過とともに生存率がどのように変化するかを示す生存曲線を提供します。
- 各時点での生存率は、その時点までの生存者とイベント(例えば、死亡)の数に基づいて計算されます。これにより、時間とともに生存率がどのように変化するかを確認できます。
群間比較
- Logrank検定: 二つ以上のグループ間で生存時間に統計的に有意な差があるかどうかを評価する手法です。
- Logrank trend検定: 複数のグループ間で生存時間に一定の傾向(例えばリスクの増加や減少)があるかを評価します。
群間比較は、必要最小限のデータをクラウドに送信し、R にて解析を行います。
設定
- 観察期間: 観察開始から、観察打ち切りもしくはイベント発生までの期間です。
- 日数を年に変換するなどの機能がありますので、事前の変換処理は不要です。
- 日付や時刻のデータを観察期間として使用する場合は、「データ処理」メニューの「日付・時刻計算」機能にて事前に変換処理を行ってください。
- イベント (二値変数): 例えば「死亡」などのイベントの有無を設定します。
- ユーザーは任意の値をイベントとして設定できますが、デフォルトでは “1” がイベントの発生、“0” が観察打ち切りを意味します。
- どちらか片方だけを指定し、もう片方は「それ以外」にできますので、必ずしも二値変数でなくとも構いません。
- 群分類 (カテゴリカル変数): 異なるグループや治療法に基づいてデータを分類します。
- 順序: ドラッグ&ドロップで群の順序を変更できます。
- グラフにおける凡例の順序が変わるだけでなく、Logrank trend 検定における順序の前提となります。
- 描画設定:
- ライン設定: 線の種類(実線、点線、破線)、太さ、色を選択できます。
- マーカー設定: 生存曲線上のイベントを示すマーカーの形状と色を選択できます。
- 95%信頼区間の表示: 生存曲線に95%信頼区間を表示できます。
- ラインの色を半透明にして塗りつぶす形の表示となります。
- 生存率のパーセンテージ表示: 生存率をパーセンテージで表示します。
- Number at riskの表示: 各時間点での有効症例を表示します。
- これは、その時点でイベントのリスクがある個体の数を意味します。
分類内容 | 値 | |
{{ item.tag }} |
データの取り扱い
- データインポート
- データの読み込みは、ブラウザ内で完結し、外部へのデータ送信は発生しません。
- データ保持
- 読み込んだデータはブラウザ内に保持されます。
- ブラウザのセッションが終了または全てのタブが閉じられると、保持していたデータは自動的に破棄されます。
- データの安全性
- ブラウザがクラッシュした場合でも、10分経過すれば次回の起動時にデータは安全に消去されます。
- 共用のPCでの使用も考慮し、データの外部漏洩のリスクを最小化しています。
クラウド R を利用する時のデータ送信
- 最小限のデータ送信
- 外部のRサーバーへ送信されるデータは、数値計算に必要な最小限のセットに制限されています。
- 送信データは解析に必要なサブセットのみに限られます。
- ユーザーコントロール下のデータ送信
- 送信前に、どのデータが外部サーバーへ送信されるのか内容を確認することが可能です。
- データの送信はユーザーの操作により行われ、自動的な送信は行いません。
- クラウド R 出力結果の保持
- クラウド R からの出力結果は、将来の自動翻訳や自動解説の機能実現のため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
- 通信経路も全て暗号化していますので、たとえプライバシーに関わる情報が含まれていたとしても、通常は漏洩する恐れはありません。
AI による解説を利用する時のデータ送信
- 最小限のデータ送信
- 外部のAIサーバーへ送信されるデータは、クラウド R の出力結果と、用いた統計手法の徐放です。
- ただし、クラウド R の出力結果に連続した数値データが含まれる場合は、AI にデータ形式を認識させる目的で、連続データの最初の行のみを送信します。
- クラウド R 出力結果の保持
- AI による解説内容は、将来の品質向上などのため、サーバーがデータベースに保持します。
- その際に、送信者の情報や、計算元となるデータなど、プライバシーに関わる情報は保持しません。
Reactive stat において、統計データの変数は、通常の数値や文字列として扱われます。 したがって、日付や時間の概念は直接的にはサポートされていません。
統計計算を行う際には、日付や時間の差分を数値として事前に用意しておく必要があります。
チェックされた行が削除対象となります
欠損値を含むカラムを選択
カラムを選択
削除対象の行
元データ
id | カラム1 | カラム2 |
---|---|---|
1 | A | B |
2 | C | D |
変換後のデータ
id | データ名 | 値 |
---|---|---|
1 | カラム1 | A |
1 | カラム2 | B |
2 | カラム1 | C |
2 | カラム2 | D |
{{ replaced_script }}
R の出力結果
{{ rResult }}
R output figures
AI による R 出力結果の解説
データ
設定
生存曲線
Kaplan-Meier法
Kaplan-Meier法は生存データの解析を行い、時間とともに生存率がどのように変化するかを示す生存曲線を提供します。
\[ S(t) = P(T > t) = \prod_{t_i < t} \left( 1 - \frac{d_i}{n_i} \right) \]
ここで、
- \(S(t)\)は時間\(t\)での生存関数
- \(T\)は生存時間
- \(t_i\)は各ユニークなイベント時間
- \(d_i\)は時間\(t_i\)でのイベント(死亡)数
- \(n_i\)は時間\(t_i\)でリスクにさらされている個体の数
Logit法による生存曲線の信頼区間
信頼区間の計算は、Kaplan-Meier法を用いて推定された生存関数の信頼性を評価するために行われます。 様々な手法が提唱されていますが、多用されるのは log-log法とlogit法です。 Reactive stat ではlogit法を採用しています。
\[ \text{logit}(S(t)) = \log \left( \frac{S(t)}{1 - S(t)} \right) \]
生存関数\(S(t)\)をオッズ比に変換した後、95%信頼区間を次のように計算します。
\[ \text{CI}(S(t)) = \text{logit}^{-1} \left( \text{logit}(S(t)) \pm z \times SE(\text{logit}(S(t))) \right) \]
ここで、
- \(SE(\text{logit}(S(t)))\)は\(\text{logit}(S(t))\)の標準誤差
- \(z\)は標準正規分布からのzスコア(一般的に95%信頼区間の場合 z = 1.96)
逆ロジット変換\(\text{logit}^{-1}\)は次の通りです。
\[ \text{logit}^{-1}(x) = \frac{e^x}{1 + e^x} \]
結果として得られる信頼区間は、生存関数の曲線にプロットされ、生存曲線の信頼性を視覚的に評価するのに使用されます。
Logrank検定
Logrank検定は、二つ以上のグループの生存曲線を比較し、生存時間に統計的に有意な差が存在するかどうかを評価するための手法です。
\[ \chi^2 = \frac{\left( \sum_{i=1}^{g} O_i - E_i \right)^2}{\sum_{i=1}^{g} V_i} \]
ここで、
- \(g\)はグループの数
- \(O_i\)はグループ\(i\)の観測されたイベント数
- \(E_i\)はグループ\(i\)の期待されるイベント数
- \(V_i\)はグループ\(i\)の分散
Logrank検定の実施
Logrank検定では、各グループにおけるイベント(例えば死亡や再発)の観測された数と期待される数の差を計算し、その差が偶然によるものかどうかを評価します。 イベントの期待値と分散は、全グループを通じたイベントの発生確率に基づいて計算されます。
\[ E_i = n_i \times \frac{\text{全イベント数}}{\text{全リスク集団数}}, \quad V_i = n_i \times \frac{\text{全イベント数}}{\text{全リスク集団数}} \times \left(1 - \frac{\text{全イベント数}}{\text{全リスク集団数}}\right) \times \frac{\text{全リスク集団数} - n_i}{\text{全リスク集団数} - 1} \]
ここで、
- \(n_i\)はグループ\(i\)のリスク集団数
- \(E_i\)はグループ\(i\)の期待されるイベント数
- \(V_i\)はグループ\(i\)の分散
計算された\(\chi^2\)統計量は、カイ二乗分布を用いてP値を計算するために使用されます。
統計的に有意なP値(通常は0.05以下)は、グループ間で生存時間に有意な違いが存在することを示唆します。
Logrank trend 検定
Logrank trend 検定は、複数のグループ間で生存時間に一定の傾向があるかどうかを評価するために使用される統計手法です。この検定は、グループ間で生存時間に順序性(例えば、リスクの増加または減少)が存在するかを検証します。重要な前提として、Cox比例ハザードモデルの仮定を満たしていることが必要です。この仮定は、各群において、ハザード比が時間に依存しないことを意味します。
\[ \chi^2 = \frac{\left( \sum_{i=1}^{g} w_i (O_i - E_i) \right)^2}{\sum_{i=1}^{g} w_i^2 V_i} \]
ここで、
- \(g\)はグループの数
- \(w_i\)はグループ\(i\)に割り当てられたスコア
- \(O_i\)はグループ\(i\)の観測されたイベント数
- \(E_i\)はグループ\(i\)の期待されるイベント数
- \(V_i\)はグループ\(i\)の分散
Logrank trend 検定の実施
Logrank trend 検定では、各グループに数値のスコアを割り当てます。これは通常、グループの順序に基づいて連番(1, 2, 3, ...)を使用します。 検定は、グループごとの観測されたイベント数と期待されるイベント数の差にスコアを掛け、この加重和が偶然によるものかどうかを評価します。
\[ E_i = n_i \times \frac{\text{全イベント数}}{\text{全リスク集団数}} \]
\[ \quad V_i = n_i \times \frac{\text{全イベント数}}{\text{全リスク集団数}} \times \left(1 - \frac{\text{全イベント数}}{\text{全リスク集団数}}\right) \times \frac{\text{全リスク集団数} - n_i}{\text{全リスク集団数} - 1} \]
ここで、
- \(n_i\)はグループ\(i\)のリスク集団数
- \(E_i\)はグループ\(i\)の期待されるイベント数
- \(V_i\)はグループ\(i\)の分散
計算された\(\chi^2\)統計量は、カイ二乗分布を用いてP値を計算するために使用されます。
統計的に有意なP値(通常は0.05以下)は、グループ間で生存時間に統計的に有意な傾向が存在することを示唆します。