主成分分析

ここでは、EViews を使用した主成分分析を紹介します。 特に、私たちは、その最も重要な特徴を特定し、存在する可能性のある推論的な結論を引き出すために、あるデータセットに PCA を適用したいという願望によって動機付けられています。
このページは、開発元ブログの理論編実践編を元に作成しています。


データの要約

  • 複数変数の分散・相関をグラフと表で確認

  1. PCA を使用して米国の犯罪データを調査します。 特に、私たちのデータセットは、1973 年の米国 50 州のそれぞれにおける住民 10 万人当たりの逮捕数を要約しています。データには 4 つの変数が含まれており、そのうちの 3 つはMURDER, ASSAULT, RAPEに関連するに関係します。 最後の項目は URBANPOP という名前で、都市中心部に住む人口の割合が含まれています。
  2. データを理解するために、まず対象の変数を含むグループ オブジェクトを作成します。 これを行うには、ワークファイル内の 4 つの変数をすべて選択します。Ctrlボタンを押しながらそれぞれをクリックし、強調表示された変数のいずれかを右クリックし、マウス ポインターをコンテキスト メニューのOpen > as Groupをクリックします。これにより、4 つの変数が列に配置されたグループ オブジェクトがスプレッドシートで開きます。
    データ
  3. ここから、グループ ウィンドウでView > Descriptive statistics > Common sampleをクリックすることで、通常の要約統計量を取得できます。
    データ
  4. データを視覚的にわかりやすくするために、各系列をプロットすることもできます。View > Graphs > Graph options > Multiple graphsを選択し、OKをクリックします。
    データ
  5. 最後に、相関パターンを研究することで、情報の冗長性を把握することができます。View > Covariance analysisをクリックすることで相関行列を作成できます。これにより、さらにオプションを含むウィンドウが開きます。 ここで、Covarianceのチェックを解除し、Correlationを選択します。 これにより、EViews は他の統計を含まずに相関行列のみを生成するようになります。 さらに、LayoutドロップボックスでSingle tableを選択し、最後にOKをクリックします。
    データ
  6. 相関構造を簡単に解釈すると、MURDERはASSAULTと高い相関関係があるのに対し、後者はRAPEと強い正の相関を示すことがわかります。 さらに、逮捕の 3つの原因のうち、MURDERはURBANPOPとほとんど相関がありませんが、RAPEは一般に大規模なコミュニティと相関しています。 直感的には、これは従来の通念と一致しています。殺人が専門的なレベルで観察されることはほとんどなく、通常、前兆として暴行が伴います。さらに、犯罪の可視化と後始末にはコストがかかるため、警察の存在や目撃者の可視性が一般的により顕著となる人口の多い地域では、殺人は一般的に好まれません。一方で、単純に人口が多く、犯罪を隠蔽または否認するためのコストが非常に低いことで知られるため、強姦は大都市中心部で起こりがちです。

