<< トップページへ

<< 目次へ

最終更新日 : 2008.11.21

因子分析モデルの応用



Contents


■ はじめに -因子分析を学ぶにあたって-

 これまで分散分析モデルをはじめとして、共分散分析モデル、重回帰モデルを扱ってきた。これらのモデルのように従属変数が連続型で正規分布に従うと仮定されるようなモデルをまとめて一般線形モデルというのであった。そして、これをより一般化したものとして、従属変数がカテゴリカル型であり、ポアソン分布や二項分布、多項分布に従うと仮定されるようなモデルも扱ってきた。例えば、それは計数データに対して適用される対数線形モデル、2値データに対する2値ロジットモデル、3つ以上のカテゴリを持つ名義データ、あるいは順序データに対して用いられる名義・順序ロジットモデルなどがあった。これらのモデルを総称して一般化線形モデルというのであった。

 ところで統計学には多変量解析と呼ばれているいくつかの解析手法がある。代表的なものとしては重回帰分析、主成分分析、因子分析、クラスター分析などが挙げられる。しかし実をいうと、一般線形モデルと一般化線形モデルを十分に学んできた諸君らは、すでに多変量解析を行っているのである。

 多変量解析というのは、3つ以上の変量(変数)を扱う解析のことを指しているわけであり、例えば、2要因の分散分析モデルも多変量解析に含まれるのである。また、多変量解析の代表格ともいえる重回帰分析は、まさに重回帰モデルそのものである。つまり、一般線形モデル、ないしは一般化線形モデルの立場からみれば単変量解析(2つ以下の変量を扱う解析をこのようにいう)も多変量解析も、それぞれが別々の手法であると考える必要はないのである。そもそも、そのような概念が存在していないといってもよい。

 したがって、多変量解析の1つであるとされている因子分析も今まで扱ってきたようにモデル解析という視点で見ていけば、それほど特別な解析法でもないといえる。だからここでは因子分析とはいわず、因子分析モデルと表現していることにしているのである。

<< このページのトップへ



■ 実験・調査計画とモデルの構築

 余談だが私は実験と調査という用語を使い分けている。実験とは"実験室的な実験"のことを指しており、イメージとしてはマウスを用いた臨床試験(例えば薬の効果を調べるなど)や数人の被験者をある教室に集めて行うような実験(例えばある条件の下での作業効率を調べるなど)がこれにあたる。一方で調査とは、もっと大人数を対象として行われるものであり、調査のほとんどは質問紙によってデータが取られる。もちろん、観察や面接、インタビュー、フィールドワークと呼ばれる類のものも調査に含まれる。

 大まかにいえば実験とは仮説の検定であり、調査とは実態の把握である。ただし、ここでいう仮説の検定とは統計学的仮説検定とは意味が若干異なり、もっと広義である。もう少し詳しくいえば、実験は実験者が環境を統制(コントロール)した下でデータがとられるが、調査では調査者が環境を統制するようなことはせず(というかできない)、自然のままの現象をデータとして記録するのである。そのため、調査によって得られたデータは実験によって得られたデータよりも大規模なものとなりうるので、それを整理する必要があるのである。

 さて、実験をするにしても、調査をするにしても、両者において決定的に重要なことがある。それは「より単純で明瞭なモデルをつくる」ということである。このことは常に頭の中に留めておく必要がある。なぜなら、複雑すぎるモデルを想定してデータをとり、解析したとしてもまずそのモデルは上手く解析できないからである。

 もし仮に上手く解析ができたとしても、解析者自信がそれを的確に解釈できなければ意味がないし、さらにはそれを第3者に分かるように説明できなければ全く意味がない。ある分野においてはモデルとしては妥当なのだが、明らかに用いる変数が多すぎて、かつ想定しているモデルが複雑すぎて、結局は上手く解析できていない例がしばしばある。

 先ほどから"上手く解析できない"といっているが、要するに統計学的に適切でないモデルが出来上がるということである。ある数値の判断基準とは分野によって異なるものであるが、過去の論文を探し読みしてみると、明らかに低すぎる決定係数(重回帰分析における、当てはまりの良さを表す指標)が得られていたりする事例をかなり頻繁に見ることができる。

 あるいは、本来はモデルに組み込まれるべきでない変数を投入しているために、本来は予測に使えるはずである変数が予測に役に立たないという結果さえも得られてしまってる場合がある。端的な言い方をしてしまえば、「何でもいいからとにかく変数を投入してしまえ」と不用意に、解析に用いる変数を多くして本来のあるべき結果をゆがませてしまっているのである。

 以上の点から、実験や調査を行う前に気に留めておくべきことをまとめてみた。

