日々の事柄に関する雑記帳。



用語

contribution寄与度
寄与率
factor loading因子荷重
負荷量
factor score因子得点
principle component score主成分スコア

主成分分析

極力、情報を減らさずに次元を減らす方法。→データをよく説明する軸を見つける。
  • データの全体像を2本の軸で見つける。
  • 寄与率の高い主成分を見つける。
分散共分散行列による分析と、相関行列による分析で結果が異なる。
主成分データ全体の特徴を表す指標
~総合特性
観測値の線形結合で得られる変数
寄与率データ全体に対して、主成分が持つ情報の割合
主成分が持つ分散と、全体の分散の比率
固有値主成分の分散
総合特性の分散
固有ベクトル線形結合(線形変換)の係数
因子負荷量主成分と変数の相関係数
新しい変数への、元の変数の寄与を示す。
主成分スコア主成分との関係性。

特徴

  • 変数の線形結合により、新しい変数を作る。
  • 次元の縮約により、多変量のデータの特徴を把握する。
  • 複数の変数の関係を整理して表現する。
  • 多次元の変数が持つ情報を、より小さな次元で表現する。
分散情報の多さを測る。
分散が大きいほど、情報が多い。
相関係数情報の重複を測る。
相関係数が大きいほど、情報は重複している。
分散が最大、相関係数が最小、あるいは相関がない。→情報が多く、重複が少ない、あるいは重複がない。


p個の観測値から、新しい変数(総合特性)を得る。
n個体、p次元の変数から、新しい変数を得る。
  • y1の係数w1pは、分散V(y1)が最大になるように求める。
  • y2の係数w2pは、共分散Cov(y1, y2)=0で、V(y2)が最大になるように求める。
  • ymの係数wmpは、共分散Cov(ym-2, ym)-Cov(ym-1, ym)=0で、V(ym)が最大になるように求める。
共分散が0→相関がない。
V(y1) >= V(y2) >= ... >= V(ym)となる。

ymを第m主成分と呼ぶ。
固有値、固有ベクトルとの関係
  • データの総分散と、固有値の合計は等しい。
  • 固有ベクトルの平方和は1。
  • 固有ベクトルは直交する。固有ベクトルの内積は0。
  • 固有ベクトルの転置行列×分散共分散行列×固有ベクトル行列=対角行列、その対角成分には固有値が降順に並ぶ。


y=w_1x_1+w_2x_2+\cdots+w_px_p \\
\vspace{\baselineskip} \\

m \leq p \\
\begin{bmatrix}
y_1 \\
y_2 \\
\vdots \\
y_m
\end{bmtrix}
=
\begin{bmatrix}
w_11 & w_12 & \cdots & w_1p \\
w_21 & w_22 & \cdots & w_2p \\
\vdots \\
w_m1 & w_m2 & \cdots & w_mp
\end{bmtrix}
\begin{bmatrix}
x_1 \\
x_2 \\
\vdots \\
x_p
\end{bmtrix}
\vspace{\baselineskip} \\

\sum_{j=1}^{p}w_{ij}^2=1 \\
\vspace{\baselineskip} \\

\begin{align}
y&=\sum_{j=1}^{p}w_{j}x_{j} \\
y_i&=\sum_{j=1}^{p}w_{j}x_{ij}
\end{align}
\vspace{\baselineskip} \\

\begin{align}
V(y)&=\frac{1}{N} \sum_{i=1}^{N}(y_i-\bar{y})^2 \\
&=\frac{1}{N} \sum_{i=1}^{N} \{\sum_{j=1}^{p}(w_j(x_{ij}-\bar{x_j})\}^2 \\
&=\sum_{i=1}^{p} \sum_{k=1}^{p}w_{j}s_{jk}w_k
\end{align}
\vspace{\baselineskip} \\

N=\left\{
\begin{array}
n \\
n-1
\end{array}
\right.
\vspace{\baselineskip} \\

s_{jk}=\left\{
\begin{array}
\begin{align}
(j=k)& s_{j}^2=\frac{1}{N} \sum_{i=1}^{p}(x_{ij}-\bar{x_j})^2 \\
(j\neq k)& s_{jk}=\frac{1}{N} \sum_{i=1}^{p}(x_{ij}-\bar{x_j})(x_{ik}-\bar{x_k})
\end{align}
\end{array}
\right.




R

N-1の自由度が適用される。
scale. = TRUE相関行列による分析
scale. = FALSE分散共分散行列による分析
$sdev主成分の標準偏差
$rotation負荷量
cor = TRUE相関行列による分析
|cor = FALSE|分散共分散行列による分析
score = TRUE主成分スコアを計算する。
$sdev主成分の標準偏差
$loadings負荷量
$scores主成分スコア
library(FactoMineR)
scale.unit = TRUE相関行列による分析
scale.unit = FALSE分散共分散行列による分析
graph = TRUEグラフを表示
$eig固有値、分散の割合と累積率
$var変数の座標、変数と次元との相関係数、cosの2乗(情報量)、寄与率
$ind個別の座標、cosの2乗(情報量)、寄与率
$svd固有値分解

> pca = prcomp(swiss, scale. = TRUE)
> pca
Standard deviations (1, .., p=6):
[1] 1.7887865 1.0900955 0.9206573 0.6625169 0.4522540 0.3476529

Rotation (n x k) = (6 x 6):
                        PC1        PC2         PC3         PC4         PC5         PC6
Fertility        -0.4569876  0.3220284 -0.17376638  0.53555794 -0.38308893  0.47295441
Agriculture      -0.4242141 -0.4115132  0.03834472 -0.64291822 -0.37495215  0.30870058
Examination       0.5097327  0.1250167 -0.09123696 -0.05446158 -0.81429082 -0.22401686
Education         0.4543119  0.1790495  0.53239316 -0.09738818  0.07144564  0.68081610
Catholic         -0.3501111  0.1458730  0.80680494  0.09947244 -0.18317236 -0.40219666
Infant.Mortality -0.1496668  0.8111645 -0.16010636 -0.52677184  0.10453530 -0.07457754
> 
> pca = princomp(swiss, cor = TRUE, scores = TRUE)
> pca
Call:
princomp(x = swiss, cor = TRUE, scores = TRUE)

Standard deviations:
   Comp.1    Comp.2    Comp.3    Comp.4    Comp.5    Comp.6 
1.7887865 1.0900955 0.9206573 0.6625169 0.4522540 0.3476529 

 6  variables and  47 observations.
> 
> library(FactoMineR)
> pca = PCA(swiss, ncp = ncol(swiss), scale.unit = TRUE, graph = FALSE)
> pca$svd$vs
[1] 1.7887865 1.0900955 0.9206573 0.6625169 0.4522540 0.3476529
> 
タグ

管理人/副管理人のみ編集できます