SPSS(Statistical Package for the Social Sciences)は医学・看護・心理・社会科学などの分野で広く使われている統計解析ソフトウェアであり、ROC曲線の作成と解析機能も搭載されています。
しかし、SPSSでのROC曲線作成は操作手順が独特であり、どのメニューからアクセスするのか、どのオプションを設定すればよいのか、出力結果をどのように読み解くのかについて迷う方も少なくありません。
SPSSのROC分析機能を正しく使いこなすことで、感度・特異度・AUC・最適カットオフ値といった重要な統計指標を効率よく算出できます。
この記事では、SPSSでのROC曲線の作成方法について、必要なデータ形式の確認から操作手順・オプション設定・出力結果の読み方まで、ステップバイステップでわかりやすく解説していきます。
SPSSを使ってROC分析を行いたい方はぜひ参考にしてください。
SPSSでROC曲線を作成するには「分析→ROC曲線」メニューを使う!基本手順を押さえよう
それではまず、SPSSでROC曲線を作成するための基本的な手順と必要な準備について解説していきます。
SPSSのROC曲線分析機能の概要
SPSSにはROC曲線の作成と解析を専用に行うための「ROC曲線(ROC Curve)」機能が搭載されています。
この機能を使うと、ROC曲線グラフの出力・AUC(曲線下面積)の計算・信頼区間の推定・座標点テーブルの出力・統計的有意性の検定といった一連の分析を一括して実行できます。
SPSSのROC曲線機能は分類モデルの評価だけでなく、医学分野でのバイオマーカーの診断性能評価・検査値のカットオフ値決定・治療効果の判別など多様な目的で活用されています。
SPSSのROC分析で使用できる検定変数(予測スコア)の変数型は連続量(スケール変数)または順序変数であることが原則です。
状態変数(実際のクラスラベル)は二値変数(0と1など)で指定します。
なお、SPSSのバージョンによってメニューの名称や配置が若干異なる場合がありますが、基本的な操作の流れは共通しています。
ROC分析に必要なデータ形式の確認
SPSSでROC分析を実行する前に、データが適切な形式になっているかを確認することが重要です。
SPSSのデータファイル(.savファイル)では、行が各サンプル(患者・観測値)、列が変数に対応しています。
ROC分析に最低限必要な変数は以下の2つです。
| 変数の種類 | SPSSでの変数名 | 変数の型 | 具体例 |
|---|---|---|---|
| 検定変数(テスト変数) | 任意(例:score, marker) | スケール(連続量) | バイオマーカー値・予測確率・スコア |
| 状態変数 | 任意(例:diagnosis, label) | 名義または二値 | 0(陰性)/ 1(陽性)、または疾患なし/あり |
状態変数には「陽性を示す値(Positive State Value)」を明示的に指定する必要があります。
たとえば診断結果を0(疾患なし)と1(疾患あり)で記録している場合は、ROC分析の設定時に陽性値として「1」を指定します。
また、欠損値があるサンプルはROC分析から自動的に除外されるため、欠損値の処理を事前に確認しておくことが望ましいでしょう。
分析実行前の事前準備と注意点
SPSSでROC分析を実行する前の事前確認事項として、サンプルサイズの検討も重要です。
一般的にROC分析ではAUCの推定精度を確保するために陽性群・陰性群それぞれ30〜50サンプル以上が推奨されています。
極端にサンプルサイズが小さい場合はAUCの信頼区間が広くなり、統計的検定の検出力が著しく低下します。
また、検定変数(予測スコア)の分布を事前にヒストグラムや記述統計で確認しておくことも有益です。
極端な外れ値が存在する場合はROC曲線の形状に影響を与える可能性があります。
さらに、状態変数が正しく二値コーディングされているかを変数ビューおよびデータビューで確認し、必要に応じてリコード処理を事前に行っておきましょう。
SPSSでのROC曲線作成の操作手順
続いては、SPSSの具体的な操作手順について確認していきます。
メニューからROC曲線ダイアログを開く手順
SPSSでROC曲線を作成するためのメニューへのアクセス手順は以下のとおりです。
まずSPSSを起動してデータファイルを開いた状態から、メニューバーの「分析(Analyze)」をクリックします。
プルダウンメニューが表示されたら「分類(Classify)」または「ROC曲線(ROC Curve)」を選択します。
SPSSのバージョンによって、「分析」→「分類」→「ROC曲線」の順でたどる場合と、「分析」→「ROC曲線」と直接アクセスできる場合があります。
「ROC曲線」ダイアログボックスが開いたら、以下の設定を行います。
SPSSのROC曲線ダイアログの基本設定
①「テスト変数(検定変数)」ボックス:ROC分析したい予測スコアや検査値の変数を左の変数リストから選んで移動
②「状態変数」ボックス:実際の診断結果(陽性・陰性)を示す二値変数を指定
③「陽性の状態変数の値」フィールド:状態変数の中で「陽性」を示す値を入力(例:1、または「疾患あり」など)
④「表示」セクション:「ROC曲線」チェックボックス(グラフを出力する)、「ROC曲線の参照直線(対角線)」チェックボックスを有効にする
⑤「統計量」セクション:「曲線下面積(AUC)」の出力設定
これらの設定を行ったあと「OK」ボタンをクリックすると分析が実行され、SPSSの出力ウィンドウ(アウトプットビューア)に結果が表示されます。
ROC曲線ダイアログのオプション設定
SPSSのROC曲線ダイアログには「オプション」ボタンから追加設定が行えます。
オプションダイアログでは主に以下の設定が可能です。
「分類(Classification)」では、テスト変数の値が大きいほど陽性(デフォルト)か、小さいほど陽性かを指定できます。
たとえば、あるスコアが高いほど疾患リスクが高いと判定するシステムでは「より大きな検定結果が陽性の検定を示す」を選択し、逆に値が小さいほど陽性を意味する場合は「より小さい検定結果が陽性の検定を示す」を選択します。
「欠損値」では系統的欠損を除外するか否かを設定できます。
「曲線の座標のエクスポート」オプションを有効にすると、ROC曲線の各座標点データ(閾値・感度・特異度)を別の変数としてデータファイルに保存することができ、後続の解析に活用できます。
統計量オプションの設定と信頼区間の設定
SPSSのROC曲線の「統計量」セクションでは、出力する統計量を選択できます。
「曲線下面積(AUC)」を有効にするとAUCの点推定値と信頼区間が出力されます。
信頼区間の水準はデフォルトで95%に設定されていますが、90%や99%に変更することも可能です。
「有意差の検定(Significance test)」では、AUCが0.5(ランダム水準)と有意に異なるかの検定(帰無仮説「AUC = 0.5」に対するp値)が出力されます。
このp値が0.05未満であれば、モデルがランダム分類より統計的に有意に優れた識別能力を持つことが示されます。
また「ROC曲線の座標(Coordinates of the ROC Curve)」を出力すると、各閾値における感度・特異度の詳細テーブルが得られ、最適カットオフ値の決定に役立てることができます。
SPSS出力結果の詳細な読み方
続いては、SPSSのROC分析で出力される結果の読み方について確認していきます。
AUC(曲線下面積)出力テーブルの読み方
SPSSのROC分析で最初に確認すべき主要な出力テーブルが「曲線下面積(Area Under the Curve)」テーブルです。
このテーブルには以下の情報が含まれています。
| 出力項目 | 説明 | 解釈のポイント |
|---|---|---|
| 面積(Area) | AUCの点推定値 | 0.5〜1.0の値。0.8以上で良好な識別能力の目安 |
| 標準誤差(Std. Error) | AUC推定値の標準誤差 | 小さいほど推定精度が高い(サンプルサイズに依存) |
| 漸近有意確率(Sig.) | AUC=0.5の帰無仮説に対するp値 | 0.05未満でランダム水準を有意に上回ると判断 |
| 漸近95%信頼区間(下限・上限) | AUCの95%信頼区間 | 信頼区間が0.5をまたがない場合、有意な識別能力があるといえる |
AUCの点推定値だけでなく信頼区間を確認することが重要です。
たとえばAUCが0.75であっても、信頼区間が0.60〜0.90と幅広ければ、実際の識別能力の推定精度が低いことを意味します。
これはサンプルサイズの不足を示唆している可能性があり、追加データの収集を検討すべき状況です。
ROC曲線の座標テーブルの読み方
「ROC曲線の座標(Coordinates of the ROC Curve)」テーブルには、各閾値における感度(真陽性率)と特異度(1-偽陽性率)の詳細な組み合わせが一覧として出力されます。
このテーブルを使って最適なカットオフ値を特定することができます。
ユーデン指数(Youden’s Index)を使ったカットオフ値の特定手順は次のとおりです。
SPSSの座標テーブルからユーデン指数を計算する手順
①SPSSの座標テーブルをExcelにコピーまたはエクスポートする
②新しい列を作成し「ユーデン指数 = 感度 + 特異度 − 1」を各行に計算する
③ユーデン指数が最大となる行の閾値(検定変数値)を確認する
④その閾値での感度・特異度をそれぞれ記録する
例:閾値 = 2.4、感度 = 0.82、特異度 = 0.79、ユーデン指数 = 0.82 + 0.79 − 1 = 0.61(最大値)
座標テーブルの行数は分析に使用したサンプル数やスコアの分布によって異なり、ユニークなスコア値の数に対応した行数が出力されます。
同じスコア値を持つサンプルが複数ある場合はひとつの行にまとめて表示されます。
ROC曲線グラフの確認と見方
SPSSで出力されるROC曲線グラフは、横軸に偽陽性率(1-特異度)、縦軸に感度(真陽性率)が配置された標準的な形式で表示されます。
デフォルト設定では参照直線(ランダム分類に相当する対角線)も合わせて表示されるため、モデルの識別能力が視覚的に確認できます。
SPSSのグラフはチャートエディタ(グラフをダブルクリックして開く)で色・太さ・ラベルなどを編集することができます。
論文や報告書に使用するためにグラフを整形する場合は、チャートエディタで軸ラベル・目盛り・凡例・タイトルを適切に設定し、高解像度の画像としてエクスポートすることが推奨されます。
複数の検定変数(複数のバイオマーカーや分類モデル)を同時に分析した場合は、複数の曲線が同一グラフ上に描かれ、AUCテーブルにも複数行が出力されるため、視覚的・数値的な比較が容易になります。
SPSSによるROC曲線の詳細解析テクニック
続いては、SPSSを使ったROC分析のより高度な活用方法について確認していきます。
複数変数のROC曲線比較と診断精度の比較検定
SPSSでは複数の検定変数を同時にROC分析に投入することで、複数のバイオマーカーや検査指標の診断精度を同時に比較できます。
ダイアログの「テスト変数」ボックスに複数の変数を移動させるだけで、複数の曲線が同一グラフに出力され、各変数のAUCと信頼区間が比較できる形で表示されます。
ただし、SPSSのROC機能のみではROC曲線間のAUCの差の統計的有意性を直接検定することはできません。
ROC曲線間の比較検定(たとえばDeLong法による2つのAUCの差の検定)が必要な場合は、SPSSのシンタックス(コマンド構文)を使う方法や、RやMedCalcなど専用ツールの使用を検討する必要があります。
SPSSシンタックスを使ったROC分析の自動化
SPSSでは「シンタックス(構文)」を使ってROC分析を自動化・繰り返し実行することが可能です。
毎回ダイアログを操作するのではなく、シンタックスファイルにコマンドを記述しておくことで、同じ分析を異なるデータに対して再現性高く実行できます。
SPSSシンタックスによるROC分析の例
ROC score BY diagnosis (1)
/PLOT CURVE(REFERENCE)
/PRINT SE COORDINATES
/CRITERIA CUTOFF(INCLUDE) TESTPOS(LARGE) CI(95) DISTRIBUTION(FREE).
score:検定変数名
diagnosis:状態変数名
(1):陽性を示す値
PLOT CURVE(REFERENCE):参照線付きROC曲線グラフを出力
PRINT SE COORDINATES:標準誤差と座標テーブルを出力
シンタックスを使った分析は研究の再現性と効率性を高める上で非常に有益であり、論文作成において分析手順の透明性を確保する観点からも推奨される方法です。
出力結果を論文・報告書に活用する際のポイント
SPSSで得られたROC分析の結果を論文や報告書に記載する際には、いくつかの重要なポイントがあります。
AUCは点推定値と95%信頼区間を合わせて報告することが標準的です。
たとえば「AUC = 0.83(95%CI:0.74〜0.91、p < 0.001)」のような形式で記述します。
最適カットオフ値を採用した場合はその値と、そのカットオフにおける感度・特異度・陽性的中率・陰性的中率を合わせて報告することが求められます。
ROC曲線グラフを論文に掲載する際は、AUC値をグラフ内またはキャプションに明記し、参照直線(対角線)も含めることが一般的なスタイルです。
SPSSのROC曲線出力結果の確認チェックリストです。
・曲線下面積テーブル:AUC値・標準誤差・p値・95%信頼区間の確認
・ROC曲線グラフ:形状の確認・対角線との比較・曲線の滑らかさの確認
・座標テーブル:ユーデン指数最大点の特定・最適カットオフ値の決定
・サンプルサイズの確認:陽性群・陰性群のn数が十分かの確認
これらを順に確認することで、信頼性の高いROC分析結果を得られます。
SPSS以外のツールとの比較と使い分け
続いては、SPSSの他にROC分析に使われる主要なツールとの比較について確認していきます。
RによるROC分析の特徴
統計言語Rには「pROC」「ROCR」「plotROC」などROC分析専用のパッケージが複数あり、非常に高度なROC分析が可能です。
pROCパッケージはAUCの計算・信頼区間の推定・DeLong法によるAUC間の有意差検定・偏AUCの計算など多機能を備えており、医学研究分野で特に広く活用されています。
Rは無料で使えるオープンソースソフトウェアである点が大きな利点であり、コードを共有することで分析の完全な再現性を担保できます。
一方で、プログラミングの学習コストがある程度必要という点はSPSSと比べたデメリットといえるでしょう。
PythonによるROC分析の特徴
Pythonでは「scikit-learn」ライブラリのroc_curve関数・roc_auc_score関数を使ったROC分析が機械学習コミュニティで標準的に使われています。
scikit-learnのROC分析機能は機械学習パイプラインとの統合が容易であり、モデルの学習・予測・ROC評価を一連のコードで記述できます。
また、matplotlibやseabornと組み合わせることで高品質なROC曲線グラフを作成し、論文品質の図として出力することも可能です。
Pythonも無料で利用可能であり、大規模データの処理においてSPSSより優れた処理速度を発揮します。
SPSS・R・Python・MedCalcの特徴比較
| ソフトウェア | 費用 | 操作方法 | ROC分析の機能 | 向いているユーザー |
|---|---|---|---|---|
| SPSS | 有料(サブスクリプション) | GUI中心(操作が直感的) | 標準的な機能(AUC・信頼区間・座標テーブル) | 医学・社会科学の研究者 |
| R(pROC) | 無料 | コマンドライン | 高機能(DeLong検定・偏AUC・部分AUCなど) | 統計・疫学の専門家 |
| Python(scikit-learn) | 無料 | プログラミング | 機械学習統合型(大規模データ処理に強い) | データサイエンティスト |
| MedCalc | 有料 | GUI中心 | 医学統計特化(DeLong検定・カットオフ最適化など) | 臨床研究者・医療従事者 |
| Excel | 有料(多くの環境で利用可能) | GUI・数式 | 手動計算(台形公式でAUC近似) | 専用ソフト不使用の方 |
SPSSは操作が比較的直感的でプログラミングの知識が不要なため、統計学の専門知識はあるがコーディングに不慣れな医学・看護・心理学分野の研究者に特に適しています。
高度なROC比較検定や大規模データ処理が必要な場合はRまたはPythonへの移行も検討するとよいでしょう。
まとめ
SPSSでROC曲線を作成するには、「分析」→「ROC曲線」メニューから専用のダイアログにアクセスし、検定変数・状態変数・陽性値を設定して実行します。
出力結果の中核となるのはAUCテーブル(曲線下面積・標準誤差・p値・95%信頼区間)と座標テーブル(各閾値での感度・特異度)であり、これらを合わせて解釈することが重要です。
AUCのp値で統計的有意性を確認し、座標テーブルからユーデン指数を計算することで最適なカットオフ値を特定できます。
SPSSはGUI操作で直感的にROC分析が行える点が強みであり、医学・看護・社会科学分野での研究に広く活用されています。
高度なROC曲線間の比較検定が必要な場合はR(pROCパッケージ)やMedCalcの活用も選択肢として検討することをお勧めします。
SPSSの操作手順と出力の読み方をしっかりとマスターすることで、ROC分析を正確かつ効率的に活用できるようになるでしょう。