<< このページのトップへ



■ 因子分析をどのように応用できるのか

 先ほど「質問紙調査によって得られたデータは大規模なので整理する必要がある」と述べたが、因子分析はまさに大規模なデータの整理に役立つものである。例えば、次のような問題が生じたときに、どのような解析を行えばよいかを考えてみてほしい。


問題
 N高校の学期末テストは国語、地理、英語、数学、化学、物理の6教科ある。期末テスト終了後には6教科の総合点によって学年順位が発表されることになっている。そこである先生が「文系科目が得意な生徒と理系科目が得意な生徒とでは、どちらが優秀なんでしょうね?」という疑問を口にした。
 ここで2つの問題が考えられる。1つは6科目を文系科目と理系科目とに分けることはできるだろうが、その分類がどれほど妥当なものだろうかという問題である。もう1つは、仮に文系と理系に分けられたとして、それらがどれほど総合点に影響しているかという問題である。

 どうやら、まずは6教科をうまく文系科目と理系科目とに分類する必要がありそうである。これについては経験的に国語、地理、英語の3教科は文系科目、数学、化学、物理の3教科は理系科目といったように分類することができる、と仮定できるだろう。これを統計学的に確かめることが因子分析をすることなのである。つまり、因子分析モデルを作成するということである。

 まずは因子分析モデルとはどういったモデルなのかを考えてみよう。結論からいって、因子分析モデルとは、ある観測変数を従属変数とし、ある潜在変数を独立変数とした回帰分析モデルなのである

 今回のケースに限っていえば、観測変数は国語、地理、英語、数学、化学、物理の6つである。これに対して潜在変数は文系科目と理系科目である。因子分析モデルでは、実際には観測できないが、モデル作成者が"在る"と想定する変数を導入する。これを実際に観測された変数と区別するために、潜在変数と称しているわけである。

 そして因子分析モデルはパスダイアグラム(パス図)で表現すると非常に分かりやすい。実際に今回、解析しようとする因子分析モデルをパスダイアグラムで表現してみると図1のようになる。

図1 因子分析モデルのパスダイアグラム

 慣例として観測変数は四角い枠で囲まれ、潜在変数は丸い枠で囲まれるように描くことになっている。また、図中の矢印は「始点となる変数が終点となる変数へ影響する度合い」を示している。例えば、観測変数Englishは潜在変数Artより矢印を受けているが、これはArtがEnglishにどの程度の影響を及ぼしているかを表しているわけである。そして双方向の矢印は両変数の相関を表すものである。だから、ArtとSciencesには相関関係があることを仮定していることになる。

 さて、すでに述べたように、因子分析モデルとは観測変数を従属変数、潜在変数(因子)を独立変数とした回帰分析モデルである。したがって、図1のパスダイアグラムはいくつかの回帰分析モデルの集合であるといえ、これはモデル式で書くことが可能である。

English = b1 * Art + e1
Geograph = b2 * Art + e2
Japanese = b3 * Art + e3
Mathemat = b4 * Sciences + e4
Chemistr = b5 * Sciences + e5
Physical = b6 * Sciences + e6

 これらは一般線形モデルと一般化線形モデルのところで嫌というほど見てきたものであろう。ただし、因子分析モデルにおいては、通常は標準化偏回帰係数が推定されることになるので、モデル式に定数項は書かないことがほとんどである。

 少し補足しておくと、標準化偏回帰係数とは全てのデータを平均0、標準偏差1となるように変換(標準化、基準化)したデータに対して回帰分析を行った場合の係数のことである。因子分析においては特に因子負荷量というのが慣わしである。また、パスダイアグラムで表現する場合においては特にパス係数と呼ぶことになっている。

 標準化偏回帰係数については一般線形モデル、一般化線形モデルのところで特に解説しなかった。それは多くの場合において標準化偏回帰係数を求める必要はないからである。標準化偏回帰係数を用いる必要があるのは、複数の独立変数を比較してどの変数が相対的に従属変数へ影響を与えているかということを判断するときである。

 例えば、重さ(kg)と長さ(cm)はそれぞれ単位が異なるので、直接的に両者を比較しても意味がない。そこでデータを標準化して回帰分析を行うことによって、標準化偏回帰係数が得られるのでそれを比較するわけである。しかし、実際には以下の変換公式があるので、わざわざデータを標準化して分析をやり直す必要はない。


