二択で迷ったらアグレッシブな方を選べ

本ブログのコンセプトは 「外科系臨床医に臨床研究について知ってもらう」です。自分で勉強したことを備忘録として気ままに書いていますので、情報の真偽については責任を負いかねます。また専門性が高い方にとっては内容が浅い点、分量が多くて読み辛い点もご了承くださいませ。

カテゴリ:研究の型別資料 > 臨床予測モデル

Penalised regressionについて少し学んだところで、実例をみてみることに。変数選抜までしようと思ったらlassoになるようなのですが、lassoのお手本論文はないかな~と最近全然論文読んでいないので、Core clinical journalで「lasso」を探してみます。するとJBJSに面白そうな論文が。方法論的にお手本になるかどうかはちと不安ですが、折角なので読んでみます。

Predicting Occurrence of Spine Surgery Complications Using "Big Data" Modeling of an Administrative Claims Database

研究疑問 :脊椎手術合併症予測モデルの開発と検証
研究デザイン :データベース研究
セッティング :2006~2020の米レセプトデータベース

P 脊椎手術患者
E 各リスク因子あり
C 各リスク因子なし
O 主要:何らかの合併症
  副次:合併症数、入院期間、入院費、再入院、再手術

脊椎手術後の合併症を予測する予測モデルはなかったので、大規模データベースを使って開発と検証を行ってみました!という研究。

【方法】
・脊椎手術病名がついた患者を特定
 - 変性疾患、外傷、腫瘍、感染に分類
 - 並存症の病名とも収集
 - 術後1ヶ月以内の各種新規病名を合併症と定義
・予測因子を入院、外来、調剤、医師/病院への支払いレセプトから収集
 - 術前診断、11並存症、頚椎/胸腰椎、前方/後方、癒合、
   インスツルメント、多椎間、BMP
・まず開発コホート(80%)で主要アウトカムの予測モデル作成
 - 通常のロジスティック回帰にすべての因子を投入?
 - 術式で層化した予測モデルも作成
・残り20%で検証
・交互作用項を含めたモデルでlasso回帰も施行
・CARTとboostingによるモデル開発も施行 ←なにこれ…

【結果と結論】 *結果みたいわけじゃないので簡単に
・対象は約28万人
・合併症は14.0%で、先行研究と矛盾なし
・標準、lasso、CART、boostingではCARTの性能が劣った
 - boostingは標準回帰とほぼ同じ結果
 - なので標準回帰とlassoに注目
・でもだいたいAUC0.70前後で大差なし
 - Charlsonの予測能0.61より優れていた

などなどで、術前説明に役立つでしょ?という結論。

【批判的吟味】★★★★
サンプルサイズが莫大だし、イベントも14%あれば統計学的にはやりたい放題の羨ましい研究。ただ、いわゆるBig Smallデータ(浅くて多いデータ)で予測モデル作っても、臨床にどう役立てていいかピンときません。対象の選定も、リスク因子やアウトカムすべてがレセプト上のコードで定義されていますので、臨床使用するには粗すぎて…性能も妥当性検証までして信頼できそうなのは素晴らしいですが、AUC0.7で臨床意思決定に使うのは微妙です。あと、モデル作ったのはいいけど、どう臨床で使うかの説明がない!のでそもそも使い様がない…一応Nの暴力で★4つにはしますが。

というか、みたかったlassoの結果がAppendixになっていて、Ovidでのアクセスではみれず涙。結局細かなところがさっぱりわからなかったのは最大の誤算でした…

【コメント】
Lasso regressionについては3000件ほど既に既報があるようです。数割を占めるMe〇icineの文献はスルーするとして、いわゆるNEJM、Lancet、JAMA、BMJは全然hitしないということは、まだそこまで受け入れられている方法論ではない?というより小細工しなきゃな小規模研究はそもそも選外なのかな。悲しいかなJBJSは肩透かしだったので、次はJAMA₋IMなどをお手本に読んでみることにします。Lassoの勉強に一日使ってしまった…一応STATAで数字出せるようにはなったけど、時間が足りねぇ…

