ReplacementMlogitData
mlogit.dataがDeprecated(廃止))されてしまった
Rでチョイスモデルを動かすときに、データをワイドからロングに変換する。通常は、mlogit.dataを使えば一瞬でこの変換ができる。 が、mlogitのバージョンが上がり、1.1になって、mlogit.dataはサポートされなくなった。 正確には、dfidxという別のパッケージに切りだされた。 mlogit.data自体も1.1ではバックエンドがdfidxになっていて、以前のスクリプトがちゃんと動かない。
とても困る。 とはいえ、これ自体、そう複雑なパッケージではないはずなので、なんとかならないか、調べてみることにした。
分析モデル
とりあえず、価格と長さ、品質の組みあわせを調べることにしよう。 釣りざおとか?
id | choice | Price_1 | Length_1 | Price_2 | Length_2 | Q_1 | Q_2 |
---|---|---|---|---|---|---|---|
1 | 1 | 100 | 1.5 | 120 | 1.3 | 1 | 1 |
1 | |||||||
2 | |||||||
2 | |||||||
3 | |||||||
4 | |||||||
4 | |||||||
5 | |||||||
5 |
e6 %>% pivot_longer(cols=starts_with("Price_"), names_to="np", names_prefix="Price_", values_to="price") %>% pivot_longer(cols=starts_with("Brand_"), names_to="nb", names_prefix="Brand_", values_to="brand") %>% pivot_longer(cols=starts_with("Poverty_"), names_to="no", names_prefix="Poverty_", values_to="poverty") %>% pivot_longer(cols=starts_with("ASC_"), names_to="nasc", names_prefix="ASC_", values_to="ASC") %>% filter(np == nb & np == no & np == nasc) %>% mutate(choice=gsub(choice,pattern="choice",replacement = "", ignore.case = TRUE)) %>% mutate(ctf=(choice == np)) %>% select(-nb, -no, -nasc)
以下、書きかけだが、上記のスクリプトの変数を適宜変更すれば動くはず。