変換公式
回帰方程式 Y = b1X1 + b2X2 + ... + bnXn において、
標準化偏回帰係数をbi'とすると、
bi' = bi * (sd(Xi ) / sd(Y))

 いうまでもないが、標準化偏回帰係数は直接に予測には役立たない。定数項を0とした標準化偏回帰係数を採用したモデル式にデータを代入して予測値を計算しても、それは実測値とはかけ離れた数値になる(当たり前だが)。標準化偏回帰係数はあくまでも変数同士の寄与度の比較をするためのものであって、予測値を求める場合は定数項を含む偏回帰係数によるモデル式を採用する必要がある。

 話を元に戻そう。上に挙げた6つのモデル式において、b1からb6までのパス係数(因子負荷量)を求めるためにはどうすればよいだろうか。これはRに標準実装されているfactanal()という関数を用いることによって求めることができる。

 ここでは豊田秀樹「共分散構造分析 Amos編」東京図書(2007)のp64の確認的因子分析の節で用いられている高校の学力テストに関する架空のデータを使わせていただいた。なお、このデータセットは東京図書のウェブサイト書籍紹介のページよりダウンロードすることができる。使用するファイルはc03test.xlsである(.datファイルはこちら)。

# factanal.txtがDドライブに保存してある場合
> mydata <- read.table("D://factanal.txt", header=T)

# factanal()には最低でもデータが格納されているオブジェクトと
# 因子数factorsを指定する必要がある。
# 回転方法rotationにはプロマックス法を指定した。
# scoresは因子得点を計算するために指定する。
# 因子負荷量は最尤法によって計算される。
> result <- factanal(mydata[,2:7], factors=2, rotation="promax", scores="regression")
> result

Call:
factanal(x = mydata[, 2:7], factors = 2, scores = "regression",     rotation = "promax")

Uniquenesses: # 独自性
 国語  地理  英語  数学  化学  物理 
0.754 0.659 0.684 0.678 0.627 0.649 

Loadings: # 因子負荷量
     Factor1 Factor2
国語          0.470 
地理 -0.116   0.614 
英語          0.555 
数学  0.523   0.104 
化学  0.652  -0.209 
物理  0.536   0.128 

               Factor1 Factor2
SS loadings      1.003   0.976 # 因子負荷量の自乗和
Proportion Var   0.167   0.163 # 分散に対する寄与率
Cumulative Var   0.167   0.330 # 分散に対する累積寄与率

# モデルに対するカイ自乗検定
Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 7.13 on 4 degrees of freedom.
The p-value is 0.129

<< このページのトップへ


> 独自性と共通性

 出力結果について上から順に解説していくことにしよう。まず1番上に"Uniquenesses"とあるが、これは独自性のことである。独自性とは以下の6つのモデル式(再掲)において、e(誤差)の分散のことである。これは共通性という数値を理解すると、容易に理解できる。

English = b1 * Art + e1
Geograph = b2 * Art + e2
Japanese = b3 * Art + e3
Mathemat = b4 * Sciences + e4
Chemistr = b5 * Sciences + e5
Physical = b6 * Sciences + e6

 共通性は

共通性 = 1 - 独自性

として計算することができる。これはRで

> 1 - result$uniquenesses
     国語      地理      英語      数学      化学      物理 
0.2459614 0.3413469 0.3162070 0.3220539 0.3733353 0.3512343

とすることによって、簡単に求めることができることも覚えておくとよい。

 さて、共通性とは従属変数を因子が説明している割合であると考えればよい。例えば、因子Artは従属変数Englishをどれほどの割合で説明できているかというのが0.32という値なのである。だからArtは32%くらいEnglishを説明できていることになる。つまり、あまりよく説明できていないかもしれないということである。

 一方、独自性について改めて説明しよう。共通性がある因子がある従属変数を説明できている割合であるならば、独自性とは因子が従属変数を説明できていない割合であるといえる。例えば、Englishの独自性は0.68なのだから、68%はうまく説明できていないということが分かるわけである。

 結局、共通性の値は大きいほどよく、逆に独自性の値は小さいほどよいということになる。そして共通性と独自性の和は1になるのであるから、共通性や独自性が1を越えることはありえない。どちらも0から1までの範囲で値をとることになるのだ。