臨床予測モデル(CPM)についての知見を深めていきます。おそらく実際のところ、問題はサンプルサイズ(アウトカム数)が少ないのに、予測因子候補が多すぎることに集約されるのではないでしょうか?とりあえず数字が出るので、何でもかんでもStepwiseに放り込んで、α=0.05をカットオフにして、強引に数個の因子に選抜してAUC0.8だ!みたいな論文がとても多いです。でもoverfitの塊で実用性ゼロ、ということがわかっている人は(査読者ふくめて)かなり少数派なのが現実…

というわけで、解析で少しはマトモなことはできないかな?と困ったときのBMJ様のResearch Methods & Reportingを渉猟し、めぼしいものを読んでみます。Penalised regressionのお話。自分の興味があるところを自分の都合のいいようにまとめている点はご容赦を。

How to develop a more accurate risk prediction model when there are few events

【はじめに】
・少ないイベントで開発されたCPMは、だいたい外的検証でこける
 - 開発集団に含まれたノイズがモデルに反映される
 - Overfittingの問題
 - 予測確率が低い人を過小評価、高い人を過大評価する
 - のでdecision makingに悪影響
・本記事ではridgeとlassoについて解説します
 - TRIPODでも推奨されてるよ

【サンプルサイズの問題】
・経験的に、イベント数/予測因子数(EPV)≥ 10が必要とされる
 - 変数選抜する際は、選抜前の因子数で計算すること
・CPM作るときはまず文献レビューと専門家の意見
 - 普通EPV ≥10はムリ
・なので、単変量解析の一次選抜か、Stepwise選抜が用いられる
 - いずれにしろ、変数選抜が不安定であることが大問題
 - ちょっとデータがかわっただけで選抜される変数がかわる

【Shrinkage methods】
・通常の回帰では係数に制限はない
 - ので、イベント少ないと回帰係数の幅が大きくなる
 -  結果としてoverfittingをもたらす
・Shrinkage methodsはoverfitingの問題を緩和する可能性がある
 - 回帰係数を0に向かって縮小する
・一番シンプルなのは、標準回帰で推定後に共通の値で縮小する
 - 例えば20%(bootstrappingで決めれる)
 - でもEPVが小さすぎるとうまくいかない
 - ので本記事ではこれ以上触れません

【Penalised regression】
・Penalised regressionはEPV < 10でも効果的
・Penalised regressionは以下の手順を行う
 - まずモデルを決める(logistic、Cox回帰など)
 - データから回帰係数を算出する
 - その際に回帰係数に制限を設ける
・Penalised regressionにはいくつかの方法がある
 - 本記事ではridgeとlassoを紹介する
 - どちらもRやSPSSで使える(STATAは!?)

<Ridge regression>
・回帰係数の二乗和が閾値を超えないという制限を設ける
・閾値はcross valodationで算出する
 - データセットをk群に分割する
 - (k-1)群でモデルを開発し、除外した1群で検証する
 - 除外群を毎回かえて、k回試行する
・通常lassoよりこっち
<Lasso regression>
・回帰係数の絶対値の和が閾値を超えないという制限を設ける
・Ridgeと異なり、最終モデルから効果的に予測変数を除外できる
 - 一部の回帰係数を0にして除外?
 - より単純なモデルにしたければ、ridgeよりこっち

【実例紹介】
・機械弁患者3118人を対象に、弁の故障をイベントとした予測モデル
 - イベント56でリスク因子10(EPV5.6 < 10)
 - ロジスティック回帰、ridge、lassoの回帰係数と較正能を比較
 - Backwards stepwise (BS: α<0.15)も含めた4方法の性能を内的検証で比較
・ridge > lassoで回帰係数が縮小された
 - とくに高リスク者の予測確率が小さくなった
・各モデルのcalibration slopeは以下で、ridgeとlassoが優秀
 - ロジスティック回帰 0.76 (0.65, 0.99)
 - ridge  1.01
 - lasso 0.94
 - BS 0.77
・各モデルのAUCはだいたい同じ
 - 3モデルのAUCはすべて0.80 (0.78, 0.82)、BSも0.795

