Multinomial logit

  • Multinomial logitについてはこちら
  • 対応するRのパッケージmlogitの説明記事はこちら
  • そのパッケージがどうなっているかを覗いてみる
# まずはインストール
install.packages("mlogit")
# パッケージを読み込んで
library(mlogit)
# ヘルプ記事を見る
help(mlogit)
# ヘルプ記事のExamplesをまずはコピーペースト
data("Fishing", package = "mlogit")
Fish <- mlogit.data(Fishing, varying = c(2:9), shape = "wide", choice = "mode")
summary(mlogit(mode ~ price + catch, data = Fish))
# "Fishing"というデータを使うようなので、それがどういう構成かを見る
str(Fishing)
# "Fishing"というデータについての説明記事を見る
help(Fishing)
# mlogit()関数が実際に処理しているのはFishというデータなので、それの構成をみる
str(Fish)
# Fishオブジェクトを作っている関数mlogit.data()のヘルプも見る
help(mlogit.data)
# これだけでは、今一つわかりにくいので、数行ずつ表示してみる
Fishing[1:4,]
Fishing[1,]
Fishing[1:2,]
Fish[1:8,]
  • Fishingで1行に書かれている内容が、Fishで4行に展開されている。これがmlogit()を回すための要請らしいことがわかる
> Fishing[1,]
     mode price.beach price.pier price.boat price.charter catch.beach catch.pier catch.boat
1 charter      157.93     157.93     157.93        182.93      0.0678     0.0503     0.2601
  catch.charter   income
1        0.5391 7083.332
> Fishing[1:2,]
     mode price.beach price.pier price.boat price.charter catch.beach catch.pier catch.boat
1 charter     157.930    157.930    157.930       182.930      0.0678     0.0503     0.2601
2 charter      15.114     15.114     10.534        34.534      0.1049     0.0451     0.1574
  catch.charter   income
1        0.5391 7083.332
2        0.4671 1250.000
> Fish[1:8,]
           mode   income     alt   price  catch chid
1.beach   FALSE 7083.332   beach 157.930 0.0678    1
1.boat    FALSE 7083.332    boat 157.930 0.2601    1
1.charter  TRUE 7083.332 charter 182.930 0.5391    1
1.pier    FALSE 7083.332    pier 157.930 0.0503    1
2.beach   FALSE 1250.000   beach  15.114 0.1049    2
2.boat    FALSE 1250.000    boat  10.534 0.1574    2
2.charter  TRUE 1250.000 charter  34.534 0.4671    2
2.pier    FALSE 1250.000    pier  15.114 0.0451    2
  • データの構成、その処理のための特有なハンドリングがわかったところで、mlogit()関数の処理結果を見る

summary(mlogit(mode ~ price + catch, data = Fish))

|