<< このページのトップへ


> 因子負荷量

 因子負荷量とは回帰分析モデルでいうところの回帰係数のことであり、パスダイアグラムにおいては特にパス係数という。Rの出力結果における因子負荷量の部分を再掲しよう。

Loadings: # 因子負荷量
     Factor1 Factor2
国語          0.470 
地理 -0.116   0.614 
英語          0.555 
数学  0.523   0.104 
化学  0.652  -0.209 
物理  0.536   0.128

 因子分析においては、経験的に因子負荷量の絶対値が0.5以上である変数がその因子に含まれる変数であると判断される。上の結果ではFactor1に含まれる変数は数学(0.523)、化学(0.652)、物理(0.536)であり、どうやらFactor1は理系科目であるといえる。それからFactor2に含まれる変数は国語(0.470)、地理(0.614)、英語(0.555)であり、これは文系科目であるといえそうである。もっともそのように仮定して分析を行ったわけであるから、因子分析とは所詮トートロジーに過ぎないということも戒めとして気に留めておくべきである。

 因子分析によって得られた因子負荷量をモデル式に当てはめてみよう。

English = 0.555 * Art + e1
Geograph = 0.614 * Art + e2
Japanese = 0.470 * Art + e3
Mathemat = 0.523 * Sciences + e4
Chemistr = 0.652 * Sciences + e5
Physical = 0.536 * Sciences + e6

 当然ではあるが、因子(ArtとSciences)と誤差(e1からe6)は解析者が"在る"と想定した変数にすぎないので、これらのモデル式から例えばEnglishの値を予測することはできない。たしかにこれらは回帰モデルに相違ないが、ここでの偏回帰係数(因子負荷量)はあくまでも潜在変数(因子)が従属変数(Englishなど)をこれだけ説明するだろうというものにすぎない。また、ArtやSciencesという変数が実際にはどのようなものなのか分かるものでもない。誤差項(e)も含めて、これらは人が考え出した概念なのである。

<< このページのトップへ


> 因子負荷量の自乗和、分散に対する寄与率・累積寄与率

 またRの出力結果の1部を改めてここに載せる。

               Factor1 Factor2
SS loadings      1.003   0.976 # 因子負荷量の自乗和
Proportion Var   0.167   0.163 # 分散に対する寄与率
Cumulative Var   0.167   0.330 # 分散に対する累積寄与率

 SS loadingsとは因子負荷量の自乗和(平方和)のことであり、これは固有値とも呼ばれるものである。Proportion Varとは分散に対する寄与率とあるが、要するにこれはその因子が基のデータをどれだけ上手く説明できているかというものである。そしてCumulatice Varとは分散に対する累積寄与率のことで、これは寄与率を足していったものである。だから、Factor2の累積寄与率は0.167 + 0.163 = 0.330となっている。

<< このページのトップへ


> モデルの検定

 最後にモデルの検定について説明しよう。これは「解析した因子分析モデルは正しい」という帰無仮説についての検定である。したがって、この場合は帰無仮説を採択されることが望ましい。つまり、得られる検定統計量に対するp値は大きいほどよいということになる。以下の結果から、p = 0.129と帰無仮説を採択するので、どうやら解析したモデルは正しいものであるといえる。

# モデルに対するカイ自乗検定
Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 7.13 on 4 degrees of freedom.
The p-value is 0.129

<< このページのトップへ


 さて、これまで因子分析の解析方法と得られた結果の解釈についてごく簡単に説明をしてきた。ここで1つ注意してもらいたいことがある。それは因子分析で扱う問題自体がもともと高度なものであるため、因子分析の結果の解釈も難しいものである、ということである。

 因子分析とは非常にユニークな統計手法であるが、ユニークであるがゆえに分析者の経験と判断力が要求される分析法であるといえる。したがって、因子分析に限っていえば、得られる様々な数値を判断する際には「仮定した統計モデルが実質科学的に妥当なものであるかどうか」という点を重視せざるを得ない状況もでてくる、といってもよい。もう少し分かりやすくいえば、得られた数値に判断基準は特にないので、分析者の経験に頼るしかないことも多くでてくる、ということである。

 モデル解析に夢中になるあまり、本来考えるべき実質科学的な妥当性を見失ってはいけないのである。優秀な統計家ほどこのことを理解しているので、仮に統計学的にはあまりよろしくない数値が得られたとしても、解釈に妥当性が認められれば、そのモデルは論文の読者にも広く受け入れられるだろう、ということである。