【まとめ】
・イベント数が少ない場合は、通常の単変量での選抜やStepwiseは避けるべき
 - 低リスク群と高リスク群を誇張する
 - のでpenalised regressionを使用すべき
・既存エビデンスが利用できるなら、penalised regressionよりいいかも
・極端に発生が少ない予測因子があるなら、penalised regressionも不適当かも
 
【コメント】
うーん単変量&BS選抜した予測モデル投稿してます…かなり丁寧に作ったので、既存モデルよりは優れている自信があります。が、低リスクと高リスクを効果的に識別できる!というよくばり結論はアウトに近い…まー兎に角外的検証の結果次第ですが。外的検証→性能もひとつなら前向き作り直し→更に外的検証、という一連の流れをやらないと無責任なんですね…どんだけ大変なん…脊椎領域でそれやってるの1つもみたことない…

あと私の愛用するSTATA15ではlasso&ridgeはできない(STATA16から搭載)模様。研究費獲ったらそれでup gradeするというケチ根性で、とりあえずpackageで対応できないか探してみます。結局lassoなら変数選抜できるってことか。この記事ではわからなかったので、更に勉強しなければ…普通に臨床しながらやることじゃ〇△✕

予測モデルを開発するうえでキモとなるのが「どのリスク因子をモデルに含めるか」かと思います。Steyerberg先生の黄色い本ではどう取り扱うのでしょうか。というわけで、ようやく統計学的変数選抜…

 11.1 Predictor Selection

の記載で目に留まったところを(自分の解釈で)まとめておきます。自分があとで見直すための記事なので、不親切な点はご容赦を…

【変数選抜の動機】
・モデリングの前に10以上の因子が残ってしまうことがしばしば
 - 欠測が増えたり費用面で実用性がなくなってしまう
 - 効果が小さい変数や、怪しげな変数を含むとモデルがおかしくなる
・ 共線性も問題
 - VIF>10や相関係数>0.8だと回帰係数が怪しくなる
 - 例えば収縮期血圧と拡張期血圧
 - 平均をとるのも手
 - ただ、収縮期血圧がより臨床的に重要であることに注意
・簡単なモデルほど受け入れられる
 - でもその回帰係数は信頼できる?
・「統計学的有意」じゃない変数は除外すべき?
 - 意味不明

【最も普及しているStepwise Selection】
・変数を足していくForwardと、減らしていくBackward(の組み合わせも)
 - 全てのモデルで最もfitするものを選択する方法も
 - 簡単にoverfit
・そんなことより重要なのは選択基準
 - p<0.05?AIC?BIC?
 - AICが推奨
 - p<0.2やp<0.5も選択肢
 - サンプルサイズ小だと、基準厳しいと変数減り過ぎる
・Stepwiseの利点は
 - 簡単に使える(欠測あれば選抜の度に多重補完すべし)
 - 主観が入りにくい(bootstrap法などで妥当性が検証できる)
 - 変数が大分減らせる(ノイズ変数をちゃんと落とせるかは微妙)
・Stepwiseの欠点は
 - 選抜が不安定(安定させるには1変数につき25-50のアウトカムが欲しい)
 - 回帰係数にバイアスが入る
 - 多様性の誤判定?とp値の誇張(Stepwise後のp値は解釈しては×)
 - フルモデルより予測能が落ちる

【事前に単変量解析で落とす】
・単変量解析でp < 0.2なら多変量モデルには入れなくていいかも
 - でもStepwiseの変形に過ぎない
 - Overfitの問題は解決できない

*モダンな変数選択(bootstrap、ベイズ、LASSO)はキャパオーバーにつき割愛
 - BMJとかじゃなく、臨床系専門誌ならTop journalでもここまでは不要なので…

【コメント】
うーんやっぱり結局これだ!という正解はないようですね。てかここ昔読んだな…結局どんな方法で作っても、外的妥当性検証がキモで、そこでいい性能出せるモデルになるかどうか?ということでしょう。とりあえずは内的検証が許してもらえるみたいだし、Stepwise頼みのスタイルが基本になっちゃいますね。てかアウトカム30でp<0.05のStepwiseとか、overfitの塊で実用性皆無…の予測モデルもどきが如何に多いことか。かく言う私もアウトカム50ちょっとでStepwiseしてるんで人のこと言えないですが涙


