<< 目次へ
最終更新日: 2009.9.10
分散分析モデルと回帰モデル
共分散構造分析の入門として、一般線形モデルの分散分析モデルと回帰モデルを共分散構造分析で解析してみる(ここではLISRELによる解析例を示す)。
■ 分散分析モデルの解析
解析の前に以下のようなデータファイルをC:\LISREL\DATASETS\ANOVA.txtに保存しておく。C\:というのはCドライブのことを表しており、C\:LISRELというのはCドライブにあるLISRELという名前のフォルダのことを示している。さらにC:\LISREL\DATASETSはLISRELという名前のフォルダにDATASETSというフォルダがあることを示しており、このDATASETSというフォルダにANOVA.txtというテキストファイルが保存されているのである。ちなみに、このフォルダは最初からあるというわけでなく、自分で作成しなければ存在しない(別に保存先やファイル名は自分の好きにしてよい)。
以下の先頭にある --- ANOVA.txt という部分と、最終行にある --- という部分は私がデータ部分を分かりやすく明示するために書いたものに過ぎないので、実際にWindowsのメモ帳などにデータをコピペする際には、この部分を除いてコピペすればよい。また、LISRELは原データ(Raw Data)をファイルから読み込む場合、スペースやタブに"うるさい"ので、数値と数値の間は必ず「1つのスペースのみ」を空けておかなければならない。15_0_0は構わないが、15\t0\t0(タブ区切り)や15__0__0(ダブルスペース)となっていると正常に読み込まれない(ここでのアンダーバー _ はスペースを、\tはタブを表している。)。
--- ANOVA.txt 15 0 0 15 0 0 19 0 0 19 0 0 16 0 0 16 0 0 14 0 0 16 0 0 19 0 0 18 0 0 17 0 0 17 0 0 17 0 0 16 0 0 16 0 0 17 0 0 16 0 0 15 0 0 16 0 0 18 0 0 11 1 0 10 1 0 10 1 0 8 1 0 13 1 0 10 1 0 8 1 0 11 1 0 10 1 0 10 1 0 10 1 0 10 1 0 11 1 0 9 1 0 9 1 0 9 1 0 7 1 0 9 1 0 10 1 0 10 1 0 14 0 1 12 0 1 12 0 1 12 0 1 11 0 1 10 0 1 12 0 1 14 0 1 14 0 1 13 0 1 13 0 1 12 0 1 11 0 1 14 0 1 13 0 1 14 0 1 11 0 1 14 0 1 14 0 1 12 0 1 --- ここまで
このようなデータセットが用意できたならば、LISRELを起動させ、[ File ] -> [ New ] -> [ Syntax Only ]という順にクリックしていく。するとテキストエディタのような真っ白なウィンドウが出てくるので、そこに次のようなコードを入力する。これはLISRELに実装されているSIMPLISという言語を用いるのである。
Observed Variables Y DUM2 DUM3 Raw Data from File 'C:\LISREL\DATASETS\ANOVA.txt' Means 12.9833333 0.3333333 0.3333333 Sample Size = 60 Relationships Y = DUM2 DUM3 Const Path Diagram End of Problem
最初なので少し丁寧にコードの書き方について説明してみよう。まずObserved Variablesは観測変数を入力するためのコマンドであり、このコマンドの次行に変数名(ここではY DUM2 DUM3)を入力する。ここでも変数名は必ず1つだけスペースを空けておくようにしなければならない。Rではスペースが無視されるが、本来、プログラムコードというのはスペースを厳密に区別して処理されるものである。
つづいて3行目にはRaw Data from File 'filename'を入力する(fillenameの部分には任意のファイル名を入力する)。特にfromの頭文字は小文字である点に注意しなければならず、Fromとしてしまうと正常に実行されない。逆に他の部分でRawをrawなどとしてしまっても正常に実行されない。
次行に移って、Meansというのは各変数の平均を指定するためのコマンドである。これは定数項を出力するためには必ず指定しなければならないが、通常は標準化解が得られる(得られるようにする)のでこれをあえて指定する必要はないだろう。ただし、ここでは説明変数にカテゴリカル型の変数をダミー変数に置換して指定しているので、標準化解は意味を持たない。
その下のSample Sizeというのは文字通りサンプルサイズのことである。さらに次の行にあるRelationshipsはモデル式を指定するためのコマンドで、今回はY = DUM2 DUM3 Constと指定している。このConstというのは定数項を出力するための命令であり、先ほども述べたように通常は標準化解を得ることになるので、その場合には必要ない(標準化されたデータを分析した場合、定数項は0になるからである)。次行のPath Diagramはパス図を出力するためのものであり、最終行のEnd of Problemはコードの終了を意味するコマンドである。
ところで、カテゴリカル型の変数の扱い方、すなわちダミー変数のことについて知らない人はカテゴリカルデータ解析の仕組みを参照すること。
以上のような作業を終えて(コードが書き終わったら)キーボードの[ F5 ]を押せばLISRELが走りだす("走る"というのはプログラムが実行されるという意味である)。実際には処理結果が出力される前にどこにファイルを保存するかを聞いてくるので、適当な所にファイル名をつけて保存するようにする。だから、あらかじめC:\LISRELのなかにanova_exなどというフォルダを作っておき、その中にANOVAというファイル名で保存するようにするとよいだろう。何を保存するのかというと、解析結果やパス図はそれぞれfilename.OUT(OUTファイル)とfilename.PTH(Path Diagramファイル)といったファイル形式で保存されるのである。他にも様々なファイルが同時に保存されることになるので、うかつにデスクトップなどに保存先を指定してしまうと大変なことになるので注意すべきである。
それでは以下に載せたOUT(結果の出力)の1部とPTH(パス図)について説明しよう。ちなみに、ちょっとした小技であるが、出力されたパス図が小さくて見にくい場合は適当な所にカーソルを合わせて右クリックをし、そこから[ Zoom ... ]を選択すれば図の大きさを調整することができる。それから、パス係数はデフォルトで標準化解を出力するようになっているが、LISRELのウィンドウの上のほうにEstimates: という部分があるので、そこからEstimatesを選択すれば非標準化解が表示される(デフォルトではStandardized Solutionが選択されている)。だから下のパス図は非標準化解にしているということになる。
パス図には色々な値を表示させることができる。 |
さて、パス図には定数項(切片)が出力されていないが、OUTファイルにはモデル式に推定値が書き加えられた形式で表示されている。OUTファイルには様々な出力があるが、とりあえず真ん中あたりにある次のような出力部分を見てほしい。
Structural Equations Y = 16.60 - 6.85*DUM2 - 4.00*DUM3, Errorvar.= 1.72 , R = 0.82 (0.30) (0.42) (0.42) (0.32) 55.52 -16.24 -9.49 5.34
ここまで一般線形モデルについて学んだ者であれば、これについてわざわざ説明するまでもないだろう。しかし、一応説明しておくと、16.60は定数項であり、その下のカッコの中にある数値は標準誤差で、さらにその下にあるのがt値である。t値は16 / 0.30を計算することによって導かれる(係数についても同じである)。また、Errorva. = 1.72は誤差分散であり、R = 0.82は決定係数であるが、分散分析モデルにおいて決定係数は何の意味も持たない。
LISRELによる結果とRの結果を比較してみると、両者は同じであることが分かるだろう。
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 16.6000 0.2982 55.674 < 2e-16 *** group2 -6.8500 0.4217 -16.245 < 2e-16 *** group3 -4.0000 0.4217 -9.486 2.51e-13 ***
■ 回帰モデルの解析
基本的な作業は分散分析モデルの解析と同じだが、説明変数が連続型である場合には原データ(Raw Data)ではなく、相関行列か共分散行列を指定することでも解析が可能となる。多くの場合において相関行列が用いられるが、ここでは相関行列を指定した場合と共分散行列を指定した場合の例を示し、両者の違いが結果にどのように影響するかも見てみよう。
− 相関行列を用いた場合
Observed Variables Y X1 X2 Correlation Matarix 1.000 0.634 1.000 0.810 0.244 1.000 Sample Size = 20 Relationships Y = X1 X2 Options Number of Decimals = 4 Path Diagram End of Problem
Structural Equations Y = 0.4640*X1 + 0.6968*X2, Errorvar.= 0.1414 , R = 0.8586 (0.09406) (0.09406) (0.04851) 4.9331 7.4083 2.9155
− 共分散行列を用いた場合
Observed Variables Y X1 X2 Covariance Matrix 1.0344828 0.6558621 1.0344828 0.8379310 0.2524138 1.0344828 Sample Size = 30 Relationships Y = X1 X2 Options Number of Decimals = 4 Path Diagram End of Problem
Structural Equations Y = 0.4640*X1 + 0.6968*X2, Errorvar.= 0.1463 , R = 0.8586 (0.07463) (0.07463) (0.03982) 6.2169 9.3363 3.6742
以上のように、パス図を見たうえでは相関行列を用いた場合と共分散行列を用いた場合とで違いは見られない。しかし、OUTファイルのStructual Equationsの部分を見てみると、結果に少しの違いがあるのが分かるだろう。今回の場合だと相関行列を指定した場合よりも、共分散行列を指定した場合の方が明らかにt値が大きくなっている(標準誤差が小さくなっている)。この先、さらに色々なモデルを解析していくと、推定されたパス係数の値も異なること遭遇するだろうが、基本的に共分散行列の方が推定の精度が高いのである。したがって、どちらでも問題がない場合は共分散行列を指定することを薦める。
ところで、今回は原データ(Raw Data)を指定しなかったし、平均値(Means)も指定しなかった。これについては、まず原データは相関行列か共分散行列(ずっとこのように書いてきたが、正確には分散・共分散行列という)を指定すればよく、結局は原データ、相関行列、共分散行列のどれか1つを指定すればよいのである。それから平均値は定数項(切片)を求めたいときにだけ指定すればよいのである。このような定数項を推定する方法を特に平均・共分散構造分析という。
■ 共分散構造分析で再現するメリット
はっきりいってしまえば、分散分析モデルや回帰分析モデルを共分散構造分析を用いて(LISRELを用いて)解析する必要はないだろう。むしろ、操作上の手間を考えれば、これらのモデルを解析するにはRを用いた方が明らかに便利である。ここであえてこれらのモデルを共分散構造分析で再現してみたのは、単にこの手法の様子を紹介したかったからである。もっとも、結果を数式ではなくパス図で紹介するというアイディアに関しては、紹介する相手が統計の初心者であるならば大きなメリットとなりうるだろう。