因子分析の2因子モデルが計算できる
「因子分析ってどうやって解くのかがわからない」などと困っていませんか?
こういう疑問に答えます。
本記事のテーマ
おさえておきたいポイント
- ①2因子モデルを式で表現
- ➁モデル式から分散・共分散を導出
- ➂因子負荷量を計算
- ➃共通因子と誤差を計算
Excelや公式は暗記不要!
自力で導出できるぜ!
この記事では、導出過程はすでに関連記事で解説しています。先に確認ください。導出過程を見ながら本記事では実際に計算して解いていきます。
因子分析の2因子モデルが導出できる 因子分析が計算できますか? 本記事では、因子分析の2因子モデルにおける計算方法を解説します。2因子の解析過程の注意点が理解できれば、多因子でも適用できます。計算ツールに頼らず、手計算で理解できるようにわかりやすく解説しています。多変量解析を学ぶ人は必読です。 |
①2因子モデルを式で表現
下表のように、例えば、あるデータがあり、変数x,y,zがあるとしましょう。
No | A | B | C |
1 | 30 | 58 | 54 |
2 | 60 | 50 | 60 |
3 | 40 | 60 | 55 |
4 | 80 | 32 | 68 |
5 | 56 | 70 | 71 |
6 | 65 | 54 | 76 |
7 | 22 | 28 | 30 |
8 | 100 | 72 | 96 |
9 | 65 | 80 | 88 |
10 | 32 | 46 | 52 |
和 | 550 | 550 | 650 |
平均 | 55 | 55 | 65 |
標準偏差 | 23.12 | 15.93 | 18.15 |
このデータを、
主成分分析のように、2つの共通変数F、Gに集約できなか?
を考えます。
つまり式と図で表現すると、
\(
\left(
\begin{array}{c}
x_i \\
y_i \\
z_i
\end{array}
\right)
\)=\(F_i\)\(
\left(
\begin{array}{c}
a_{x}\\
a_{y}\\
a_{z}
\end{array}
\right)
\)+\(G_i\)\(
\left(
\begin{array}{c}
b_{x}\\
b_{y}\\
b_{z}
\end{array}
\right)
\)+\(
\left(
\begin{array}{c}
e_{xi}\\
e_{yi}\\
e_{zi}
\end{array}
\right)
\)
各値を共通因子と誤差に相当する独自因子に分割します。
式と図から、
●変数である共通因子F,G
●変数である誤差でもある独自因子e
にわけて、
●変数である共通因子F,Gに意味を持たせる
をやるのが因子分析です。
データを標準化
因子分析はモデル式から分散・共分散を導出するときに、データの標準化が必須です。先にデータを標準化しましょう。
標準化は\(z\)=\(\frac{x-\bar{x}}{σ}\)です。
No | A | B | C |
1 | -1.08 | 0.19 | -0.61 |
2 | 0.22 | -0.31 | -0.28 |
3 | -0.65 | 0.31 | -0.55 |
4 | 1.08 | -1.44 | 0.17 |
5 | 0.04 | 0.94 | 0.33 |
6 | 0.43 | -0.06 | 0.61 |
7 | -1.43 | -1.69 | -1.93 |
8 | 1.95 | 1.07 | 1.71 |
9 | 0.43 | 1.57 | 1.27 |
10 | -0.99 | -0.56 | -0.72 |
和 | 0 | 0 | 0 |
平均 | 0 | 0 | 0 |
標準偏差 | 1 | 1 | 1 |
また、分散・共分散も計算すると以下のとおりです。
– | \(s_x\) | \(s_y\) | \(s_z\) |
分散 | 1 | 1 | 1 |
– | \(s_{xy}\) | \(s_{yz}\) | \(s_{xz}\) |
共分散 | 0.371 | 0.732 | 0.874 |
➁モデル式から分散・共分散を導出
詳細な導出は関連記事で
分散・共分散の導出過程も関連記事で解説しています。先にご確認ください。
因子分析の2因子モデルが導出できる 因子分析が計算できますか? 本記事では、因子分析の2因子モデルにおける計算方法を解説します。2因子の解析過程の注意点が理解できれば、多因子でも適用できます。計算ツールに頼らず、手計算で理解できるようにわかりやすく解説しています。多変量解析を学ぶ人は必読です。 |
結果まとめ
分散と共分散の結果は以下のとおりになります。
●\(a_y^2\)+\(b_y^2\)+\(V(e_y)\)=1
●\(a_z^2\)+\(b_z^2\)+\(V(e_z)\)=1
と
●\(r_{xy}\)=\(a_x a_y\)+\(b_x b_y\)
●\(r_{yz}\)=\(a_y a_z\)+\(b_y b_z\)
●\(r_{xz}\)=\(a_x a_z\)+\(b_x b_z\)
から、\(a_○\),\(b_○\)を計算すればOKですが、
手計算はかなりキツイ。。。
なので、最小二乗法を活用してExcelで計算します。
➂因子負荷量を計算
SMC法から因子負荷量の2乗和を計算
相関係数行列\(R\)の逆行列の\(ii\)要素を\(r^{ii}\)として、
\(h_i^2\)=1-\(\frac{1}{r^{ii}}\)
\(h_i^2\)=\(a_i^2\)+\(b_i^2\)
\(V(e_i)\)=1-\(h_i^2\)
の関係式を使って計算する方法です。この理論の背景は現在調査中です。分かり次第報告します。
因子負荷量を最小二乗法から計算
SMC法を使って
●\(h_x^2\)=\(a_x^2\)+\(b_x^2\)
●\(h_y^2\)=\(a_y^2\)+\(b_y^2\)
●\(h_z^2\)=\(a_z^2\)+\(b_z^2\)
から、求めます。
●\(h_y^2\)=\(a_y^2\)+\(b_y^2\)
●\(h_z^2\)=\(a_z^2\)+\(b_z^2\)
と
●\(r_{xy}\)=\(a_x a_y\)+\(b_x b_y\)
●\(r_{yz}\)=\(a_y a_z\)+\(b_y b_z\)
●\(r_{xz}\)=\(a_x a_z\)+\(b_x b_z\)
ここで、\(Q\)を
\(Q\)=\(((a_x^2+b_x^2)-h_x^2)^2\)
+\(((a_y^2+b_y^2)-h_y^2)^2\)
+\(((a_z^2+b_z^2)-h_z^2)^2\)
+2\((( a_x a_y+ b_x b_y)- r_{xy}^2)^2\)
+2\((( a_y a_z+ b_y b_z)- r_{yz}^2)^2\)
+2\((( a_x a_z+ b_x b_z)- r_{xz}^2)^2\)
と定義して、この\(Q\)が最小値(なるべく0)となる場合を
Excelで計算してもらいます。
最小二乗法の計算をExcelに託す
\(Q\)の式を行列表記します。
\(Q\)=\((\left(
\begin{array}{cccc}
h_x^2 & r_{xy} & r_{xz} \\
r_{xy} & h_y^2 & r_{xy} \\
r_{xz} & r_{xy} & h_z^2
\end{array}
\right)\)
-\(\left(
\begin{array}{cccc}
a_x^2+b_x^2 & a_x a_y+ b_x b_y & a_x a_z+ b_x b_z \\
a_x a_y+ b_x b_y & a_y^2+b_y^2 & a_y a_z+ b_y b_z \\
a_x a_z+ b_x b_z & a_y a_z+ b_y b_z & h_z^2
\end{array}
\right))^2
\)
上の式を満たすように、
\(a_○\),\(b_○\)の値を数値計算から求めます。
Excelを使った計算方法
上の式で行列表記したものを下図のように
●➂因子決定行列R*
●➃因子負荷行列
●➄最小値計算Q
に代入します。
Excelの「データ」⇒「ソルバー」で、
Qの最小値となる因子負荷量の各値に制約条件を入れて求めます。
注意なのは、
●数値計算がうまく収束しないこと
●Qの最小値が0.01程度まで下がるまで制約条件を変えて解析する必要がある
解の妥当性はよく確認することが必要です。
今回は、Excelがはじき出した値を使って、残りの値を計算します。
●\(b_x\)=-0.45、\(b_y\)=0.552、\(b_z\)=-0.023
➃共通因子と誤差を計算
あとは、誤差と共通因子を計算すれば、因子分析の一連の流れが計算できます。
誤差を計算
誤差\(V(e_x)\), \(V(e_y)\), \(V(e_z)\)は関係式から計算できます。
●\(V(e_x)\)=1-\(h_x^2\)
●\(V(e_y)\)=1-\(h_y^2\)
●\(V(e_z)\)=1-\(h_z^2\)
計算はできるのですが、1つ問題があります。
実は共通因子Fの各値を計算してから、個別の誤差の値を計算します。
共通因子Fを計算
実は、推定方法から計算します。この推定方法の導出はQCプラネッツで調査中です。
共通因子Fの計算方法
ただし、
●\(Z\):標準化データ行列(\(x_i,y_i,z_i\)は標準化対応済が前提)
●\(R\):相関係数行列
●\(A\):因子負荷量ベクトル
(1因子モデルはベクトル、2因子以上なら行列)
3変数、2因子モデルの場合、具体的に記述すると
\(
\left(
\begin{array}{c}
F_1 & G_1\\
F_2 & G_2\\
\vdots \\
F_n & G_2
\end{array}
\right)
\)
=\(\left(
\begin{array}{cccc}
x_{1} & y_{1} & z_{1} \\
x_{2} & y_{2} & z_{2} \\
\vdots & \vdots & \vdots \\
x_{n} & y_{n} & z_{n}
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
h_x^2 & r_{xy} & r_{xz} \\
r_{xy} & h_y^2 & r_{yz} \\
r_{xz} & r_{xy} & h_z^2
\end{array}
\right)^{-1}
\)\(
\left(
\begin{array}{c}
a_x & b_x \\
a_y & b_y \\
a_z & b_z
\end{array}
\right)
\)
で計算できます。
実際に計算してみると
\(
\left(
\begin{array}{c}
F_1 & G_1\\
F_2 & G_2\\
\vdots \\
F_n & G_2
\end{array}
\right)
\)
=\(\left(
\begin{array}{cccc}
-1.08 & 0.19 & -0.61 \\
0.22 & -0.31 & -0.28 \\
\vdots & \vdots & \vdots \\
-0.99 & -0.56 & -0.72
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
12.433 & 7.177 & -16.123 \\
7.177 & 6.295 & -10.882 \\
-16.123 & -10.882 & 23.060
\end{array}
\right)
\)\(
\left(
\begin{array}{c}
0.854 & -0.45 \\
0.737 & 0.552 \\
0.991 & -0.023
\end{array}
\right)
\)
=\(
\left(
\begin{array}{c}
-0.571 & 1.023\\
-0.303 & -0.626\\
-0.545 & 0.579\\
0.121 & -1.961\\
0.334 & 0.649\\
0.615 & -0.142\\
-1.924 & -0.423\\
1.663 & -0.702\\
1.294 & 1.141\\
-0.683 & 0.462
\end{array}
\right)
\)
で計算できます。
誤差Eを計算
誤差Eは残りなので、上の式を使うと、
\(\left(
\begin{array}{cccc}
x_1 & y_1 & z_1 \\
x_2 & y_2 & z_2 \\
\vdots & \vdots & \vdots \\
x_n & y_n & z_n
\end{array}
\right)
\)
=\(
\left(
\begin{array}{c}
F_1 \\
F_2 \\
\vdots \\
F_n
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
a_x & a_y & a_z
\end{array}
\right)
\)
+\(
\left(
\begin{array}{c}
G_1 \\
G_2 \\
\vdots \\
G_n
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
b_x & b_y & b_z
\end{array}
\right)
\)
+\(\left(
\begin{array}{cccc}
e_{x1} & e_{y1} & e_{z1} \\
e_{x2} & e_{y2} & e_{z2} \\
\vdots & \vdots & \vdots \\
e_{xn} & e_{yn} & e_{zn}
\end{array}
\right)
\)
から、誤差行列
\(\left(
\begin{array}{cccc}
e_{x1} & e_{y1} & e_{z1} \\
e_{x2} & e_{y2} & e_{z2} \\
\vdots & \vdots & \vdots \\
e_{xn} & e_{yn} & e_{zn}
\end{array}
\right)
\)
の個々の値が計算できます。
実際に誤差行列を計算すると
\(\left(
\begin{array}{cccc}
-0.134 & 0.044 & -0.017 \\
0.194 & 0.255 & 0.011 \\
0.077 & 0.396 & 0.002 \\
0.095 & -0.45 & 0 \\
0.05 & 0.337 & 0.014 \\
-0.156 & -0.438 & -0.007 \\
0.026 & -0.043 & -0.03 \\
0.211 & 0.229 & 0.043 \\
-0.159 & -0.014 & 0.011 \\
-0.204 & -0.316 & -0.029
\end{array}
\right)
\)
ここまで、各値を計算した上で、共通因子F,Gの意味を考えて、因子分析ができたといえます。
データ事例を使って計算できました。
まとめ
「因子分析の2因子モデルが計算できる」を解説しました。
- ①2因子モデルを式で表現
- ➁モデル式から分散・共分散を導出
- ➂因子負荷量を計算
- ➃共通因子と誤差を計算
Warning: count(): Parameter must be an array or an object that implements Countable in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 119