工程能力を管理するとき、硬度・引張強度・延性・寸法精度……と複数の品質特性を同時に見ることになります。「どのロットが全体的に優れているか」を判断したくても、変数ごとにバラバラに見ていると、全体像がつかみにくいです。
主成分分析(Principal Component Analysis:PCA)は、こういった多変量データをまとめて「総合スコア」に変換する手法です。複数の変数に共通する情報を抽出し、少数の主成分に集約します。この記事では硬度・引張強度・延性の3変数データを使って、標準化から主成分得点の計算まで順に説明します。
主成分分析でできること
主成分分析は、大きく2つの場面で使われます。
ひとつは次元削減です。10個の品質特性があっても、それらが互いに相関していれば実質的な情報量は少ないことが多いです。PCAはその「実質的な情報」を少数の主成分にまとめます。
もうひとつは総合スコアの作成です。各ロットや製品の主成分得点を計算することで、「このロットは総合的に高品質」「このロットは強度系が弱い」といった評価が1〜2個の数値で表現できます。製造現場での工程モニタリングや外れ値の検出にも使えます。
例題の設定
熱処理を変えながら製造した鋼材のロット10本について、3つの機械的特性を測定しました。
| ロット | 硬度 x₁(HV) | 引張強度 x₂(MPa) | 延性 x₃(%) |
|---|---|---|---|
| 1 | 65 | 445 | 26 |
| 2 | 68 | 462 | 18 |
| 3 | 70 | 458 | 24 |
| 4 | 73 | 485 | 17 |
| 5 | 74 | 488 | 22 |
| 6 | 77 | 508 | 15 |
| 7 | 80 | 525 | 16 |
| 8 | 66 | 450 | 25 |
| 9 | 71 | 472 | 20 |
| 10 | 75 | 498 | 19 |
硬度が高いロットは引張強度も高い傾向があり、延性は低めです。一般的な「強度と延性のトレードオフ」がこのデータにも現れています。
STEP 1:データを標準化する
変数ごとに単位やスケールが異なるため、まず標準化します。各変数から平均を引いて標準偏差で割った値(z値)を使います。\[ z_{ij} = \frac{x_{ij} – \bar{x}_j}{s_j} \]
今回の平均と標準偏差は次のとおりです。
| 変数 | 平均 x̄ | 標準偏差 s |
|---|---|---|
| 硬度 x₁(HV) | 71.9 | 4.82 |
| 引張強度 x₂(MPa) | 479.1 | 26.27 |
| 延性 x₃(%) | 20.2 | 3.88 |
Excelでの標準化は STANDARDIZE 関数か、(値 − AVERAGE) / STDEV.S で計算できます。
例:ロット1の硬度のz値\[ z_{11} = \frac{65 – 71.9}{4.82} = -1.432 \]
STEP 2:相関行列を計算する
標準化したデータの相関行列を求めます。Excelでは CORREL 関数で変数ペアごとに計算できます。
| 硬度 x₁ | 引張強度 x₂ | 延性 x₃ | |
|---|---|---|---|
| 硬度 x₁ | 1.000 | 0.986 | −0.777 |
| 引張強度 x₂ | 0.986 | 1.000 | −0.814 |
| 延性 x₃ | −0.777 | −0.814 | 1.000 |
硬度と引張強度の相関が 0.986 とほぼ完全な正の相関です。この2変数はほぼ同じ情報を持っているといえます。延性は両者と負の相関があります。
STEP 3:固有値・固有ベクトルを求める
相関行列の固有値分解を行うと、各主成分のばらつきの大きさ(固有値)と方向(固有ベクトル)が求まります。Excelには固有値を直接計算する関数がないため、専用ソフトや後述の方法で求めます。
今回の結果は次のとおりです。
| 主成分 | 固有値 λ | 寄与率 | 累積寄与率 |
|---|---|---|---|
| PC1(第1主成分) | 2.722 | 90.7% | 90.7% |
| PC2(第2主成分) | 0.266 | 8.9% | 99.6% |
| PC3(第3主成分) | 0.012 | 0.4% | 100.0% |
PC1だけで全体のばらつきの90.7%を説明しています。3変数の情報の大部分が第1主成分1つに集約されていることがわかります。
寄与率とは
寄与率は「その主成分が元データの分散をどれだけ説明するか」の割合です。\[ \text{寄与率}_k = \frac{\lambda_k}{\sum_{j=1}^{p} \lambda_j} \]
PC1の寄与率は \( 2.722 / (2.722 + 0.266 + 0.012) = 90.7\% \) です。累積寄与率が80〜85%を超えたところまでの主成分で分析することが多いです。今回はPC1単独で90.7%あるため、PC1だけで分析を進められます。
STEP 4:因子負荷量を確認する
固有ベクトルの各成分を因子負荷量と呼びます。主成分が元の変数とどう対応しているかを示します。
| 変数 | PC1への負荷量 | PC2への負荷量 |
|---|---|---|
| 硬度 x₁ | 0.588 | 0.447 |
| 引張強度 x₂ | 0.596 | 0.325 |
| 延性 x₃ | −0.547 | 0.834 |
PC1の負荷量を見ると、硬度(+0.588)と引張強度(+0.596)が正、延性(−0.547)が負です。つまり「PC1が大きい = 硬度・強度が高く延性が低い」と解釈できます。これはまさに「高強度材料の指標」といえます。
PC2は延性(+0.834)の負荷量が突出して大きく、強度系変数の寄与が小さいです。PC2は「延性の独立した変動」を捉えています。
STEP 5:主成分得点を計算する
各ロットの主成分得点(PC1スコア)は、標準化した値に固有ベクトルを掛け合わせた内積で求まります。\[ F_{i1} = a_{11} z_{i1} + a_{21} z_{i2} + a_{31} z_{i3} \]
ロット1を例に手計算で確認します。ロット1のz値は \( z_1 = -1.432 \)、\( z_2 = -1.298 \)、\( z_3 = 1.494 \) です。\[ F_{11} = 0.588 \times (-1.432) + 0.596 \times (-1.298) + (-0.547) \times 1.494 \] \[ = -0.842 + (-0.774) + (-0.817) = -2.433 \]
ロット1はPC1が −2.433 と最も低い値です。低硬度・低強度・高延性のロットですから、直感と一致しています。
全ロットのPC1得点です。
| ロット | PC1得点 | PC2得点 | 特徴 |
|---|---|---|---|
| 7 | +2.621 | +0.416 | 最高強度・最低延性 |
| 6 | +2.011 | −0.287 | 高強度 |
| 10 | +0.976 | +0.263 | 中〜高強度 |
| 4 | +0.719 | −0.512 | 中程度 |
| 5 | +0.204 | +0.691 | 中程度(延性やや高め) |
| 9 | −0.243 | −0.214 | 中程度 |
| 2 | −0.554 | −1.046 | やや低強度・低延性 |
| 3 | −1.246 | +0.379 | 低強度・高延性 |
| 8 | −2.057 | +0.124 | 低強度・高延性 |
| 1 | −2.433 | +0.184 | 最低強度・最高延性 |
PC1得点の大小を見るだけで、全10ロットを「強度系の高低」で一列に並べられます。これが主成分分析の実用的な価値です。
Excelでの計算手順
Excelでは固有値の直接計算はできませんが、次の手順で主成分得点まで求められます。
① 標準化データを計算する
各変数の列に対して STANDARDIZE 関数を使います。
=STANDARDIZE(B2, AVERAGE($B$2:$B$11), STDEV.S($B$2:$B$11))
② 相関行列を計算する
変数ペアごとに CORREL 関数を使って3×3の相関行列を作ります。
=CORREL($E$2:$E$11, F$2:F$11)
「データ分析」アドイン → 「相関」でも一括計算できます。
③ 固有値・固有ベクトルを求める
Excelには固有値を直接計算する関数がありません。実務では次のいずれかを使います。
- フリーソフト(RやPython)で固有値分解を行い、結果をExcelに貼り付ける
- Excelの反復計算(べき乗法)を使って近似する(上級者向け)
Pythonで固有値を求めるには、NumPy の numpy.linalg.eigh が使えます。
④ 主成分得点を計算する
固有ベクトル(因子負荷量)をExcelのセルに入力したら、主成分得点は MMULT 関数で一括計算できます。
=MMULT(標準化データ範囲, 固有ベクトル列)
例えば標準化データがE2:G11、PC1の固有ベクトルがJ2:J4にあれば:
=MMULT(E2:G2, $J$2:$J$4)
主成分分析を使うときの注意点
主成分分析は相関のある変数に使うほど効果が出ます。変数間の相関が弱い場合は、各変数がほぼ独立した主成分になるだけで次元削減の効果が薄れます。事前に相関行列を確認してから適用するのが基本です。
また、今回のように符号が負の負荷量が出ることがあります。主成分分析では固有ベクトルの正負の方向は数学的に任意なので、「PC1が大きい方向」がどの変数の高低に対応するかを負荷量を見て解釈することが大切です。
サンプルサイズについては、変数数の5〜10倍程度が目安とされています。今回は3変数でn=10ですが、実務では変数の多さに応じて50〜100サンプル以上用意できると分析が安定します。適切なサンプルサイズの考え方はサンプルサイズの決め方もあわせてご覧ください。
まとめ
- 主成分分析は、相関のある多変量データを少数の主成分に集約する手法
- まずデータを標準化し(単位の違いを揃える)、相関行列の固有値分解を行う
- 固有値の大きい主成分から順に取り出し、累積寄与率80〜85%以上を目安に採用する主成分数を決める
- 因子負荷量を見て「この主成分は何の大小を表しているか」を解釈する
- 主成分得点 = 標準化値 × 因子負荷量の内積で計算できる
今回の例では、硬度・引張強度・延性の3変数の情報の90.7%が第1主成分1つにまとまりました。PC1得点を使うだけで10ロットを「強度の高い順」に並べることができ、品質のばらつきの主因を一目で把握できました。
相関分析の基礎については相関分析のやり方と結果の見方、複数の変数を使った予測モデルの構築は重回帰分析の結果の読み方と変数選択も合わせて参考にしてください。
PCAで特徴量を把握したあと、各ロットをグループ分けしたい場面ではクラスター分析(ウォード法・k-means)を組み合わせるのが実務でよく使われるアプローチです。PCAで次元を落としてからクラスタリングすると、ノイズを抑えつつ類似ロットを整理できます。
多変量解析の中でグループ分類に特化した手法として、線形判別分析(LDA)があります。PCAが教師なしの次元削減であるのに対し、LDAはグループラベルを活かしてグループ間の分離を最大化する軸を求めます。
観測変数の背後にある潜在的な共通因子を推定したい場合は、因子分析が適しています。PCAがデータの分散を最大化する軸を求めるのに対し、因子分析は変数間の相関構造をモデル化して解釈しやすい因子を抽出します。
主成分分析は多重共線性の対処法としても活用できます。相関の高い説明変数を無相関な主成分に変換してから回帰する「主成分回帰」により、係数推定の不安定さを解消できます。多重共線性の診断にはVIF(分散拡大係数)が便利です。詳しくは多重共線性(VIF)とは|重回帰分析の問題を診断・解消する手順をご覧ください。

