質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Q&A

解決済

2回答

4536閲覧

Rstudioの構造方程式モデリングで標準誤差が算出されません

ashu

総合スコア2

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

0グッド

0クリップ

投稿2020/08/29 15:52

##やろうとしていること
Rstudioで構造方程式モデリング(交差遅延モデル)の分析をしようとしています。関数はlavaanパッケージのlavaan()を用いています。

##分析内容
2時点のパネルデータ を用い、それぞれにおける2つの潜在変数(internal, institution)を5つの観測変数(INFLU, COMPLEX, PARTY, ELECTION, CONGRESS)で予測しています。そして、両時点における潜在変数間の交差遅延効果を測定する、というのが分析の大枠です。
モデルにすると構造方程式部分は
X2=α1・X1+β1・Y1+ε1
Y2=α2・X1+β2・Y1+ε2
というものを想定しています(X=internal, Y=institution)。

##使用しているコード
以下がコードになります

model2009 <-' internal1 =~1*INFLU1+COMPLEX1 institution1 =~ 1*PARTY1+ELECTION1+CONGRESS1 internal2 =~1*INFLU2+COMPLEX2 institution2 =~ 1*PARTY2+ELECTION2+CONGRESS2 INFLU1~~INFLU1; COMPLEX1~~COMPLEX1; PARTY1~~PARTY1; ELECTION1~~ELECTION1; CONGRESS1~~CONGRESS1 INFLU2~~INFLU2; COMPLEX2~~COMPLEX2; PARTY2~~PARTY2; ELECTION2~~ELECTION2; CONGRESS2~~CONGRESS2 internal2~internal1+institution1 institution2~internal1+institution1 internal1~~institution1; internal2~~institution2; internal1~~internal1; institution1~~institution1; internal2~~internal2; institution2~~institution2 ' lavaan(model2009, panel.2009,     ordered = c("PARTY1","ELECTION1", "CONGRESS1", "INFLU1", "COMPLEX1",     "PARTY2","ELECTION2", "CONGRESS2", "INFLU2", "COMPLEX2"), WLS.V = TRUE, sample.nobs=1107)

##問題点
以上のコードを走らせると次のような警告文が表示されます。

警告メッセージ: 1: lav_model_vcov(lavmodel = lavmodel, lavsamplestats = lavsamplestats, で: lavaan WARNING: Could not compute standard errors! The information matrix could not be inverted. This may be a symptom that the model is not identified. 2: lav_test_satorra_bentler(lavobject = NULL, lavsamplestats = lavsamplestats, で: lavaan WARNING: could not invert information matrix needed for robust test statistic 3: lavaan::lavaan(model = model2009, data = panel.2009, ordered = c("PARTY1", で: lavaan WARNING: estimation of the baseline model failed. 4: lav_object_post_check(object) で: lavaan WARNING: some estimated lv variances are negative

エラーとはならないため、走らせることは可能なのですが、実際に分析結果を表示すると、標準誤差の箇所に全てNAが表示されてしまいます。
どうすればいいのでしょうか?

##考えうる原因
警告文の一文目を検索してみたところ、1つの潜在変数で2つの観測変数を予測しようとすると(internal1 =~1*INFLU1+COMPLEX1, institution2 =~ 1*PARTY2+ELECTION2+CONGRESS2の箇所など)表示されるらしいのでうすが、その場合、潜在変数間に相関関係を想定していないことが原因のようで、私のモデルではこれを想定したモデルになっている(internal1~~institution1, internal2~institution2の箇所)はずなのですが、解決されません。

##備考
このデータは調査データが4または5件尺度の順序尺度なので、相関行列の算出にはポリコリック相関(orderedの引数を使っています)を用いています。
また、使用しているデータのpanel2009は、NAが含まれるサンプルは全て排除して分析しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

原因

  • 原因はlavaan関数内の引数にありました

解決したコード

model_cross2009 <-' #lavaan()ではなくsem()を使っているため、測定変数や潜在変数の誤差分散は書く必要がありません internal1 =~1*INFLU1+COMPLEX1; institution1 =~ PARTY1+ELECTION1+CONGRESS1; internal2 =~1*INFLU2+COMPLEX2; institution2 =~ PARTY2+ELECTION2+CONGRESS2; internal2 ~ internal1+institution1; institution2 ~ internal1+institution1 ' result_cross2009 <- sem(model_cross2009, panel.2009,ordered = c("PARTY1", "ELECTION1", "CONGRESS1", "INFLU1", "COMPLEX1", "PARTY2","ELECTION2", "CONGRESS2", "INFLU2", "COMPLEX2"))

詳細

  • 解決した理由は、lavaan(今回はsemですが)関数内のWLS.Vの引数を削除したためです
  • WLS.Vは使用するのがローデータではなく相関行列の場合にTRUEにする必要がありますが、最初の質問の時点ではローデータを用いていたにも関わらずTRUEにしていたため警告メッセージ、またはエラーが生じました

投稿2020/09/14 21:54

ashu

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

その手法を自分で扱ったことがないので具体的な原因まで私は踏み込めません。ただ、問題を特定する手順は以下のようになると思います。

警告をエラー扱いにするよう設定して実行すると、現在は警告が発生する箇所でエラーが発生して実行が停止します。

停止したらすぐにtraceback()を実行して問題の根源が何行目にあるかを特定。その行で参照されているオブジェクトの中身が想定されている通りのものであるかを確認します。何が引っかかっているのかを確かめていきます。

参考:
R 実行時のエラーをデバッグするには debug 関数や traceback 関数などを利用する

投稿2020/08/29 18:01

KojiDoi

総合スコア13692

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ashu

2020/08/30 01:00

ありがとうございます!試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問