主成分分析

  • グループオブジェクトに対して主成分分析を実行

  1. EViews で PCA を実行するのは簡単です。 グループ オブジェクト ウィンドウで、View > Principal componentをクリックします。これにより、メインの PCA ダイアログが開きます。
    最初のステップとして、PCA の基礎を要約することに興味があります。 特に、対象の変数に関連付けられた共分散行列または相関行列に主成分分解を適用することで得られる固有値と固有ベクトルの概要を求めます。 これを行うには、Display欄で、Tableを選択します。これは、共分散 行列と、関連する固有ベクトルと固有値を要約した 3 つのテーブルを生成します。
    データ
  2. この出力には、Component selectionグループの下にあるいくつかの重要なオプションが関連付けられています。 これらには次のものが含まれます。
    • Maximum number:
      これは、考えられる固有値の理論上の最大数にデフォルト設定されます。これは、検討中のグループ内の変数の総数です。 この例では、この数値は 4 です。
    • Minimum egenvalue:
      デフォルトは 0 です。ただし、正の値を選択すると、この値より小さい固有値に関連付けられたすべての固有ベクトルが表示されなくなります。
    • Cumulative proportion:
      デフォルトは 1 です。値 α <1 を選択します。 ただし、変動の α ∗100% の説明に関連する最も主な k 固有値と固有ベクトルのみを保持することを要求します。 当然のことながら、α=1 を選択すると、すべての固有値が表示されることが要求されます。
  3. ここではデフォルト値のままにします。
  4. さらに、Calculationタブについて少し考えてみましょう。 Typeドロップダウンは、主成分分解を相関行列または共分散行列のいずれかに適用する選択肢を提供します。どちらを選ぶかは基本的に、検討中の変数が同様のスケールを示すかどうかに帰着します。 言い換えれば、対象となる基礎変数の分散が類似している場合、共分散行列に対して PCA を実行することは確実に正当化されます。 それにもかかわらず、分散が大きく異なる場合、解釈可能性と比較可能性が必要な場合には、相関行列を選択する方が適切です。前述で作成した要約統計量の表では、対象となる 4 つの変数間で標準偏差が均一ではないことが明らかに示されているため、デフォルトのままにして相関行列を使用します。
    OKをクリックしPCAを実行します。
    データ
  5. 結果として得られる出力は、下記にまとめられており、3 つのテーブルで構成されています。
    最初の表は、固有値に関する情報をまとめたものです。 後者は、各主成分方向によって説明される情報の割合として測定される重要性 の順にソートされます。特に、最初の主成分方向は基礎となる相関行列に含まれる情報のおよそ 62% を説明し、2番目の主成分方向はおよそ 25% を説明し、以下同様であることがわかります。 さらに、最初の2つの主成分方向によって説明される情報の累積割合は、およそ 87(62 + 25)% になります。 言い換えれば、次元の削減が必要な場合、元の情報のほぼ 90% を保持しながら、問題の根本的な次元を 4 から 2 に半分にできることが分析によって示されています。 これは明らかに有益なトレードオフです。最後に、EViews が 4 つの固有値の平均が 1 であると報告していることに注目してください。実際、相関行列から固有値を抽出する場合、これは常に当てはまります。
    2 番目 (中央) の表は、各主固有値に関連付けられた固有ベクトルをまとめたものです。 当然、固有ベクトルも重要度に並べられます。 さらに、固有値は各主成分方向で全体の情報がどれだけ抽出されるかを強調するのに対し、固有ベクトルは各変数が各方向でどれだけの重みを持っているかを明らかにします。
    すべての固有ベクトルの長さは単一であることを思い出してください。 したがって、特定の主方向における変数の相対的な重要性は、事実上、その変数に起因する固有ベクトルの長さ (単位) の割合になります。 たとえば、最初の固有ベクトル [0.535899,0.583184,0.543432,0.278191]の場合、MURDER はベクトル全体の長さの 0.5358992×100%=0.287188% を占めます。 同様に、ASSAULT は 0.340103% を占め、RAPE は 0.295318% を占めます。 明らかに、第1主成分で最も重要でない変数は URBANPOP であり、これは方向の長さの 0.077390% のみを占めます。
    一方、2 番目の主方向では、最も大きな比重を占めるのは URBANPOP であり、方向の長さに 0.872806 × 100% = 0.761790% 寄与します。 したがって、特徴抽出が目的である場合、第1主成分方向はMURDER, ASSAULT, RAPEによってほぼ均等に支配されているのに対し、第2主成分方向はほぼ完全に URBANPOP によって支配されていることは明らかです。
    最後に、3 番目のテーブルは、参考として固有分解が適用される相関行列を表示しています。

