1 歴史と命名
1.1 考案者と背景
スクリ―プロットは、1966年に心理学者レイモンド・B・キャッテル(Raymond B. Cattell)によって考案された。キャッテルは因子分析の実践において、抽出された因子の数を決定する実用的な方法の必要性を感じており、固有値の減衰パターンを視覚的に評価する手法を提案した。このプロットは、主に多変量解析が心理学や教育学の分野で発展していた20世紀中盤に普及し、現在ではデータサイエンス全般で広く使われている。
1.2 「スクリ―」の語源と比喩
「スクリ―」(scree)は地質学用語で、崖のふもとに積もった岩屑や砂利を指す。キャッテルは、固有値が急激に減少する部分を「崖」(cliff)、その後緩やかに続く部分を「スクリ―」(scree)に例えた。この比喩は、有意な成分(崖)とノイズ的な成分(砂利)を視覚的に区別する直感的なイメージを提供している。
2 構成と作成方法
2.1 固有値の取得
スクリ―プロットの作成には、まずデータの分散共分散行列または相関行列から固有値を計算する。主成分分析(PCA)では、各主成分が説明する分散の大きさが固有値として得られ、因子分析では共通性を考慮した縮約相関行列の固有値が用いられる。これらの固有値は通常、降順にソートされる。
2.2 プロットの描画
横軸に成分の番号(第1主成分、第2主成分……)を、縦軸に対応する固有値を取り、点をプロットして折れ線で結ぶ。典型的には、固有値の値そのものをプロットするか、あるいは対数変換した値を用いることもある。ラベルやグリッド線を追加することで視認性を高める。
2.3 典型的な形状とその意味
スクリ―プロットの形状は、最初の数成分で固有値が急激に減少(崖)し、その後ほぼ一定の低い値(砂利)が続くという特徴を持つ。崖部分に含まれる成分はデータの分散を大きく説明する重要な成分であり、砂利部分はランダムノイズや誤差を反映すると解釈される。
3 解釈手法
3.1 エルボー法(カットオフ点の決定)
エルボー法は、スクリ―プロットの曲線が急峻な下降から緩やかな下降へと変化する「肘」(エルボー)の位置をカットオフ点として採用する。この点より左側の成分数を保持すべきと判断する。ただし、エルボーが複数現れる場合や明確でない場合もあり、主観的判断が伴う。
3.2 カイザー‐ガットマン基準との比較
カイザー‐ガットマン基準(固有値1以上を保持)は、スクリ―プロットと併用されることが多い。この基準は固有値が1以上の成分を有意とみなすが、スクリ―プロットのエルボー位置と乖離することがある。実践では両者を比較検討し、理論的根拠や研究目的に照らして決定する。
3.3 平行分析との併用
平行分析は、ランダムデータから得られる固有値の期待値と実データの固有値を比較する方法である。スクリ―プロット上に平行分析の結果(例えば、ランダムデータの95パーセンタイル値)を重ねて描画することで、偶然より大きい固有値を持つ成分を客観的に選択できる。これにより主観性が軽減される。
4 実践上の注意点
4.1 サンプルサイズの影響
サンプルサイズが小さい場合、固有値の推定精度が低下し、スクリ―プロットの形状が不安定になる。また、サンプルサイズが極端に大きいと、微小な固有値の差でも有意と判定される可能性がある。一般的に、変数数の10倍以上のサンプルサイズが推奨される。
4.2 成分数決定の主観性
エルボー法は視覚的判断に依存するため、解釈者によって異なる成分数が選択されるリスクがある。特にエルボーが不明瞭な場合や、複数の候補点が存在する場合には、他の統計的基準(並行分析、BICなど)と組み合わせることが望ましい。
4.3 多成分データセットへの適用限界
変数数が非常に多いデータセット(例:遺伝子発現データ)では、最初の数成分のみが際立ち、後続の成分が全て低い固有値になることが多い。このような場合、スクリ―プロットは単調減少を示し、明確なエルボーを見つけにくい。次元圧縮が目的であれば累積寄与率などを併用する必要がある。
5 ソフトウェアでの実装例
5.1 R(factoextra, psychパッケージ)
Rでは、factoextraパッケージのfviz_eig()関数や、psychパッケージのscree()関数を用いて簡単にスクリ―プロットを作成できる。例えば、prcomp()でPCAを実行した後、fviz_eig(res.pca)と記述する。さらに、psych::fa.parallel()により平行分析の結果を重ねることも可能である。
5.2 Python(scikit-learn, matplotlib)
Pythonでは、scikit-learnのPCAで固有値を取得し、matplotlibでプロットする。以下のように実装する:pca = PCA().fit(X); eigenvalues = pca.explained_variance_; plt.plot(range(1, len(eigenvalues)+1), eigenvalues, 'o-')。numpyのlinalg.eigを用いて手動計算することもできる。
5.3 SPSS, SAS
SPSSでは「分析」→「次元削減」→「因子分析」の出力オプションで「スクリ―プロット」にチェックを入れると自動生成される。SASではPROC FACTORのSCREEプロットを指定するか、PROC IMLを用いて自作プログラムで描画する。いずれもGUIまたはコードで直感的に利用できる。
6 スクリ―プロットの拡張と代替手法
6.1 累積寄与率プロット
累積寄与率プロットは、横軸に成分数、縦軸にそこまでの成分が説明する分散の累積割合をプロットしたものである。目標とする累積寄与率(例:70%、80%)に達する成分数を選択する。スクリ―プロットと組み合わせて、分散説明量の観点からも判断できる。
6.2 ホーンプロット(平行分析プロット)
ホーンプロットは、実データの固有値と、ランダムデータから得られた固有値の期待値を並べてプロットしたものである。スクリ―プロットに平行分析の結果を重ねたものと本質的に同じであり、客観的な閾値を提供する。主成分数決定のためのよりロバストな方法として広く推奨される。
6.3 ベイズ的アプローチによる成分数推定
ベイズ因子や情報量基準(BIC、WAIC)を用いて成分数をモデル選択する手法がある。これらの方法はスクリ―プロットのような視覚的判断に依らず、確率的な枠組みで最適な次元を推定する。近年では、変分ベイズ法やMCMCサンプリングを用いた自動選択も実用化されている。