No.20446 semで計算するとエラーになる  【コロン】 2013/11/10(Sun) 15:03

いつもお世話になっております。

なんどやっても解決策がわからないために,ご指導ください。

想定するモデルは次の通りです。

「満足」という因子には「q214」と「q215」が,
「好感」という因子には「q101」と「q103」がぶら下がっています。

「満足」→「好感」

という因果を見たく,エディタで以下のもの(一番最後に掲載します)を作成しました。

ところが sem 関数で計算をすると,以下の警告が出ます。

In eval(expr, envir, enclos) :
Could not compute QR decomposition of Hessian.
Optimization probably did not converge.

ひょっとしたらデータが悪いのかと思い,Amosでやってみたらうまく出ました。ということで,いよいよ原因がわからず投稿している次第です。モデルの特定の部分に原因があるのでしょうか?

ご指導頂けますでしょうか?

************************************************
#相関行列の作成
cc<-readMoments(names=
c("q214","q215","q101","q103"))
1
0.7065 1
0.5106 0.4513 1
0.4573 0.4387 0.7740 1

#モデルの特定
model2 <- specifyModel()
q214 <- 満足, NA, 1 #因子負荷量
q215 <- 満足, path1, NA
q101 <- 好感, NA, 1
q103 <- 好感, path2, NA
q214 <-> q214, e1, NA #観測変数の誤差分散
q215 <-> q215, e2, NA
q101 <-> q101, e3, NA
q103 <-> q103, e4, NA
満足 <-> 満足, f1, NA #因子間共分散
満足 -> 好感, path3, NA #因子間のパス
好感 <-> 好感, f2, NA #因子の誤差分散

#計算
ans2<-sem(model2,cc,586)

#計算結果
summary(ans2)

No.20447 Re: semで計算するとエラーになる  【青木繁伸】 2013/11/10(Sun) 16:27

エラーの原因は hessian 行列が計算できないということですね。

print(ans2) と AMOS の結果はほとんど同じ結果になっていますか?
大きく違うようでしたら,
ans2 <- sem(model2,cc,586, optimizer=optimizerOptim)
として得られる ans2 とはどうですか?
optimizer=optimizerOptim の他にも選択肢はありますが。
このときにはエラーメッセージは出ず,summary(ans2)も表示されます。

No.20449 Re: semで計算するとエラーになる  【コロン】 2013/11/10(Sun) 17:33

青木先生

お返事ありがとうございます。このデータは,田部井明美『共分散構造分析によるアンケート処理』東京図書のデータです。

Amosで計算した結果ですが,以下の通りとなっております。
χ2=3.102
df=1
p=0.078

R の出力を見ますと,χ2がおかしいようです。
Model Chisquare = -80845535 Df = 1

またAmosでは誤差分散はすべて正ですが,Rでは負の値が3つ見られます。

ans2 <- sem(model2,cc,586, optimizer=optimizerOptim)で結果を返しますと,誤差分散などは少し異なりますが,パス係数は,Amosでは0.63(上記図書 ももちろんこの値), Rでは0.65とかなり近くなります。またこれをもとにして pathDiagram も描くことができました。正しいモデルでないことは間違いありません。

今後もし類似したエラーが発生した場合は,optimizer=optimizerOptim などといったものを付けて進めていくいがいないのでしょうか?それで行っても値が異なるのが気になります。

よろしくお願いいたします。

No.20450 Re: semで計算するとエラーになる  【青木繁伸】 2013/11/10(Sun) 18:07

最適化アルゴリズムによりどのような解が求まるか(あるいは,求まらないか)が違ってくるということでしょう。
デフォルトでは hessian 行列の要素が Inf になっているようで,カイ二乗値がおかしな値であるのも,原因は同じでしょう。
なお,アルゴリズム(ソフトウェア)によって解が違う場合,どれがもっともらしい解なのか(どれが基準になるのか)は面倒な検証手続きが必要なのかもしれませんね。

No.20451 Re: semで計算するとエラーになる  【コロン】 2013/11/10(Sun) 18:31

青木先生

ということは,これはどうしようもない問題ということなんですよね。

幸い,Amosを持っていますので,Rでこの種の分析を行う場合は,Amosでも念のために行うことにしたいと思います。

ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 046 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る