QCプラネッツ 品質のプロフェッショナルを育成するサイト

因子分析の1因子モデルが導出できる

多変量解析

「因子分析ってどうやって解くのかがわからない」などと困っていませんか?

こういう疑問に答えます。

本記事のテーマ

因子分析の1因子モデルが導出できる

おさえておきたいポイント

  • ①1因子モデルを式で表現
  • ➁モデル式から分散・共分散を導出
  • ➂仮定を入れて式を簡略化
  • ➃因子負荷量を計算
  • ➄共通因子と誤差を計算
因子分析は自分で解けます!
Excelや公式は暗記不要!
自力で導出できるぜ!

①1因子モデルを式で表現

下表のように、例えば、あるデータがあり、変数x,y,zがあるとしましょう。

No \(x\) \(y\) \(z\)
1 \(x_{1}\) \(y_{1}\) \(z_{1}\)
2 \(x_{2}\) \(y_{2}\) \(z_{2}\)
n \(x_{n}\) \(y_{n}\) \(z_{n}\)

このデータを、
主成分分析のように、ある共通変数Fに集約できなか?
を考えます。

つまり式と図で表現すると、
\(
\left(
\begin{array}{c}
x_i \\
y_i \\
z_i
\end{array}
\right)
\)=\(
\left(
\begin{array}{c}
a F_i\\
b F_i\\
c F_i
\end{array}
\right)
\)+\(
\left(
\begin{array}{c}
e_{xi}\\
e_{yi}\\
e_{zi}
\end{array}
\right)
\)

因子分析

各値を共通因子と誤差に相当する独自因子に分割します。

因子分析

式と図から、

●定数である因子負荷量
●変数である共通因子F
●変数である誤差でもある独自因子e
にわけて、
●変数である共通因子Fに意味を持たせる
をやるのが因子分析です。

数式を使って、わかりやすく因子分析を導出していきます。

➁モデル式から分散・共分散を導出

モデル式から分散・共分散を導出

3変数\(x,y,z\)で、次の分散
\(s_x^2\),\(s_y^2\),\(s_z^2\)
と共分散
\(s_{xy}\),\(s_{xz}\),\(s_{yz}\)
を考えます。

分散\(s_x^2\)

\(s_x^2\),\(s_y^2\),\(s_z^2\)のうち、\(s_x^2\)を代表として計算します。
\(s_x^2\)=\(V(aF+e_x)\)
分散の加法性から
=\(a^2V(F)+2aCov(F,e_x)+V(e_x)\)
と計算できます。

\(s_y^2\),\(s_z^2\)は同様に計算すると、
\(s_y^2\)=\(a^2V(F)+2aCov(F,e_y)+V(e_y)\)
\(s_z^2\)=\(a^2V(F)+2aCov(F,e_z)+V(e_z)\)
ですね。

共分散\(s_{xy}\)

\(s_{xy}\),\(s_{yz}\),\(s_{xz}\)のうち、\(s_{xy}\)を代表として計算します。
\(s_{xy}\)=\(Cov(aF+e_x,bF+e_y)\)
分散の加法性から
=\(ab Cov(F,F)+aCov(F,e_y)+bCov(e_x,)+Cov(e_x,e_y)\)
=\(ab V(F)+aCov(F,e_y)+bCov(e_x,F)+Cov(e_x,e_y)\)
と計算できます。

\(s_{yz}\),\(s_{xz}\)も同様に計算すると、
\(s_{yz}\)=\(bc V(F)+bCov(F,e_z)+cCov(e_y,F)+Cov(e_y,e_z)\)
\(s_{xz}\)=\(ac V(F)+aCov(F,e_z)+cCov(e_x,F)+Cov(e_x,e_z)\)
となります。

➂仮定を入れて式を簡略化

式を簡略化するため仮定を入れる