固有値プロット

  • スクリープロットを作成し、固有値をグラフにまとめる

  1. データセットに関連する PCA の基礎の大まかな全体像が得られたので、より正式な方法で次元削減を進めることができるかどうか疑問に思うのは自然なことです。 そのような方法の 1 つは固有値プロットを見て、保持する固有値の数を視覚的に特定することです。
    もう一度View > Princial componentの順にクリックし、View欄でEigenvalue plotを選択します。
    データ
  2. ここで、EViews は、基礎となる固有値のいくつかのグラフを提供します。 後者には、スクリー プロット、連続する固有値プロット間の差、および最初の k 個の固有値プロットに関連付けられた情報の累積割合が含まれます。 3 つすべてを選択してください。 前と同様に、Component selectionグループのデフォルト値をそのままにしておきます。OKをクリックします。
    データ
  3. EViews は 3 つのグラフを作成します。
    1つ目はスクリープロットです。これは、成分の順に配置された固有値の折れ線グラフです。ここでの捉え方は、線が折れている点を探すことです。点の部分を形成するすべての固有値、およびそれに拡張される関連する固有ベクトルを保持し、残りを破棄できます。 プロットから、2 番目の固有値でグラフが折れていることが明らかであり、最初の 2 つの固有値を保持する必要があることがわかります。
    もう少し数値的なアプローチでは、固有値平均を大幅に下回るすべての固有値が破棄されます。前セクションの最初のテーブルを参照すると、固有値の平均が 1 であり、実際には 2 番目の固有値がこのカットオフのすぐ下にあることがわかります。 前の段落で説明した視覚的なサポートを使用しながら、2 番目の値がこの平均に非常に近いため、スクリー プロット分析は最初の 2 つの固有値のみを保持する必要があることを示していると結論付けることができます。
    2 番目のグラフは、連続する固有値間の差を折れ線グラフでプロットします。 このグラフには別の水平線が重ねられていますが、今回は連続する固有値の差の平均に等しい値が示されています。 EViews はこの数値を報告しませんが、前セクションの表より、問題の平均が (1.490476+0.633202+0.183133)/3=0.768937 であることを示すのは難しくありません。 ここでの考え方は、差がこのしきい値を超えるすべての固有値を保持することです。最初の 2 つの固有値のみがこの基準を満たします。
    最後のグラフは、連続する固有値によって説明される情報の累積割合を示す折れ線グラフです。 このグラフには、固有値の平均、つまり 1 に等しい傾きを持つ線が重ねられています。ここでの考え方は、傾きが少なくとも傾き 1 の線と同じくらい急な累積曲線のセグメントを形成する固有値を保持することです。 私たちの場合、そのようなセグメントを形成しているのは 2 つの固有値 (固有値 1 と 2) のみであると思われます。

主成分方向に関する分析

  • ローディングプロットを作成し、各変数と主成分の関係を確認する

  1. 分析の次のステップは、主成分方向に関する分析を研究することによって、意味のあるパターンが現れる場合、どのようなパターンが現れるかを調べることです。 これを行うには、再び主要なPCAダイアログを表示し、今度はView欄でVariable loadings plotsを選択します。
    データ
  2. Variable loadings plotは、負荷ベクトルの「XY」ペア プロットを生成します。 ユーザは、どのローディングベクトルを比較するかを指定し、スケーリングを 1 つを選択します。
    • normalize loadings:
      この場合、スケーリングは 1 であり、負荷ベクトルは実際には固有ベクトルそのものです。
    • normalize scores:
      ここで、スケーリング係数は固有値ベクトルの平方根です。 つまり、k番目 i 番目の荷重ベクトルの要素は、i 番目の固有ベクトルの k 番目の要素に k 番目の平方根を乗算したものです。
    • Symmetric weights:
      このシナリオでは、スケーリング係数は固有値ベクトルの 4 乗根です。 つまり、k番目 i 番目の荷重ベクトルの要素は、i 番目の固有ベクトルの k 番目の要素に k 番目の固有ベクトルの 4 乗根を乗じたものです。
    • User loading weights:
      0≤ω≤1の場合 はユーザー定義のスケーリング係数を示し、対応する固有ベクトルの k 番目の要素を k 番目の固有値の ω/2 乗でスケーリングすることによって負荷ベクトルが形成されます。
  3. ここではすべてデフォルト値を使用します。 つまり、最初の 2 つの成分にわたる荷重プロットを調べ、Normalize Loadings スケーリングを使用します。 言い換えれば、スケーリングは 1 であるため、真の固有ベクトルをプロットします。 最初の 2 つの主固有値のみを保持し、残りを破棄することを決定した次元削減に関する以前の分析が、特に最初の 2 つの主固有値のみを調べるという選択の動機となっていることに注意してください。
    OKをクリックして作図します。
    データ
  4. ローディングプロット内のベクトル間の角度は、負荷ベクトルが関連付けられている元の変数間の相関関係に関連しています。 したがって、MURDERとASSAULTは、ASSAULTとRAPEと同様に中程度の正の相関があることがわかりますが、後者の2つは前の2 つよりも相関が低いことがわかります。
    さらに、RAPE と URBANPOP には正の相関があるのに対し、MURDER と URBANPOP はほぼ 90 度の角度を形成しているため、相関がほとんどないことは明らかです。 言い換えれば、4次元相関行列の2次元グラフ表現が得られます。 高次元の情報を低次元空間で表現できるこの機能は、おそらく PCA の最も有用な機能です。
    さらに、MURDER、ASSAULT、および RAPE の3つの変数はすべて、第1主成分と強い相関があるのに対し、URBANPOP は第 2 の主成分と強く相関しています。 実際、ベクトルの長さを見ると、MURDER、ASSAULT、RAPE がほぼ同等に優勢であるのに対し、URBANPOP は、第2成分の方向ではあるものの、前の 3 つのいずれよりも大幅に長いこともわかります。