> 2つ目の問題 -因子得点の利用-

 ところで、色々とやって忘れかかっているかもしれないが、最初に挙げた問題をここでもう1度確認しておこう。


問題
 N高校の学期末テストは国語、地理、英語、数学、化学、物理の6教科ある。期末テスト終了後には6教科の総合点によって学年順位が発表されることになっている。そこである先生が「文系科目が得意な生徒と理系科目が得意な生徒とでは、どちらが優秀なんでしょうね?」という疑問を口にした。
 ここで2つの問題が考えられる。1つは6科目を文系科目と理系科目とに分けることはできるだろうが、その分類がどれほど妥当なものだろうかという問題である。もう1つは、仮に文系と理系に分けられたとして、それらがどれほど総合点に影響しているかという問題である。

 1つ目の問題は先ほどの因子分析モデルの解析によってクリアした。当初の仮定どおり、文系科目(国語、地理、英語)と理系科目(数学、化学、物理)にうまく分類できた。そこで今度は2つ目の問題である、文系科目と理系科目の点数が総合点にどのように影響しているかという問題を考える。

 この問題を考える際に役立つのが因子得点である。因子得点とは各サンプルの因子の大小を数値で表す得点である。要するに出席番号1番の生徒が理系科目(因子1)をどれくらいできるかということである。もちろん、文系科目(因子2)がどれくらいできるかというのも把握することができる。

 Rで因子得点を得るためには、必ずfactanal()の引数にscores = "regression"と指定しておかなければならない。そして因子得点を抽出して出力させるためには次のようにコマンドする。

> fact.score <- result$scores

 これによって得られた因子得点と総合得点のデータを用意した(factor_score.dat)。繰り返すが、F1の因子得点とは理系科目の"出来具合"のことであり、これは文系科目の総合得点と言い換えても良いだろう。同様にF2の因子得点は文系科目の総合得点であるといえる。もちろん、3科目の合計点とは異なる。

 だから2つ目の問題は次のような重回帰モデルを解析することに他ならない(総合得点は文字通り、6科目の合計点である)。

総合得点 = F1の因子得点 + F2の因子得点

 実際に一般線形モデルの重回帰モデルとして解析してみよう。

> mydata <- read.table("D://factor_score.txt", header=T)
> mydata
        F1_score    F2_score Total_score
1   -0.257485818  0.32339260         375
2    0.476099304 -0.46943376         375
3    0.333418540  0.76963698         425
(途中省略)

> lm.model <- lm(Total_score ~ F1_score + F2_score, data=mydata)
> summary(lm.model)

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 373.4500     0.3492 1069.43   <2e-16 ***
F1_score     47.9720     0.4505  106.50   <2e-16 ***
F2_score     40.3236     0.4580   88.04   <2e-16 ***
---

 この結果の見方はもはや御手の物だろう。得られた偏回帰係数をモデル式に当てはめてみよう(総合得点:Total_score, F1_score:Sciences, F2_score:Art)。

Total_score = 373.45 + 47.97*Sciences + 40.32*Art

 総合得点の平均値373.45を基準として、Sciencesが1増加するにしたがって約48点のポイントアップ、Artが1増加するにしたがって役40点のポイントアップにつながるということを意味している。実際、このモデルはかなり正確に総合得点を予測することができる。

 6科目の総合得点(実測値)とモデル式に各サンプルの因子得点を代入して求めた総合得点(予測値)を2つの折れ線で表現するとよくわかる。


図2 実測値と予測値の比較

 また、このモデル式において、SciencesとArtの単位は同じものであると考えても問題ないと考えられるので、直接的に比較しても構わないだろう。なぜなら、どちらも各科目の得点(100点満点)というデータに基づいて推定された因子得点だからである。もし単位が異なると考えることの方が妥当であるならば、標準化偏回帰係数を求めてそれらを比較すればよい。ただし、その場合は定数項は理論的に0になる。

 せっかくなので練習として標準化偏回帰係数を計算してみよう、変換公式を以下に再掲する。


変換公式
回帰方程式 Y = b1X1 + b2X2 + ... + bnXn において、
標準化偏回帰係数をbi'とすると、
bi' = bi * (sd(Xi ) / sd(Y))

 モデル式 Total_score = 373.45 + 47.97*Sciences + 40.32*Art において、b1 = 47.97ならばb1'

