No.15813 Rのmlogitで説明変数をグループ化  【崖っぷち君】 2011/11/29(Tue) 23:16

初歩的な質問でしたら,大変恐縮です。

Rのmlogitパッケージを使って,被説明変数に与える説明変数の係数の推定を行いたいのですが,説明変数のグループ化はどのようにやれば出来るのでしょうか?

Exercise にあるchoice of heating system in California housesを参考に,自身のデータを使っているのですが,説明変数のグループ化(一括指定)が出来ていないようです。Exerciseでは,変数が2つ (installation cost and operating cost)あり,選択肢(被説明変数)が5つ(gc, gr, ec, er, hp)あるので,データにはgcのinstallation cost, grのinstallation cost, ecのinstallation, erのinstallation cost, hpのinstallation costというようにinstallation costに対して5つ,同様にoperating costに対しても5つあります。ですが,mlogit.dataに変換すると,それがinstallation costとoperating costという2つに分けられ,結果として,それら2つに対する係数が出ています。自身のデータを使うと,同様に選択肢(被説明変数)の数だけ説明変数が あるので,大きく分けた説明変数に対する係数を推定することが出来ません。

Rの具体的な表示は,下記の通りです。

R> library("mlogit")
R> #source("~/Forge/mlogit/chargement.R")
R> data("Heating", package = "mlogit")
R> H <- mlogit.data(Heating, shape="wide", choice="depvar", varying=c(3:12))
# Heatingのデータでは,ic.gc, ic.gr, ic.ec, ic.er, ic.hp...となっているのに対して,Hのデータでは,一括してicとocとして表示されます。自身の読み込んだデータでは,mlogit.data に変換しても,そのままic.gc, ic.gr...といったように表示されてしまいます。
R> m <- mlogit(depvar~ic+oc|0, H)
# 上記のように,被説明変数~説明変数1+説明変数2...と指定すると,「オブジェクト'説明変数1'がありません」とエラーが出てしまいます。
R> summary(m)
Call:
mlogit(formula = depvar ~ ic + oc | 0, data = H, method = "nr",
print.level = 0)

おそらく,説明変数の一括指定(グループ化)のような作業が欠けているせいだと思いまが,そのやり方が解りません。どなたか,ご教授いただけると幸いです。
よろしくお願いいたします。

No.15815 Re: Rのmlogitで説明変数をグループ化  【青木繁伸】 2011/11/30(Wed) 08:18

Heating と H の行数が幾つになっているかみました?
両方のデータを表示して,以下を参考に比較してみましょう。
mlogit.data は Heating から,対象変数 varying=c(3:12) から choice="depvar" に対応するものを選択し, 形式 shape="wide" に変換するものですよ。
mlogit.data のオンラインヘルプを読みましょう。

No.15822 Re: Rのmlogitで説明変数をグループ化  【崖っぷち君】 2011/11/30(Wed) 19:19

青木先生
早速のご回答をありがとうございます。

mlogit.dataのオンラインヘル プを読み,また,HeatingとHのデータをそれぞれ出力して比較してみました。Heatingはデータの個数である900行あり,Hではそれに選択肢 の数(5個)が掛けられ4500行でした。varying=c(3:12)のところを自身のデータに基づいて変えてみたところ,無事にmlogitの結果 が出ました。

お忙しいところご回答いただき,ありがとうございました。

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