No.17119 Rで混合ロジット(mlogit)について  【Shun】 2012/06/22(Fri) 13:32

初めて投稿させて頂きます.

Rで混合ロジットモデルの推定をするためにmlogitパッケージを使っています.

まず,説明変数として6つの変数(A〜F)を設定し,係数を推定しました.
次に,個人属性が変数に与える影響をみるために,下記のような交差項を設定しましたが,計算できません.

res1<-(mlogit(choice~A+B+C+D+E+F
+I(age*A)+I(age*B)+I(age*C)+I(age*D)+I(age*E)+I(age*F)
+I(gen*A)+I(gen*B)+I(gen*C)+I(gen*D)+I(gen*E)+I(gen*F)
+I(inc*A)+I(inc*B)+I(inc*C)+I(inc*D)+I(inc*E)+I(inc*F)
+I(cit*A)+I(cit*B)+I(cit*C)+I(cit*D)+I(cit*E)+I(cit*F)
+I(fam*A)+I(fam*B)+I(fam*C)+I(fam*D)+I(fam*E)+I(fam*F)
,data=dat))

個人属性が1〜4つ程度であれば計算できるのですが,多くなると下記のエラーが表示されます.

以下にエラー parse(text = x) : <text>:2:0: 予想外の 入力の終り です

交差項を入れすぎることに問題があるのでしょうか.他のソフト(stataなど)では問題ないようですが.ご指摘いただければ幸いです.

No.17120 Re: Rで混合ロジット(mlogit)について  【青木繁伸】 2012/06/22(Fri) 16:14

> 他のソフト(stataなど)では問題ないようですが

正しい答えが出ているのでしょうか?また,そちらで答えが出るなら,そちらを使えば良いだけの問題ではないでしょうか。

交互作用項を作るのに I(a*X) を作るのはどうかと思います.
age などがどんな値を取るのかわからないけど,数値で入力しているのですかね。普通はカテゴリー変数は factor で入力して, choice~a+b+c+d+e+f+age:(a+b+c+d+e+f) ... とか書くんじゃないかな。? formula の Details を見るとよいと思います。
交互作用項を見たいのなら仕方ないですが,こんなにたくさんの交互作用項を作っても解釈に困るのではないかと思います。

ちなみに,mlogit を ( ) でくくる必要はないです。

でも,まあ,そんなのはエラーの原因ではないでしょうけど。

また,あなたのデータの規模がわからないですが,最終的に使用されることになる変数の個数は,サンプルサイズより小さいのでしょうね。

debug(mlogit) で mlogit の実行をトレースするとか,ソースを読むことをお勧めします。誰かにやってもらいたいということならば,現象を再現できるデータとソースをアップする必要 があるでしょう。(テストデータを作って,デバグするほどはモノズキではないので)

No.17128 Re: Rで混合ロジット(mlogit)について  【Shun】 2012/06/25(Mon) 11:41

青木先生:ご指摘ありがとうございます.
交互作用項の使い方については勉強中のため理解が不足しておりました.既往論文の解析事例を参考に交互作用項を入れていたのですが,自分が使っているRでは同じような計算ができないため,伺った次第です.

I(a*X)ではなくage:(a+b+c+d+e+f) ... に修正したところ,入力可能な交差項は増えましたが,限度があるようです.いずれにしても,入力すべき属性を選定して解析を進めたいと思います.

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