excel vba program for faccon.exe

コバンザメアプリ v1.6

(愛称:忍者ハットリ君)


最終更新日:
counter: (2002/12/17からの累積)

ダウンロード(excel 2000 with vba)  圧縮ファイルのダウンロード

服部環さん@筑波大学の因子分析・因子数判断ソフト(Factor analysis for continuous variables: faccon.exe)
(http://www.human.tsukuba.ac.jp/~hattori/faccon/faccon.html) 使用するのに必須
をexcel から使用できるようにし,さらにユーザフレンドリーにした。

前振りの追加
[fpr 2302] 忍者ハットリ君

適合度指標の見方の一つとして
SPSS ときど記(209) 2005/ 2/25 AMOS 適合度指標の読み取り
を参考にしてください。
因子数決定指標の検討(excel ならこちら Netscapeはこちら)をみれば各指標の特徴がとりあえずわかる。
具体的に因子数決定するための方法としては因子分析における因子数決定法──平行分析を中心にして── p62からの討論をお読み下さい。

斜交回転 Harris-Kaiser と直接オブリミン追加

Harris-Kaiser と直接オブリミン の2つの斜交回転法をサポートしました。
(1)harris-kaiser6.bas をexcel vba にインポートする。
(2)因子負荷量のある画面において マクロを走らせる。
(3)回転Harris_Kaiser または 回転Oblimin を走らせる。
(4)Harris-Kaiser ではpower=0とpower=0.5 の出力。
(5)直接オブリミンではδ=0 のときの出力。
(6)パラメータを変えたいならプログラムの中をいじってください。
Harris-Kaiser6.bas
このプログラムは小笠原春彦さん@小樽商科大学のROSEFから該当箇所をvba に移植したものです。なお,Harris-Kaiser の固有値を求めるルーティンにおいて同一固有値がある場合計算できなくなるのでjacobi に差し替えています。

version 1.6      2003.3.20 改訂点

ver 1.5 (a)の修正がバグだったので戻した
名前」の付け方を少し変更。並び方を揃えた。

version 1.5      2003.3.15 改訂点

(a)シート準備の相関行列の場合のバグ
(b)MAPの出力において最小値を場合によって間違えるバグ
(c)主要な出力に「名前」をつけて、ジャンプできるようにした。
ctrl+G もしくは、メニューの編集→ジャンプ
(d)適合度の色つけをHu and Bentler を参考に変更
(e)スクリープロットに平行分析の結果も付け加える。対角SMCのスクリープロットも出力(対角SMCの平行分析がスクリーによく対応していることがわかる)
(f)因子間相関行列においても、相関係数を色づけした。
(g)faccon.exe をうまく軌道できない原因があるのは、excel においてファイルを多重軌道したときに起こりやすいことを発見。一度excel を終了させると、この問題を解消する。

excel 2002 sp-1 を使いだして、sort が異常に時間をくうことがわかった。自力でsort したほうがいいのだろうか。excel 2000 ではこれほど遅くない。また、自動保存機能がじゃまになることがよくある。このための誤入力も起こる。とりあえずbook の保存は行わないに変更しておいた。保存の間隔も長くした。
 また、excel 2002 のマクロに対してなにか使いにくい。マクロチェック機能をつかわないか、認可をうけるかだ。チェック機能をはずすと、すべてのマクロが素通りだ。excel 2000 のように、起動時に警告するようにできないのか。

主な機能

(1)服部環さん@筑波大学の因子分析・因子数判断ソフト(Factor analysis for continuous variables: faccon.exe)
(http://www.human.tsukuba.ac.jp/~hattori/faccon/faccon.html) 使用するのに必須
をexcel から使用できるようにし,さらにユーザフレンドリーにした。

服部環(2003). 共通因子数の決定とそれを援助するためのコンピュータ・プログラムの開発 応用心理学研究, 28, 135-144.

(2)いくつかのオプションは殺してしまっている。もしそれを使用したいならvbaの中を書き換えればいい。


(3)簡単な使用法。

(a)faccon.exe をc:\my documents のフォルダーに置く。これはexcel のファイル読みとりの既定値。もし既定値が異なるなら,そのフォルダーに入れる。よく分からないときは,run_hattori マクロを走らせれば,そのフォルダーを示す。

(b)データのタイプはhattori15 に例がある。また、Thurstone 因子間を処理した結果が分析1にある。1因子か2因子か大いに悩むところである。指標だけでは決断できない例だろう。

(c)さっそく試すには,thurstone21〜服部aのどれかのシートを開き,
そこでrun_hattoriマクロを走らせる。

《マクロの起動の仕方》。

メニューバーのツール→マクロ→マクロ (またはalt+F8)
run_hattori が反転しているので,そのまま「実行」をクリック。
(相関行列か素データかは自動的に判断する)

(d)これで実行結果がexcel に読みとられる。

(e)因子数判断の目安が緑色で示される。スクリープロットも追加。
因子判定用sheetには [分析2]のようにシート名が付けられる。

適合度が満たされると考えられる値については緑色セルにしている。一般にいわれているという基準を採用している。
Hu nd Bentler(1999)はシミュレーションによって新たな基準を出している。2つの指標を使用する方法である。2つの指標のうちの一つは, SRMR(standardized root mean squared residual)である。faccon.exe では相関行列を処理しているので、RMSRと同じである。SRME >0.06 and TTL<.95 ならば不採択。そうでないなら採択。ということは、RMSR>=0.06 or NNFI(TLI)>=.95 で採択ということになる。Hu and Bentler は、RNI,CFI,RNSEA の基準もあげているので、これらについては、Hu and Benteler の基準を使った。もっとも、Hu and Bentler の使い方は一つではないので、詳しくは言論文を読むべし。また、サンプルサイズが250以下の場合は別の基準が必要としている。1000以上ならかなり信用できるとしている。ただし、実データがどんな分布かわからないから絶対的信用はさける必要はある。これらの基準は最尤法においてのみ有効である。
 旧基準には緑と違う色を使っている。

Hu,L, and Bentler, P.M.(1999). Cutoff criteria for fit indexes in covariance structure analysis: Conventional criteria versus new altenative. Structure Equation Modeling, 6, 1-55.
(複数の指標を使うのがいい。そのうちの一つがSRMR. 500 以上のときはSRMR<.06 AND TLI>.95 がベスト。そのほかの組み合わせも可能。)


(f)各因子分析の結果は[分析2__3]のようにハイフンの後の数値が因子数を表すように付けられている。服部a がその例である。適合度指標をきっちりだすには制限しないほうがいい。

因子パタン等は絶対値0.4以上のセルを水色に着色している。

(g)また,因子パタン等の大きさのよって各因子に負荷しているよう変数の並べ替えをするマクロもついている。並べ替えたい場合はその因子数のシートを開き,

メニューバーのツール→マクロ→マクロ
run_sort をクリックして反転させ,実行をクリック。(もしくはrun_sort をダブルクリック)

こうすると因子を解釈しやすい。変数名をつけておけばさらに解釈しやすい。

(h)相関係数の大きさによってセルに色を塗っている。
絶対値 0.7以上 マゼンタ(明るい赤紫色)
絶対値 0.5以上 黄色
絶対値 0.3以上 水色
相関行列をよくながめて欲しい。

(i)適合度指標の右上に小さな赤三角がついているセルがあるが,簡単なコメント(註)を入れている。マウスカーソルをそのセルにもってくるとコメントが表示される。コメントが表示されなければ,さらに右クリックをしてみるといい。

(j)100回で収束しなかったとき,適合度指標の因子解の番号のセルに赤系のマークがつく。初期解も求めることができなかった場合は適合度指標のところに「NaN」という文字が多く並ぶ。この場合でも主成分解は出力される。


(k)適当に「名前」を付けておいた。ctrl+g (またはメニューバー 編集→ジャンプ )で「名前」が表示されるので、ダブルクリックするとそこにジャンプする。いらないシートは削除しておいたほうが、ジャンプ先を選びやすくなる。

以上,データ処理と結果について

(4)データの準備

例によって癖のあるデータにしている。
(a)普通のデータを準備していれば簡単にコバンザメ君用データにするマクロを準備した。「Run_prep_datasheet」マクロである。
通常のデータのサンプルとして,excel のシートに[corr例1,2],[data例1,2]というシートがある。どちらかをひらき「Run_prep_datasheet」マクロを起動すればコバンザメ用のデータシートを作る。そのまま因子分析も実行できる。できれば変数名はそれぞれの研究に使った項目名を付けておく方がわかりやすい。

これまた自動的に素データか相関行列かを判断する。

変数名が最初からついていてもいい。変数名をつける場合,相関行列の場合は縦横ともに変数名が必要である。

(b)変数の選択。因子分析に使わない変数は変数名の上のセルに「x」(半角)を付ける。再度使用する変数に戻すときは,このセルを空白にする。

(c)因子数は指定がなければ1因子解から「Lederman の境界」となる因子解までを求める。不適解が生じやすいが適合度指数の挙動を調べるにはここまでやれば安心である。もしLederman の境界が20因子以上の場合,20因子解まで求める(facconの制限)。

(d)因子数の指定はデータシートのD1セル。
例えば「8」と数字を入れれば1-8因子解を求める。
8因子解だけのときは「'8-8」と入れる。最初の[']はexcelの入力において-が入ると日付と自動判断するため。
2-5因子解を求めるときは「'2-5」と入れる。


(e)因子抽出法の指定はデータシートのE1のセルで行う。
ML 最尤法(既定値)
ULS 最小2乗法
何も書かなければMLが指定されているとみなす。大文字でも小文字でもいい。適合度指標を見るのは最尤法のほうがよいので,できれば最尤法を使ってください。

(f)サンプルサイズはA1セル,変数数はB1セルに書き込む。これは必須。

(g)タイトルはA2セル。あったほうが後で結果を見るときにいいでしょう。

(h)変数名は4行目にいれる。必須。相関行列の場合はA列にも変数名を入れる。エクセルのコピー機能に転置する機能がある。(編集→形式を選択して貼り付け(行列を入れ替える))のでそれを使うと簡単。

(i)セルの右上の小さな赤三角にコメントがついているので,そこにカーソルを当てると上の説明がある。(run_Prep_datasheet を走らせてデータシートを準備した場合はコメントが付けられる。

(5)自分のデータを処理する (excel 初心者用説明)

自分のデータを処理するにはまず自分のデータを準備する。そのとき変数名をきちんと付けておくと処理結果を見るときに役立つ。

処理の仕方はいくつかある。
(a)hattori.xls というbook(つまりファイル)(愛称:忍者ハットリ君) と自分のデータファイルのbook(excelファイル) を同時にexcel に読み込んでおく。
 そして自分のデータシートを開いておいて,マクロを走らせる。このときまだ,忍者ハットリ君用のデータになっていない場合は,マクロ run_prep_datasheet を走らせる。
(b)hattori.xls の hattori.bas を保存しておいて,自分のデータのあるexcel ファイル(つまりbook)に読み込む。
《hattori.xls からhattori.bas を保存する》
@hattori.xls を開く。
Aalt+f11 または ツール→マクロ→visual basic editor
としてvisual basic editor を開く。
Bhattori(コード)の窓をクリックする。
 この窓がない場合,左にある窓(プロジェクト VBAProject)の標準モジュールのフォルダーを開き→hattori をダブルクリック
(右クリックでCのファイルのエクスポートを選んでもいい)
Cファイル→ファイルのエクスポート→ファイル保存(hattori.basであることを確認し)→OK
以上でhattori.basが保存される。

《データのあるbook(excel ファイルに読み込む》
@他のbook は閉じる
Aalt+F11 または ツール→マクロ→visual basic editor
としてvisual basic editor を開く。
Bファイルやファイルのインポート→hattori.bas を選択し→OK
以上(c)hattori.xls に追加する。
@左下のシート名のところで右クリック→挿入→ワークシート選択→新しいシートが挿入されるのでそこのデータを入れる。

(c)はやたらシートを増やすことになるので,(a)か(b)を薦めます。メモリの関係からは(b)がもっともよいでしょう。

(6)用語シートの説明(excel 初心者用)

excel の左下にタグがあります。これがsheetの名前です。今度はex1が見えるようになっていると思いますがどうでしょう。タグの左にある横▼マークがタグの表示をずらすものです。|横▼は先頭,横▼|は最後のシートのタグが表示されます。

シートとは1枚の表に対する呼び名です。

タグをダブルクリックするとそのシートが表示されます。

なお,上で指摘している▼マークの上で右クリックをするとシート選択のメニューになります。

(7)parallel analysis の乱数データ作成は 100に固定してある。

(8)promax のパラメータは3(既定値)に固定してある。4でも大して変わらないのと,微妙な違いでもよりよい解を求めるなら直接oblimin にしたほうがいい。すでに直接oblimin はvbaに移植したものを公開している。初期解を読み込んで処理するようにすれば。

(9)faccon の実行時間のほうがexcel に書き写す時間よりもはるかに短い,書き写す時間を短縮するため画面更新を止めている。完全に止めると長時間まつことに苛立ちを感じるかもしれないので,シートが更新されるときに画面を更新している。進行状態がこれでわかる。faccon の処理のほうはdos画面で進行が分かるようになっている。50変数以上になるとさすがに待ち時間が長くなる。お茶でも飲んでゆっくりしてください。

堀 啓造(home page) e-mail hori@ec.kagawa-u.ac.jp