予測モデルを開発するうえでキモとなるのが「どのリスク因子をモデルに含めるか」かと思います。臨床的感覚、統計学的な選抜…Steyerberg先生の黄色い本ではどう取り扱うのでしょうか。

 10 Restrictions on Candidate Predictors

の記載で目に留まったところを(自分の解釈で)まとめておきます。自分があとで見直すための記事なので、不親切な点はご容赦を…

【まずはじめに】
・サンプルサイズが小で多くの予測因子を使うとoverfittingが大問題
 - ある程度予測因子を選抜せざるを得ない
・57因子を231例(58アウトカム)のデータで解析した例がある
 - 単変量解析とStepwiseで因子選抜し、性能〇
 - でも外的妥当性検証したら散々
 - シュミレーションで内的妥当性検証してもやっぱり✕
・数理モデルの観点からは、モデルに含める予測因子は事前指定が理想
 - 手元にあるデータでの予測因子-アウトカムの関係をみる前に

【事前選抜】
・既存のエビデンスをもとに選抜
 - 文献レビューや専門家の意見を参考に
 - 何ならガチのSRしてもいい
 - 5-20の予測因子候補が妥当
・その後、欠測と分布を評価すべし
 - 欠測や分布の幅が狭い場合は除外を検討
・2%しか発生していないけどオッズ比11の変数はどうする?
 ①ねじ込む ←これがデフォルト
 ②変数を除外して、その旨宣言する
 ➂発生者を除外して、未発生の者のみに使えるモデルとする
・可能なら5-10の予測因子に選抜して、そのまま最終モデルにしたい

【変数の統合】
・似た変数をまとめる
 - 複数の症状のいずれかがある者を「動脈硬化あり」
 - 並存症の数でカテゴライズ
 - 変に重みづけするより単純和のほうが頑健かも
・Harrellはprincipal component analysisを提唱

【変数の平均化】
・需要な変数は層化すべき?
 - 性感染症における男女、手術成績における待機/緊急手術...
・交互作用がなければ、合わせて平均化するのも手
 - 純粋にサンプルサイズが増えて精度が増す

【コメント】
変数選抜について、事前定義についてまとめました。このまま統計学的選抜にいきたかったのですが、分量が多くなったので一区切り。HarrellのPCAについてはもと論文読まないとですかね…




いよいよ予測モデル研究に改めて正面から取り組むことになりました。1本完成して投稿中ですが、より規模の大きな研究になるので、改めて勉強しなおしながらbestを尽くそうと思います。やっぱり何はともあれSteyerberg先生の黄色い本から。まずは

 3.3 Predictors and Outcomes
 3.4 Reliability of Predictors

の記載で目に留まったところを(自分の解釈で)まとめておきます。

【予測変数あれこれ】
・強い予測変数の要件は効果量×分布
 - オッズ比2.5で1%の変数より、オッズ比2.0で50%の変数の方が強い
・重要な変数は定義にばらつきがなく、欠測がないことが望ましい
・予測変数のカテゴリは以下
 - 背景因子、重症度、既往、並存症、身体機能、健康状態/QOL
 - 環境因子、個人因子、疾病因子に分類することも
・高価だったり侵襲的な予測因子は基本モデルには含めない
 - 必要に応じて増分として利用

【予測変数の信頼性】
・検者内/検者間のばらつきは、一般化可能性の面で重要 
 - κ値として定量化される
・血圧などの生物学的変動にも注意
 - 測定方法や時期を明確にし、複数回測定する
・ただし、信頼性が低い変数でも、実臨床で使う変数は許容すべし
 - 理想的ではないかもしれないが、実用的なモデルになる

【コメント】
とりあえずはそりゃそうだろ!という内容でしたが、知識に芯を入れる意味ではやっぱいい教科書だと思います。全体的に総論的な感じで手を動かす感じじゃないので、この本だけでは完成しない…まぁまずは総論ということでコツコツ進みます。次は本当に知りたい「変数選抜」について。




このページのトップヘ