●分散の式
\(s_x^2\)=\(a^2V(F)+2aCov(F,e_x)+V(e_x)\)
●共分散の式
\(s_{xy}\)=\(ab V(F)+aCov(F,e_y)+bCov(e_x,F)+Cov(e_x,e_y)\)
が長い式なので、仮定を入れて式を簡略化します。

  1. 因子間は独立とする
  2. 変数を標準化(平均0,標準偏差1)とする

つまり、

  1. 独立⇒\(Cov(●,□\))=0
  2. 標準化⇒\(S_x^2\)、\(S_y^2\)、\(S_z^2\)、\(V(F)\)はすべて1

では簡略化してみます。

分散を簡略化

●分散の式
\(s_x^2\)=\(a^2V(F)+2aCov(F,e_x)+V(e_x)\)
1=\(a^2+V(e_x)\)
となり、同様に計算して結果をまとめると、

●1=\(a^2+V(e_x)\)
●1=\(b^2+V(e_y)\)
●1=\(c^2+V(e_z)\)
と簡単になりましたね。

共分散を簡略化

●共分散の式
\(s_{xy}\)=\(ab\)
となり、同様に計算して結果をまとめると、

●\(s_{xy}\)=\(ab\)
●\(s_{yz}\)=\(bc\)
●\(s_{xz}\)=\(ac\)
と簡単になりましたね。

➃因子負荷量を計算

因子負荷量を計算

しかも、共分散\(s_{xy}\),\(s_{yz}\),\(s_{xz}\)は
実データから計算できるので、
\(a,b,c\)が計算できますね。

実データから
\(s_{xy}\)×\(s_{yz}\)×\(s_{xz}\)=\(a^2 b^2 c^2\)
この平方根は\(abc\)ですから、
\(abc\)と\(s_{xy}\),\(s_{yz}\),\(s_{xz}\)の比が
\(a,b,c\)となり、因子負荷量を計算することができます。

➄共通因子と誤差を計算

あとは、誤差と共通因子を計算すれば、因子分析の一連の流れが計算できます。

誤差を計算

誤差\(V(e_x)\), \(V(e_y)\), \(V(e_z)\)は関係式から計算できます。

●\(V(e_x)\)=1-\(a^2\)
●\(V(e_y)\)=1-\(b^2\)
●\(V(e_z)\)=1-\(c^2\)

計算はできるのですが、1つ問題があります。

誤差の分散は計算できるが、個別の誤差の値は別の方法で計算が必要。

実は共通因子Fの各値を計算してから、個別の誤差の値を計算します。

共通因子Fを計算

実は、推定方法から計算します。この推定方法の導出はQCプラネッツで調査中です。

共通因子Fの計算方法

共通因子\(F\)=\(ZR^{-1} A\)
ただし、
●\(Z\):標準化データ行列
●\(R\):相関係数行列
●\(A\):因子負荷量ベクトル
(1因子モデルはベクトル、2因子以上なら行列)

3変数、1因子モデルの場合、具体的に記述すると

\(
\left(
\begin{array}{c}
F_1 \\
F_2 \\
\vdots \\
F_n
\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}
1 & r_{xy} & r_{xz} \\
r_{xy} & 1 & r_{yz} \\
r_{xz} & r_{xy} & 1
\end{array}
\right)^{-1}
\)\(
\left(
\begin{array}{c}
a \\
b \\
c
\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 & b & c
\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)
\)
の個々の値が計算できます。

ここまで、各値を計算した上で、共通因子Fの意味を考えて、因子分析ができたといえます。

まとめ

「因子分析の1因子モデルが導出できる」を解説しました。

  • ①1因子モデルを式で表現
  • ➁モデル式から分散・共分散を導出
  • ➂仮定を入れて式を簡略化
  • ➃因子負荷量を計算
  • ➄共通因子と誤差を計算


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

    Warning: Invalid argument supplied for foreach() in /home/qcplanets/qcplanets.com/public_html/wp-content/themes/m_theme/sns.php on line 122
error: Content is protected !!