因子分析について
変数の背景に別の関係性があることを仮定して推定する方法
因子分析相関というよりも、潜在因子を説明する・見つける方法
View Slide
多次元のデータを少数次元へと変換する主成分分析と同じような気持ち発端となる手法は「共通因子分析モデル」であるところがPCAとの違い(思想は同じで発達が違う。ネアンデルタール人とホモサピエンスのような関係)
分析に使う変数はすべて0~1に正規化されたデータであるという前提を置く=′ − ഥ′′21= 1+ 1因子分析は(正規化された)データを以下のように変形させる。添え字 iはデータ点ごとのインデックスであるあるクラスの期末試験の点数一覧があるなら iさんの科目1の点数である科目1のテストの難しさをa1で表現する科目ごとのノイズeも足す※個人の能力 fi と表し、これはほかの科目でも共通であるため、添え字はiだけである。
a j を因子負荷量f i を共通因子(別名:因子得点独立であるという前提時には直交因子とも呼ぶ。相関を含む場合には斜交因子と。)e ij は独自因子共通因子はデータ点ごとの固有の値であるが、分解して増やすこともできる。その場合a jが増えるので解釈は難しくなる
データの相関の計算ノイズであるeは独立であるはず e*e = 0ノイズと共通因子は独立であるはず e*f = 0以上の独立の過程を元に、相関を計算すると、=− ҧ− ҧ1 1− ҧ2 1σ1 − ҧ2正規化したデータであるため、平均は0である残った部分を因子分析のモデルに当てはめるならば以下のようになる11=11+ +
これは展開によって計算できる(AX+B)(CX+D) = AC X^2 + ADX + BCX + BDここで、ノイズの期待値が0ならば、B,Dの関わる項は0になる。のこるはAC X^2共通因子であるf もまた、平均0,分散1であるので ←X^2は分散となり、1である。AC * 1 = aj * avが残る11=11+ +
ノイズは期待値0であり、分散をtと仮定するこの場合、自己相関 r jj はaj ^2 + t j ^2 = 1となる。 ←分散共分散行列は1 1213211 233132112 + 12 12132122 + 22 23313232 + 32==12 22 32+12 0 00 22 00 0 32123123+ diag 122232=因子負荷量(列ベクトル) ↑独自因子
行列形式で簡便に記述すると以下のようになる = + 行列形式で簡便に記述すると以下のようになる以降から、特に因子負荷量である列ベクトルAをΛ(らむだ) として記述する多因子を考えたい場合(aを増やしたい)、因子負荷量ベクトルは、変数j × 共通因子i の行列となる。
因子負荷量の求め方rank(ΛΛ^t) = 1 であるのでΛtΛ の二次小行列式が0である。 ← 12 12212212 22 − 1221= 0=ΛΛ^t の列和を t +i 総和をt ++ として表現する+= , +2+ 3++= , +2+ 32=+ + +これらを使うと、因子負荷量は以下のように表現(計算)できる重心法(セントロイド法)
あ
そもそも、サーストンの多因子モデルは、多因子(行列) になっただけ。 = + AでもΛでもどっちでもいいAA^t はランクmであるこの対角要素を「共通性」として扱うTの対角要素を「独自性(固有性)」として扱うj番目の変数xjの変動のうち、f ik は共通因子で説明できる量のことである。fをいくつにするか(k=1 or more ?)という問題は、経験的に決めるか、仮説があってからkを決める。
主因子法 = + AA^t = R – Tここで左式の対角成分が「共通性」であるのだから、右辺の対角成分である、1-t^2 たちを計算することで求まるはずこの右辺を「縮約相関係数行列」 とよぶ
p次元データにm因子(fがm個) を当てはめて求める場合を考える以下、R = pの相関行列 p*pL = 因子負荷量行列 p*mΦ = 対角が分散Φiである対角行列 p*p (共通因子で説明できないばらつき・特異性・独自性)尤度関数はg(L,Φ)であり、これの最大化を考える
まずΦを求める1-共通性によってノイズ行列 T が求まるはず因子負荷量行列 L は、固有値・固有ベクトルとして求まる
主因子法step 1ΛΛ^t の相関行列の最大値を見つける。最大値のある列をj列とするΛΛ^t のjj成分として代入する他の成分はそのままstep2step 1で得た対角行列の固有値と固有ベクトルを計算する。このとき、√固有値 * 固有ベクトル = 因子負荷量 akである得られたakによる行列をΛ_hat とする。(akはp*mの行列であるはず)step3独自因子の分散は T = 1 – Σ ak^2 である求めたTをΛ_hat Λ_hat ^t の対角行列に代入し、再び固有値・固有ベクトルを求めるTの変化量が少なくなったら(二乗ノルムが0.0001以下とか) 止める。
因子負荷量を解釈する共通因子=2と仮定してモデルを作ったとするΛ = 2*3行列だったならば、これをΘだけ回転を加える。cosΘ –sinΘsinΘ cosΘという行列をかける。逆方向(-Θ)に開店させる場合計算略cosΘ sinΘ-sinΘ cosΘ
さらに、 G^t G = I となることから、直交行列であることが分かるつまり、ΛをG行列で回転させて得た時の Λ*G = Λ_hat もまた、Λの推定量である。では、どのような回転が最も良いのか?理屈は不明だが、バリマックス回転が良い回転であることが知られている。が最大となるように回転角度を決める方法 = ා=112 2−122
f の推定=1~− −1 − これを最小化するには、= −1 −1−1※ Tは独自因子の分散行列である