二項ロジット
これは簡単で,2値のfactorを従属変数,リンク関数をglm(family = binomial('logit'))のように指定してやればOK
ちなみにbinomial('probit')にしてやればプロビット回帰になる
多項ロジット
nnet::multinomは検定とかやってくれないし,かといってmlogit::mlogitは独自のデータ形式を要求してくるので面倒くさい.ただ,nnetはbroomに対応しているので,検定部分はbroomに任せることでこの問題は解決.
ということでこれからはnnetで推定→broomに放り込んで検定というのを使っていきたい
順序ロジット
MASS::polrが最有力か?ただし,data.frame形式しか受け付けていないのでtibbleのままデータを入れるとエラーになるのが難点.以前LMestで潜在移行モデルを動かした時にも似たようなことがあった.なんとかならんものか…
ちなみにpolrってなんだろうと思ったら,proportional odds logistic regression(比例オッズロジスティック回帰)の略でした.
一般化順序ロジット
平行性の仮定を一部緩めた部分比例オッズモデル(partial proportional odds model)1とかをやりたいときは,VGAM::vglmが使える.
x1,x2,x3のうち,x1だけ平行性の仮定を緩めたいときは,以下のように書く
VGAM::vglm(formula = y ~ x1 + x2 + x3,
family = VGAM::cumulative(parallel = FALSE ~ 1 + x1, reverse = TRUE),
data = data) parallelの書き方がミソで,parallel = FALSEのあとに等値制約を緩めたいパラメタをformulaで記述する.今回の場合は切片(閾値)とx1の係数だけは各段階で異なるので~ 1 + x1と記述する.また,parallel = TRUEとすると通常の順序ロジットモデルになる.
reverseは係数の符号を反転させるオプションで,reverse = TRUEを入れるとStataのgologit2を用いた時の結果と同じになる.
Footnotes
教育社会学での使用例は近藤・古田(2009)とか.↩︎