スコアプロット

  • ローディングプロットを作成し、各変数と主成分の関係を確認する

  1. ローディンプロットと同様に、ここでは、EViews はスコア ベクトルの「XY」ペア プロットを生成します。 プロットをロードする場合と同様に、ユーザーは比較するスコア ベクトルを指定し、次のスケーリングから 1 つを選択します。
    さらに、外れ値の検出が必要な場合、EViews を使用すると、ユーザーは検出しきい値として p 値を指定できます。 現在、解釈の練習に興味があるため、外れ値の検出を省略し、すべての観測値を表示することを選択します。 これを行うには、Graph optionsグループのオプションで、Obs. LabelsLabel all obs.に変更し、OKをクリックします。
    データ
  2. 生成される出力は、主成分 1 (スコア ベクトル 1) と主成分 2 (スコア ベクトル 2) の散布図です。 ここで重要な見地が得られます。
    まず、点が縦軸ゼロの右にあるほど、第 1 主成分との相関がより高くなります。 後者は、殺人、暴行、および強姦の 3 つの犯罪カテゴリによって正に支配されているため、そのような状態は前記犯罪と正の相関があると結論付けられます。 当然のことながら、逆の結論も同様に成り立ちます。 特に、カリフォルニア、ネバダ、フロリダが検討中の 3 つの犯罪と最も正の相関があることがわかります。 これが本当に事実であれば、ほとんどのハリウッド作品が通常、これら 3 つの州を舞台にした犯罪スリラーに関わっていることは驚くことではありません。 逆に、ノースダコタ州とバーモント州は通常、検討中の犯罪との関連性が最も低いです。
    第 2 に、状態が水平軸より上に位置するほど、第 2 主方向との正の相関が高くなります。 後者は変数 URBNAPOP によって正の方向に支配されているため、そのような状態は都市化と正の相関があると結論付けます。 繰り返しますが、逆の結論も同様に当てはまります。特に、ハワイ、カリフォルニア、ロードアイランド、マサチューセッツ、ユタ、ニュージャージーは都市化と最も積極的に関連している州である一方、サウスカロライナ、ノースカロライナ、ミシシッピ州は都市化と最も積極的に関連していないと言えます。
    データ

バイプロット

  • ローディングプロットとスコアプロットを重ねて表示

  1. 最後に、負荷ベクトルとスコア ベクトルをバイプロットと呼ばれる1つのグラフに重ね合わせます。 これを行うには、再度、メインの主成分ダイアログを表示し、ViewグループでBiplot (scores & loadings)を選択します。
    データ
  2. 推論的な観点から、前の 2 つのセクションで説明した内容以外に貢献できることはほとんどありません。 それにもかかわらず、負荷ベクトルとスコア ベクトルの両方を同じグラフに表示することで、以前の分析が視覚的に補強されます。 したがって、このセクションはグラフィック出力のみで終了します。

最後に

  1. ここでは、EViews を使用して、米国 50 州にわたる重大犯罪に対する PCA の簡単なデータ探索的実装を実施しました。 その目的は、EViews で利用できる多数の PCA ツールの使用法を、それぞれに関連する簡単な解釈とともに説明することでした。
    最後に、上で使用した主要な主成分ダイアログとは別に、Proc > Make Principal Components...と操作する 機能も提供していることを指摘しておきます。これは、主成分に関連する最も重要なオブジェクトのベクトルと行列を生成するための統一フレームワークを提供します。 これらには、固有値のベクトル、固有ベクトルの行列、負荷ベクトルの行列、およびスコアの行列が含まれます。
    データ
  2. ここから、ワークファイルに配置したいすべてのオブジェクトの名前を挿入し、荷重ベクトルとスコア ベクトルの作成で使用したいスケーリングを選択し、OKをクリックします。
page_top_icon