Tsutomu Okada さんのコメントを転送します:
AmosBasic(Amos5)で,欠損値のあるデータを処理しようとすると結構大変ですね。
「平均値と切片を推定」
sem.ModelMeansAndIntercepts
を指定するだけでは,
「少なくとも一つのグループのデータに対して飽和モデルは適合しませんでした。」エラーになってしまい
尤度比chi2乗統計量やその他の適合度測度は出力されません。
英語版マニュアル(Amos4.0 User's Guide)P339を見つつ,サンプルファイル Ex17-all.amosbasicを参考に
書き加えることで,ようやくカイ二乗値が求まりました。
RMSEAやPCLOSEは本来できあいのmethod(.RMSEA,.PCLOSE)が用意されているのですが,
この場合は,AmosEngineブロックの外で手計算でchi二乗を求めるため,これらのメソッドは使えないようです。
(エラーになってしまいます)。
AMOSBasicは基本的にVisualBasicコンパチですから,chi二乗まであれば,とりあえずRMSEAは簡単に求まりますが
困ったのはPCLOSEです。
せっかく用意されている内部ルーチンを使えればよいのですが,方法がないようです。
ChiSquareProbabilityメソッドを応用すれば何とかなるのでしょうか?(そうなるともう手に負えない範囲です)。
マニュアルに書いてある式をプログラミングするのはとても無理そうですし。
※サポートにも尋ねたのですが,この件はサポート対象外だと言われてしまいました。
それはそれで別にいいのですが,それなら,せめてきちんとしたマニュアルを用意した上で言って欲しい,という不満は残りますね。
そのうえ最近は,別途保守料金を請求するシステムに変わりましたし,
貧乏国立大学で買えるソフトではなくなってきたのかもしれません。
岡田努
----------------------------------------
Ex17-all
sub main
dim rm as double,num as integer '変数の定義
::::
Dim Sem As New AmosEngine
With Sem
::::
Num=.DataFileNCases 'サンプル数
end with
:::::
最後の部分
If (ModelConverged And ModelAdmissible And _
SaturatedConverged And SaturatedAdmissible) Then
ChiSquare = ModelCmin - SaturatedCmin
Df = SaturatedNparms - ModelNparms
Dim FitTest As New AmosEngine
P = FitTest.ChiSquareProbability(ChiSquare, CDbl(Df) )
FitTest.Shutdown 'Suppresses benign error message
'**************** RMSEAの計算
RM= (ChiSquare-Df)/((Num-1)*Df)
If RM<0 Then RM=0
RM=Sqr(RM)
'****************
Debug.Print "Fit of factor model:"
Debug.Print "Chi Square = "; Format$(ChiSquare,"#,##0.000")
Debug.Print "DF = "; Df
Debug.Print "P = "; Format$(P,"0.000")'
Debug.Print "RMSEA = Format$(RM,"0.000") 'RNSEA表示
else
Debug.Print"Sorry, one or both models did not converge to an admissible solution."
End If
end sub
---------------------------------------------------
ここは心理学研究の基礎メーリングリストに投稿された過去の記事を掲載しているページです。