b1' = 47.97 * (sd(Sciences) / sd(Total_score))

として計算することができる。ここにsd(Sciences) = 0.80, sd(Total_score) = 43.98なので、

b1' = 47.97 * (0.80 / 43.98) = 0.87 #正確な計算だと0.873202

となる。同様にして、

b2' = 40.32 * (0.79 / 43.98) = 0.72 #正確な計算だと0.7217981

である。

 結局、理系科目のできる生徒は総合点もよい傾向が見られるようである。

<< このページのトップへ



■ 因子分析におけるいくつかの注意点

 初心者の多くが疑問に思うことは「どのような計算方法によって解(因子負荷量)を求めればよいのか、そしてどのような回転法を用いればよいのか」ということである。かつては「主因子法で解を求めて、バリマックス回転(直交回転)を行う」というのが慣わしであった。しかし、現在では「最尤法で解を求めて、プロマックス法(斜交回転)を行う」べきである。

 少し古い参考書では前者のような方法を勧めているが、今となっては時代遅れのやり方である。簡単にいえば、計算技術が未熟だった(今ほど優れたコンピュータが頻繁に扱えなかった)ためにこういった方法を採用していたのである。理論的には最尤法によって解を求めてプロマックス回転を行うことの方が適切であることは理解されていたのだが、このような事情もあって最適な方法を用いることができなかったのである。

 その理由はいくつかあるが、そもそも直交回転とは因子間の相関を0と仮定する方法であるが、考えてみればこれは不自然なやり方である。なぜなら、因子はあくまでも分析者が想定した概念に過ぎないのだから、因子間にどのような相関関係があるかなど分かるはずもないからである。

 これについて、斜交回転を行った場合は仮に仮定どおり因子間の相関係数が0であれば、0に近い値を算出してくれる。最初から「因子間の相関係数は0なのだから計算する必要はない」というやり方と「因子間の相関関係は0だと仮定できるが、計算してみたらやはり0に近かった」というやり方では明らかに後者の方が妥当なやり方であるといえるだろう。

<< このページのトップへ



■ 共分散構造分析と因子分析

 共分散構造分析とはなにか、と聞かれてもなかなか返答に困るのだが、さわりだけ話すと「分散分析モデルや重回帰モデル、さらには主成分分析モデルや因子分析モデルなどといったほぼ全てのモデルを解析することのできる分析法である」といえる。なかでも一番のメリットは専用のソフトウェアを用いると、パスダイアグラム(モデル)を視覚的に自由に作成できるということかもしれない。また、分析の結果をパスダイアグラムで表現することによって、第3者からも分析の結果が良く分かるという利点もある。

 このような説明を受けると、共分散構造分析は"何でも屋"のような印象を受けるかもしれない。たしかにそれはそうなのだが、便利な技術というものは使いこなせれば便利だが、使いこなすのがなかなかもって難しいというものである。実際、統計学の初学者が共分散構造分析を行おうとしてもまず上手くいかないだろう。というのも、自分でモデルを作成するという自由度がある反面、モデル解析の基本的な知識と経験が伴わないと、ソフトウェアのプログラムが上手く計算を行えないことがあるからである(これはしばしばユーザーの指定したモデルに誤りがある)。

 もう1つデメリットをあげてみると、専用のソフトウェアを使わないとそもそも分析さえできないということがある。無料のRでもsem()という関数が用意されているが、はっきりいって使い勝手が悪すぎるのでやめておいたほうが良いだろう。有名なものではAmosというソフトウェアがあるが、非常に高額であるのでよほど懐の暖かいユーザーでなければ個人購入は難しいだろう。

 さて、前置きはこのくらいにして本題に入ろう。ここに改めて今回分析した因子分析モデルのモデル式を載せておこう。復習してみると、因子分析モデルとは観測変数を従属変数、潜在変数(因子)を独立変数とした回帰分析モデルのことであった。そして、下のモデル式のb1〜b6とe1〜e6のパラメータを推定することが目的である。

 ここで係数bは因子分析においては因子負荷量とよび、パスダイアグラムにおいてはパス係数とよばれる。eは誤差で、因子(ここではArtとSciences)では説明できない部分のことである(つまり誤差が0ならば、従属変数を因子が完全に説明しているということである)。

