Geminiは便利だ。
はい、承知いたしました。このRのスクリプトは、主成分分析の結果から「固有ベクトル(負荷量)」を「主成分負荷量(相関係数)」に変換するためのものです。
スクリプト全体
pca_loadings <- sweep(pca_rotation, 2, pca_result$sdev, FUN = "*")
各要素の解説
1. sweep() 関数
この関数は、配列(行列やデータフレーム)の各行または各列に対して、特定の値をまとめて演算する際に非常に便利です。
sweep(x, MARGIN, STATS, FUN) の形式で使われます。
-
x: 演算を行う対象の配列(この場合はpca_rotation) -
MARGIN: 演算を適用する方向。-
1: 行ごと -
2: 列ごと(今回のケース)
-
-
STATS: 演算に用いる値のベクトル(この場合はpca_result$sdev) -
FUN: 適用する演算の関数(この場合は"*"、つまり乗算)
2. pca_rotation
これは prcomp() の出力である $rotation に格納されている行列で、**固有ベクトル(Eigenvector)**を表します。この行列の各列が各主成分(PC1, PC2, ...)に対応し、各行が元の変数(v1, v2, v3, ...)に対応します。
3. pca_result$sdev
これは prcomp() の出力である $sdev に格納されているベクトルで、各主成分の標準偏差(Standard Deviation)を表します。主成分分析においては、この標準偏差の二乗が**固有値(Eigenvalue)**に相当します。
4. *(乗算)
FUN = "*" は、sweep() が行う演算が乗算であることを指定しています。
スクリプトの動作
このスクリプトは、数学的に以下の計算を実行しています。
-
pca_result$sdev(各主成分の標準偏差)は、sweep()関数のSTATS引数として使われます。 -
MARGIN = 2なので、pca_rotation行列の各列に対して、pca_result$sdevの対応する要素を掛け合わせる演算が行われます。 -
具体的には、
-
pca_rotationの **PC1の列(固有ベクトル)**の各要素に、pca_result$sdevの PC1の標準偏差を掛けます。 -
pca_rotationの **PC2の列(固有ベクトル)**の各要素に、pca_result$sdevの PC2の標準偏差を掛けます。 -
...という操作を、すべての主成分に対して行います。
-
なぜこの計算が必要か?
主成分負荷量は「各変数と主成分との相関係数」であり、これは固有ベクトルに固有値の平方根を掛けたものに等しくなります。
-
prcomp()の$sdevは、まさに固有値の平方根です。 -
prcomp()の$rotationは、固有ベクトルです。
したがって、sweep() 関数を使って prcomp() の $rotation(固有ベクトル)の各列に、$sdev(固有値の平方根)を掛け合わせることで、数学的に正確な**主成分負荷量(相関係数)**を計算しているのです。
この結果として得られる pca_loadings は、各変数が各主成分とどれだけ強く関連しているかを、からの範囲の相関係数として示してくれます。
「e. 統計」カテゴリの記事
- COR(候補者超過達成比率)の分布(参院選2025年福岡のデータ)(2025.12.24)
- 2種類のグラフ:参院選2025年福岡の市町村別の政党得票数(比例代表)及び候補者得票数(選挙区)の対応分析(2025.12.22)
- 政党と候補者の市町村別得票数(参院選2025年福岡)(2025.12.21)
- 地域や政党のクラスタリング(参院選2025年福岡のデータの対応分析に基づく)(2025.12.20)
- CAのあとにクラスタリングをするというオプションがRコマンダーにあった。(2025.12.18)
「f. 統計言語R」カテゴリの記事
- 2種類のグラフ:参院選2025年福岡の市町村別の政党得票数(比例代表)及び候補者得票数(選挙区)の対応分析(2025.12.22)
- 地域や政党のクラスタリング(参院選2025年福岡のデータの対応分析に基づく)(2025.12.20)
- CAのあとにクラスタリングをするというオプションがRコマンダーにあった。(2025.12.18)
- [資料]参院選2025年データ(政党得票数と候補者得票数、政党の得票数と相対得票率) (2025.12.16)