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

因子分析の1因子モデルが計算できる

多変量解析

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

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

本記事のテーマ

因子分析の1因子モデルが計算できる

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

  • ①データ事例
  • ➁モデル式から分散・共分散を導出
  • ➂因子負荷量を計算
  • ➃共通因子と誤差を計算
因子分析は自分で解けます!
Excelや公式は暗記不要!
自力で導出できるぜ!

この記事では、導出過程はすでに関連記事で解説しています。先に確認ください。導出過程を見ながら本記事では実際に計算して解いていきます。

因子分析の1因子モデルが導出できる
因子分析が説明できますか?主成分分析との違いが明確に数式を使って説明できますか?本記事では、因子分析の最も基本的な1因子モデルにおける分析方法をわかりやすく解説します。多変量解析を学ぶ人は必読です。

①データ事例

データ事例

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

No A B C
1 30 48 54
2 60 50 60
3 40 42 55
4 80 70 68
5 56 54 71
6 65 70 76
7 22 28 30
8 100 72 96
9 65 70 88
10 32 46 52
合計 550 550 650
平均 55 55 65
標準偏差 23.11 14.21 18.15

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

1因子モデルを式で表現

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

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

因子分析

式と図から、

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

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

データを標準化

因子分析はモデル式から分散・共分散を導出するときに、データの標準化が必須です。先にデータを標準化しましょう。

標準化は\(z\)=\(\frac{x-\bar{x}}{σ}\)です。

No A B C
1 -1.08 -0.49 -0.61
2 0.22 -0.35 -0.28
3 -0.65 -0.92 -0.55
4 1.08 1.06 0.17
5 0.04 -0.07 0.33
6 0.43 1.06 0.61
7 -1.43 -1.9 -1.93
8 1.95 1.2 1.71
9 0.43 1.06 1.27
10 -0.99 -0.63 -0.72
sum 0 0 0
ave 0 0 0
sig 1 1 1

また、分散・共分散も計算すると以下のとおりです。

\(s_x\) \(s_y\) \(s_z\)
分散 1 1 1
\(s_{xy}\) \(s_{yz}\) \(s_{xz}\)
共分散 0.878 0.874 0.919

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

詳細な導出は関連記事で

分散・共分散の導出過程も関連記事で解説しています。先にご確認ください。

因子分析の1因子モデルが導出できる
因子分析が説明できますか?主成分分析との違いが明確に数式を使って説明できますか?本記事では、因子分析の最も基本的な1因子モデルにおける分析方法をわかりやすく解説します。多変量解析を学ぶ人は必読です。

結果まとめ

分散と共分散の結果は以下のとおりになります。

●1=\(a^2+V(e_x)\)
●1=\(b^2+V(e_y)\)
●1=\(c^2+V(e_z)\)
●\(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\)となり、因子負荷量を計算することができます。

実際に、

●\(s_{xy}\)=\(ab\)=0.878
●\(s_{yz}\)=\(bc\)=0.874
●\(s_{xz}\)=\(ac\)=0.919

全部掛けると
\(a^2 b^2 c^2\)=0.878×0.874×0.919=0.840
\(abc\)=0.840

●\(a\)=\(abc/s_{yz}\)=0.840/0.919=0.914
●\(b\)=\(abc/s_{xz}\)=0.840/0.875=0.960
●\(c\)=\(abc/s_{xy}\)=0.840/0.878=0.957
となります。

➄共通因子と誤差を計算

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

誤差を計算

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

●\(V(e_x)\)=1-\(a^2\)=1-0.9142=0.165
●\(V(e_y)\)=1-\(b^2\)=1-0.9602=0.078
●\(V(e_z)\)=1-\(c^2\)=1-0.9572=0.084

計算はできるのですが、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)
\)
で計算できます。

実際に計算してみましょう。

\(\left(
\begin{array}{c}
F_1 \\
F_2 \\
F_3 \\
F_4 \\
F_5 \\
F_6 \\
F_7 \\
F_8 \\
F_9 \\
F_{10} \\
\end{array}
\right)
\)=\(\left(
\begin{array}{cccc}
-1.08 &-0.49 &-0.61 \\
0.22 &-0.35 &-0.28 \\
-0.65 &-0.92 &-0.55 \\
1.08 &1.06 &0.17 \\
0.04 &-0.07 &0.33 \\
0.43 &1.06 &0.61 \\
-1.43 &-1.9 &-1.93 \\
1.95 &1.2 &1.71 \\
0.43 &1.06 &1.27 \\
-0.99 &-0.63 &-0.72 \\
\end{array}
\right)
\)\(\left(
\begin{array}{cccc}
1 & 0.3715 & 0.8745 \\
0.3715 & 1 & 0.7316 \\
0.8745 & 0.7316 & 1
\end{array}
\right)^{-1}
\)\(
\left(
\begin{array}{c}
0.914 \\
0.960 \\
0.957\end{array}
\right)
\)

ここで、相関係数行列の逆行列は、
\(\left(
\begin{array}{cccc}
12.44 & 7.18 & -16.13 \\
7.18 & 6.29 & -10.89 \\
-16.13 & -10.89 & 23.07
\end{array}
\right)^{-1}
\)
を使います。

計算結果は、
\(\left(
\begin{array}{c}
F_1 \\
F_2 \\
F_3 \\
F_4 \\
F_5 \\
F_6 \\
F_7 \\
F_8 \\
F_9 \\
F_10 \\
\end{array}
\right)
\)=\(\left(
\begin{array}{c}
-2.248 \\
0.699 \\
-2.123 \\
4.857 \\
-1.063 \\
1.648 \\
-2.189 \\
2.801 \\
-0.414 \\
-1.968 \\
\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)
\)
の個々の値が計算できます。

実際に計算すると、下表になります。

ei A B C
1 0.973 1.666 1.545
2 -0.423 -1.023 -0.944
3 1.291 1.123 1.48
4 -3.357 -3.609 -4.483
5 1.015 0.95 1.348
6 -1.073 -0.527 -0.971
7 0.573 0.201 0.167
8 -0.613 -1.493 -0.972
9 0.811 1.454 1.663
10 0.804 1.257 1.167

因子分析結果をまとめると、下図になります。

因子分析

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

まとめ

「因子分析の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 !!