English = b1 * Art + e1
Geograph = b2 * Art + e2
Japanese = b3 * Art + e3
Mathemat = b4 * Sciences + e4
Chemistr = b5 * Sciences + e5
Physical = b6 * Sciences + e6

 ここでは詳しい手順を説明しないが、LISRELという共分散構造分析のための"無料の"専用ソフトを用いて解析した結果を載せる。これは図1のパス図に標準化パス係数を加えたものである。

図3 因子分析モデルをLISRELで解析した結果

 簡単にパスダイアグラムの見方を説明しておく。これは復習になるが、観測変数は四角の枠で囲まれ、潜在変数は丸枠で囲まれている。例えば、観測変数Englishは2つの矢印を受けている。1つはArt、もう1つは誤差からであり、これをモデル式で書くと

English = 0.51 * Art + 0.74 * e1

と書くことができる。どちらの表現の仕方の方が見やすいかは人それぞれである。

 また、ArtとScienecesには双方向の矢印が描かれているが、これは相関関係を表しており、そこに書かれている数値は相関係数である。

 最後にパスダイアグラムの下にモデルの適合度の検定結果が記されている。モデルの適合度検定はカイ自乗検定によって行われているが、これは「分析したモデルは正しいモデルである」という帰無仮説を検定している。つまり、帰無仮説を採択することが(分析者にとって)望ましいのであるから、p値は大きいほどよいということになる(p値の大きさがモデルの良い悪いを示しているのではない)。

 加えてRMSEAというモデル判断の指標がある。これは値が小さいほどよいモデルであることを示すものである。今更いうことでもないかもしれないが、モデル適合度指標に厳密な基準などなく、どの程度の値より小さい(あるいは大きい)とよいモデルなのかは経験的な判断によるものである。

<< このページのトップへ



■ 確認的因子分析と探索的因子分析とは

 因子分析といっても、実は大きく確認的因子分析と探索的因子分析という2つにわけて考えることができる。この図3で示したのは確認的因子分析である。つまり、得られている観測変数を参考に「これらの観測変数の背後には***という潜在変数が潜んでいるのだろう」という仮定をして、最初から特定のモデルを作成して解析するというものである。

 一方で探索的因子分析とは、得られている観測変数が多くて、いったいどういった潜在変数との関係があるのだろうかといったように、特定のモデルが仮定されていない場合に用いられる(現実的にはこちらを利用する場合が多く、Rのfactanal()でやっているのは探索的因子分析である)。

 この両者はパス図を見比べるとよく違いが分かる。端的にいってしまえば、探索的因子分析では、どんな関係があるか分からないので、とりあえず全てに関係があるとしてしまおうというものである。そして、そこから得られた結果をもとにして、モデルを構築していくというのが探索的因子分析である。イメージとしては、重回帰分析の変数選択における、変数減少法と同じようなことをやっているわけである。

 ちなみに、LISRELでは図4の右のモデルを解析することはできない(エラーがでる)。その理由はここでは解くにしないので、興味のある人は自分でエラーメッセージを読んでみるとよいだろう(エラーメッセージを読むことはよい勉強になる)。

図4 確認的因子分析(左)と探索的因子分析(右)の違い

<< このページのトップへ



