[mathjax]
因子分析はマーケティングや心理学・教育学において広く用いられる多変数解析の手法で、大量のデータの背後にある潜在的な共通因子を抽出することができます。SEEDATAではこの手法を様々なデータで適用し、定性リサーチのヒントとしています。本ページでは、因子分析の基本的な標識や変数の定義と、実際の分析方法についていくつか例を出しながら説明していきます。
1. 因子分析の基本表式
1.1 変数の定義
因子分析は様々なデータに対し使用する事ができますが、ここでは一般に(p)次元のベクトル(boldsymbol{x}_{i})を解析する場合を考えてみましょう。目的によって異なりますが、例えばテスト結果の解析に用いるのなら学生、マーケティングならば消費者といったように、データは(N)人の個人ごとで取得したものとし、これを添え字(i(i=1,2,…,N))で表します。またテスト科目数やアンケートの項目数など、それぞれの個人で(p)回の観測がなされており、各観測で得られた量が(p)次元のベクトル(boldsymbol{x}_{i})であるとします。
これらの観測データについて、(m)次元の潜在変数(largeboldsymbol{z}_{i})を仮定しましょう。ここで、(boldsymbol{x}_{i})と(boldsymbol{z}_{i})の間には次のような関係があるとします。
$$
Large
boldsymbol{x}_{i}=boldsymbol{alpha}_i +Lambda_iboldsymbol{z}_{i}+boldsymbol{epsilon}_{i}
$$
(boldsymbol{alpha}_i)とは、データである(p)次元のベクトル(boldsymbol{x}_{i})の切片を表す定ベクトルになります。(boldsymbol{z}_{i})は先述の通り(m)次元の潜在変数であり、これを(p)次元のデータと繋いでいるものが(ptimes m)行列の因子負荷量(Lambda_i)です。また(boldsymbol{z}_{i})は平均:(boldsymbol{nu}_i)の(m)次元ベクトル、分散が(mtimes m)行列(Phi_i)の正規分布(N(boldsymbol{nu}_i,Phi_i))として分布していると仮定し、最後に測定誤差項(boldsymbol{epsilon}_{i})は(ptimes p)行列(Theta_i)を用いて(N(0,Theta_i))に従っているとします。
$$
Large{
潜在変数:boldsymbol{z}_{i}=N(boldsymbol{nu}_i,Phi_i)\
測定誤差:boldsymbol{epsilon}_{i}=N(0,Theta_i)
}
$$
変数の定義が終わったところで、それぞれの量が分析においてどのような意味を持つのかを考えてみましょう。
1.2 各変数の定性的な意味
例えば10000人に対しアンケートを取り、その結果を解析したいとします。アンケートは5段階の回答であるとすると、まず以下のように全員の回答を(2)から(-2)で対応させます。
この時、添え字(i)は回答者個々人、(p=3)は質問の数に対応すると考えられます。ここで、切片(boldsymbol{alpha}_i )はそれぞれの回答への点数の付け方で変わってくるもので、今回は(-2)から(2)で付けましたが、人によっては(1)から(5)で各回答に点数をつけるかもしれません。この時、(boldsymbol{alpha}_i+2 mapsto boldsymbol{alpha}_i)のように変換されるだけで、他の変数は全く同じ分析結果が出力される事がわかります。
人によって回答の傾向も異なり、例えばあらゆる回答を「とても当てはまる」「やや当てはまる」とポジティブに答える人もいれば、「全く当てはまらない」ばかり答える否定的な人もいます。これら個人ごとの回答傾向を(boldsymbol{alpha}_i )に丸め込み、全員をフラットにみる事ができるようになっています。
次に、(boldsymbol{z}_{i})は回答者の潜在的な意識を表す量だと考える事ができます。例え質問が(p=1000)個だとしても回答者に共有の潜在的な意識が(m=3)つあり、それら因子から回答の傾向が全て決まっているという世界観です。因子分析において重要な量であり、これを知る事が解析の目的の1つでもあります。
また(boldsymbol{nu}_i)というのは、これら潜在的な意識や因子について、個人ごとの傾向を表す量だと言えます。ある因子について質問が連続し、その中で同じ傾向の回答が続けば、当然対応する因子の平均値(boldsymbol{nu}_i)も大きく偏った値をとります。したがって(Phi_i)は、個人ごとの潜在変数の相関を表す量となり、これらをまとめると以下のように理解する事ができます。
最後に測定誤差とは、測定のたびに偶然的に発生する誤差なので、(boldsymbol{alpha}_i )であったような個人の傾向ではなく、回答の打ち間違えや質問文の読み違いなどを表す量です。したがって真値は本来の回答であるので平均は0となり、(Theta_i)の成分が大きいほど回答のミスが多い人となります。
以上、因子分析について一般的な表式や変数の定義などを見てきました。しかしこのままでは個人(i)に帰属する量が多すぎるため、計算や結果の分析に多大なコストがかかってしまいます。因子分析の目的は、データの潜在的な因子を発見することですが、これは大量のデータから情報を集約することにも繋がるので、多少モデルを簡単にする必要があります。以下では、データ内の異質性に着目して派生したいくつかのモデルについて解説していきます。
2. 因子分析における様々なモデル
2.1 個人ごとの不均一性を潜在変数の平均値で表すモデル
まず広く流布したモデルとして、個人ごとの違い(=不均一性, Heterogeneity)を、潜在変数の平均値(nu_i)で考慮する場合について考えます。この場合、先ほどまでの表式は以下のようになります。
$$Large{ boldsymbol{x}_{i}=boldsymbol{alpha}+Lambdaboldsymbol{z}_{i}+boldsymbol{epsilon}\ boldsymbol{z}_{i}=N(boldsymbol{nu}_{i},Phi)\ boldsymbol{epsilon}=N(0,Theta) }$$
この仮定の元では、ほとんどの変数やパラメタは一様な取り扱いになりますが、個人ごとで異なる潜在因子の平均値(nu_i)を見ることで、潜在的な意識の傾向を見ることができるようになります。例えば消費者を分析したいときには、ある質問に特定の回答をした集団や性年代で切り分けて、平均値のデータを見てみても良いでしょう。
個人ごとに帰属する量は上記の通りですが、因子分析するために必要なパラメタは(alpha,Lambda,Theta)であり、以下の尤度関数を最大化することによってこれらの値が決定します。
$$large{
l(boldsymbol{alpha},Lambda,Theta)\ =log{ prod^N_{i=1} frac {1} {(2pi)^{p/2}|Lambda Lambda^T+Theta|^{1/2}} exp{Big( -frac{1}{2}(boldsymbol{x}_{i}-boldsymbol{alpha})^T(Lambda Lambda^T+Theta)^{-1}(boldsymbol{x}_{i}-boldsymbol{alpha}) Big)}}
}$$
これらのパラメタ3つの最適化と同時に(nu_i)を更新するために、EMアルゴリズムという手法が一般的に用いられています。
2.2 個人ごとの不均一性を切片で取り扱うモデル
2.1では個人ごとの差異が潜在変数の平均値(nu_i)のみで組み込まれたモデルを考えてきましたが、切片のみで異質性を考えたものも存在します。このモデルでは潜在変数の平均値が0となり、代わりに切片が多変量正規分布にしたがって生成されていると仮定されます。
$$Large{ boldsymbol{x}_{i}=boldsymbol{alpha_i}+Lambdaboldsymbol{z}_{i}+boldsymbol{epsilon}\ boldsymbol{z}_{i}=N(0,Phi)\ boldsymbol{epsilon}=N(0,Theta)\ boldsymbol{alpha_i}=N(boldsymbol{mu},Sigma_b) }$$
したがって任意のデータの平均値は、(E[E[boldsymbol{x}_{i}|boldsymbol{alpha_i}]] =boldsymbol{nu})となり、また切片自体が固有の分散を持つため、因子と測定誤差の共分散行列を混乱させてしまいます。このように生成過程が多層にあるモデルは階層因子モデルと呼ばれ、計量心理学で用いられます。(Longford & Muthen, 1992)
2.3 個人ごとの不均一性を因子負荷率で取り扱うモデル
因子構造の不均一性を特徴付ける際に、個人ごとに異なる潜在因子(z_i)から変数(x_i)への変換メカニズムを理解することに関心があるかもしれません(Yung,1997)。 ある 2人の個人が潜在因子の真のスコアが同じであっても、因子の負荷の違いにより、観測された変数のスコアが異なる場合があります。このような状況をモデル化するために、因子負荷率(Lambda_i)は個人間で異なる量にすることができます。
この場合、個人間で適切な比較を確実にし、因子負荷行列の変動に注意を向けるために、通常は潜在因子の分散(Phi)を単位行列に仮定します。(x_i)の平均値の不均一性は、潜在変数の平均値を変化させるか、切片が個人間で異なるように設定することで把握できます。個人の観測量(x_i)に対する平均ベクトルは、(E [boldsymbol{x}_i|Lambda_i,nu_i] = boldsymbol{alpha}+Lambda_inu_i)として与えられ、 共分散行列は、(V [boldsymbol{x}_i|Lambda_i,Theta_i] =Lambda_i Lambda_i^T +Theta_i)によって与えられます。個々の(i)の結果のモデルは、次の方程式のセットで表すことができます。
$$Large{boldsymbol{x}_{i}=boldsymbol{alpha}+Lambda_iboldsymbol{z}_{i}+boldsymbol{epsilon_i}\boldsymbol{z}_{i}=N(nu_i,Phi)\boldsymbol{epsilon_i}=N(0,Theta_i)}$$
これらのパラメタはサンプリングによって求められますが、この際(Lambda_i)は多変量正規分布を用い、(Theta_i)に関しては逆ガンマ分布より生成します。
2.4 個人ごとの不均一性を共分散行列で取り扱うモデル
また因子構造の不均一性の特徴付けとしては、個人に固有の潜在因子の共分散行列(Phi_i)を指定することにより行うことができます。たとえば、人間は生きる中で様々なタイプの感情状態が互いに共存していますが、感情の組み合わせによって、また個人によってその程度は異なります。個人によっては、潜在因子がほぼ直交する場合もあれば、同じ因子が高度に相関する場合もあります。
個人全体で意味のある比較を行うために、因子負荷量は不変であると仮定できます。平均レベルの不均一性は、因子平均または異種切片のいずれかを介して把握することが可能であり、ここでは因子平均で不均一性をモデル化することにします。個人の観測量(x_i)に対する平均ベクトルは(E[boldsymbol{x}_i|nu_i] = boldsymbol{alpha}+Lambda nu_i)で与えられ、共分散構造は(V [boldsymbol{x}_i|Phi_i,Theta_i] = LambdaPhi_iLambda^T+Theta_i)で与えられます。個々の(i)の結果のモデルは、次の方程式のセットで表すことができます。
$$Large{ boldsymbol{x}_{i}=boldsymbol{alpha}+Lambdaboldsymbol{z}_{i}+boldsymbol{epsilon}_{i}\ boldsymbol{z}_{i}=N({nu}_i,Phi_i)\ boldsymbol{epsilon}_{i}=N(0,Theta_i) }$$
2.2から2.4を求めるアルゴリズムは複雑で、多くはベイジアンに基づいたマルコフ連鎖モンテカルロ法のメトロポリス・ヘイスティングス法によって求められます。
3. まとめ
今回は、因子分析における基本的な表式と変数の定義、またそれらの定性的な意味と様々なモデルについて解説してきました。次回は、データ間の異質性を無視したモデルについて、EMアルゴリズムに基づいた数値解について説明していきたいと思います。