|
最近コンピュータが替わったのだが、これにコンパイラがいくつか入っていた。C(C++)とFORTRANのプログラムをコンパイルできる。といっても、開発用の大規模な統合システムではなく、フリーで入手できる小規模実験用開発環境である。さしあたり、コマンドラインで動作するDOSの実行ファイルしか作れない。懐かしくなって因子分析のプログラムをコンパイルしてみた。プログラムは、名著『C言語による最新アルゴリズム事典』(奥村 晴彦)の’factanal’を使用した。この本のソースコードはネットに公開されている。
( ftp://ftp.matsusaka-u.ac.jp/pub/algorithms )
実行ファイルはあっという間に出来上がる。何か良いデータはないかと、一例として国別比較のデータをネットで探すが適当なものがない。いろいろ見てみて、結局「性・年齢(10歳階級)別自殺死亡率(人口10万対)の国際比較(1999年)」というデータを使うことにした。他人の死を弄ぼうという意図は全くない。自殺は日本や韓国で切実な問題になっている。自分自身の問題として以前から気になっていた。以下は、WHO「World Health Statistics Annual 1999,2000」をもとにしたデータで、カナダ、ハンガリー、韓国、ロシアは2000年の数値だそうだ。このデータを因子分析することに意味があるのかどうかは正直言ってわからない。結果はある程度予想できるような気もする。あくまでも一つの試みである。
(出典: http://www.mhlw.go.jp/toukei/saikin/hw/jinkou/tokusyu/suicide04/11.html )
パンチカードでデータを準備し、計算センターのバッチ処理で計算していた時代を知っている身としては、実に便利になったものだと感無量である。上のデータをテキストファイルで用意し、MS-DOSプロンプトから実行ファイルを呼び出して終わりである。コンパイルしたあとデータを探し、データファイルの準備から計算終了まで小一時間で終わってしまった。
’factanal’はいわゆるQR法で固有値を求める。最小限の基礎統計量を計算したあと、一応対話式に計算できる。ただし、オプションは共通因子の個数の指定と繰り返し計算の回数だけである。収束の様子は計算中の行列の非対角成分のRMS(2乗の平均の平方根)を収束誤差として毎回表示し、適当なところで計算終了にする。これは面倒なので、一律100回計算させた。ほぼ一瞬で終わってしまう。誤差は残るが、今回は目をつぶることにした。最初は5因子モデルで様子を見て、固有値の大きさから、収束誤差は大きいが3因子モデルで十分と判断した。
第1因子はいわゆるスケールファクターであろう。年齢を重ねるに従って自殺の衝動が強まっている。ことに<男>ではその傾向が顕著である。「死の因子」とでも呼んでおこう。<女><男>それぞれの第1因子に対する因子負荷量を見ると、<女>では変数6と7、<男>では変数4と5で上位1,2位を占めている。因子負荷量は各因子に対する相関の強さを表すから、それぞれこの二つの世代が強い衝動ないし誘因を抱えていることがわかる。75歳以上の世代がそれぞれ平均では最高値であるのに因子負荷量がそうなっていないのは、その数の差が国ごとに顕著であることを反映している。安楽に老後を楽しんでいる人々もいれば、絶望して日を送っている人々もいるのだ。
第3因子は<女><男>ともに固有値への寄与率が低い。問題は第2因子である。変数4以降はすべて負の値である。<女>は変数1で最大で、以下逓減している。<男>は上がって下がり、変数2で最大になっている。この因子は何だろう。これらの世代は生きることに精一杯で、死があまり視野に入らないのだろうか。死を意識しても、それを跳ね返す力が自然に生まれるのかもしれない。しかし、これはあくまでも6〜7年前のデータである。現在は、この第2因子が悪化しているような気がする。ここではこの因子を「希望の因子」と呼ぶことにしよう。
<計算結果>(表示がきたないです。平にご容赦。)
<女>
10歳階級 変数 平均値 標準偏差
5〜14 1 0.39167 0.33428
15〜24 2 4.85 2.2597
25〜34 3 6.775 2.6762
35〜44 4 8.6583 3.1123
45〜54 5 10.55 5.3043
55〜64 6 10.317 5.4015
65〜74 7 12.367 8.4555
75〜 8 18.008 15.629
相関係数
1.0000
0.6156 1.0000
0.4774 0.8709 1.0000
0.2871 0.6285 0.7292 1.0000
0.3443 0.3993 0.5913 0.8974 1.0000
0.2362 0.4729 0.6951 0.8303 0.8946 1.0000
0.2768 0.4418 0.5834 0.7976 0.8590 0.9447 1.0000
0.2438 0.3942 0.5119 0.7337 0.8019 0.8999 0.9878 1.0000
因子 固有値 % 累積%
1 5.4175 72.9 72.9
2 1.4033 18.9 91.8
3 0.6107 8.2 100.0
( 4) 0.1829 2.5 102.5
( 5) 0.0581 0.8 103.3
( 6) -0.0382 -0.5 102.7
( 7) -0.0694 -0.9 101.8
( 8) -0.1349 -1.8 100.0
合計 7.4300 100.0
非対角成分のRMS誤差 0.0331
変数 共通性 因子負荷量
1 1.175 0.484 0.818 -0.521
2 0.871 0.684 0.549 0.319
3 0.924 0.809 0.349 0.385
4 0.823 0.893 -0.077 0.141
5 0.837 0.883 -0.204 -0.121
6 0.949 0.937 -0.268 -0.002
7 0.976 0.927 -0.303 -0.156
8 0.876 0.864 -0.316 -0.173
<男>
10歳階級 変数 平均値 標準偏差
5〜14 1 0.95833 1.0379
15〜24 2 18.217 13.185
25〜34 3 28.233 20.175
35〜44 4 34.942 24.035
45〜54 5 38.267 29.211
55〜64 6 37.183 25.951
65〜74 7 38.85 26.329
75〜 8 58.117 35.838
相関係数
1.0000
0.9672 1.0000
0.9311 0.9551 1.0000
0.8576 0.8122 0.9209 1.0000
0.8100 0.7573 0.8743 0.9781 1.0000
0.7288 0.6697 0.7905 0.9149 0.9764 1.0000
0.7680 0.6906 0.8159 0.9422 0.9637 0.9556 1.0000
0.3538 0.2167 0.4283 0.7083 0.7393 0.7593 0.8299 1.0000
因子 固有値 % 累積%
1 6.5757 83.5 83.5
2 1.1695 14.9 98.4
3 0.1268 1.6 100.0
( 4) 0.0344 0.4 100.4
( 5) 0.0023 0.0 100.5
( 6) 0.0001 0.0 100.5
( 7) -0.0154 -0.2 100.3
( 8) -0.0217 -0.3 100.0
合計 7.8717 100.0
非対角成分のRMS誤差 0.00582
変数 共通性 因子負荷量
1 0.932 0.884 0.378 -0.088
2 1.016 0.850 0.536 -0.083
3 0.956 0.929 0.303 -0.040
4 0.969 0.984 -0.030 -0.020
5 1.003 0.984 -0.120 0.144
6 0.966 0.936 -0.213 0.213
7 0.969 0.957 -0.228 0.011
8 1.060 0.693 -0.732 -0.210
|