■ 共分散構造分析を行うソフトウェア -LISRELの紹介-

 LISRELについてのごく基本的なことはこちらのページで解説している。それなので、ここではLISRELの出力結果についての見方を説明しておく。

 LISRELにはSIMPLISといって、LISRELという環境内でのみ動作する一種のプログラミング言語が実装されている(ExcelのVBAのようなものである)。GUI(グラフィカルユーザーインターフェイス)による操作も可能だが、SIMPLISでモデル解析をした方が好ましい(そう主張する理由を特に述べはしないが)。したがって、以下に図3のパスダイアグラムを得るための実行コードを載せておく。なお、SIMPLISでは ! がコメントを表す記号である(Rでは # だった)。

分析に使用した分散・共分散行列のデータ: test.dat

! 観測変数
Observed Variables
English Geography Japanese Mathematics Chemistry Physical

! 潜在変数
Latent Variables
Art Sciences

! 共分散行列の読み込み
! データはDドライブにtest.datとして保存してある
Covariance Matrix from File 'D:\test.dat'

! サンプルサイズ
Sample Size = 100

! モデルの指定
! 左辺が矢印を受ける変数、右辺が矢印の出発点となる変数
Relationships
Japanese Geography English = Art
Mathematics Chemistry Physical = Sciences

! パス図を出力するための命令
Path Diagram

! プログラムが終了であることを指定する命令
End of Problem


 以下には主な出力結果を載せる。

LISREL Estimates (Maximum Likelihood)                           

         Measurement Equations

 
  English = 5.69*Art, Errorvar.= 91.65 , R = 0.26
           (1.52)               (18.06)           
            3.75                 5.07             
 
 Geograph = 5.29*Art, Errorvar.= 89.00 , R = 0.24
           (1.45)               (16.75)           
            3.64                 5.31             
 
 Japanese = 7.03*Art, Errorvar.= 73.56 , R = 0.40
           (1.65)               (21.19)           
            4.27                 3.47             
 
 Mathemat = 9.17*Sciences, Errorvar.= 137.50, R = 0.38
           (2.08)                    (34.93)           
            4.42                      3.94             
 
 Chemistr = 7.34*Sciences, Errorvar.= 190.44, R = 0.22
           (2.00)                    (33.54)           
            3.67                      5.68             
 
 Physical = 8.16*Sciences, Errorvar.= 115.67, R = 0.37
           (1.87)                    (28.26)           
            4.37                      4.09 

--- --- --- --- ---

                           Goodness of Fit Statistics

                              Degrees of Freedom = 8
                Minimum Fit Function Chi-Square = 10.93 (P = 0.21)
        Normal Theory Weighted Least Squares Chi-Square = 10.67 (P = 0.22)
                 Estimated Non-centrality Parameter (NCP) = 2.67
              90 Percent Confidence Interval for NCP = (0.0 ; 15.39)
 
                        Minimum Fit Function Value = 0.11
                Population Discrepancy Function Value (F0) = 0.027
               90 Percent Confidence Interval for F0 = (0.0 ; 0.16)
             Root Mean Square Error of Approximation (RMSEA) = 0.058
             90 Percent Confidence Interval for RMSEA = (0.0 ; 0.14)
               P-Value for Test of Close Fit (RMSEA < 0.05) = 0.38
 
                  Expected Cross-Validation Index (ECVI) = 0.37
             90 Percent Confidence Interval for ECVI = (0.34 ; 0.50)
                         ECVI for Saturated Model = 0.42
                        ECVI for Independence Model = 0.88
 
       Chi-Square for Independence Model with 15 Degrees of Freedom = 74.82
                             Independence AIC = 86.82
                                Model AIC = 36.67
                              Saturated AIC = 42.00
                            Independence CAIC = 108.45
                                Model CAIC = 83.53
                             Saturated CAIC = 117.71
 
                          Normed Fit Index (NFI) = 0.85
                        Non-Normed Fit Index (NNFI) = 0.91
                     Parsimony Normed Fit Index (PNFI) = 0.46
                        Comparative Fit Index (CFI) = 0.95
                        Incremental Fit Index (IFI) = 0.96
                         Relative Fit Index (RFI) = 0.73
 
                             Critical N (CN) = 182.96
 
 
                      Root Mean Square Residual (RMR) = 9.48
                             Standardized RMR = 0.058
                        Goodness of Fit Index (GFI) = 0.97
                   Adjusted Goodness of Fit Index (AGFI) = 0.91
                  Parsimony Goodness of Fit Index (PGFI) = 0.37


 例えば、

Physical = 8.16*Sciences, Errorvar.= 115.67, R = 0.37
           (1.87)                    (28.26)           
            4.37                      4.09

の部分を説明しよう。8.16というのはSciencesの偏回帰係数(非標準化解)であり、その下の( )の中にある1.87という数値は偏回帰係数の標準誤差である。そしてそのさらに下にある4.37というのがt値である。これについての詳しい説明は

Adamantios Diamantopoulos, Judy A. Siguaw (2005) INTRODUCING LISREL. SAGE Publications. p59-61

に書かれている(機会があったら翻訳したものを著作権に引っかからない程度に載せようと思う)。

 あとはモデルの適合度指標などが随分とボリュームのある形で出力される。これについても詳しい説明は、同書のp82-88に書いてある(英語であるが)。しかし、これらは日本語の参考書の中にも現われるものなので、英語の本を読まずとも、多少手間は掛かるが例題と照らし合わせて確認すればどれがどれだか把握することができるだろう。

<< このページのトップへ


参考文献