Rでロジットモデル

Statistics
R
Author

Kentaro Kamada

Published

April 29, 2021

二項ロジット

これは簡単で,2値のfactorを従属変数,リンク関数をglm(family = binomial('logit'))のように指定してやればOK

ちなみにbinomial('probit')にしてやればプロビット回帰になる

多項ロジット

nnet::multinomは検定とかやってくれないし,かといってmlogit::mlogitは独自のデータ形式を要求してくるので面倒くさい.ただ,nnetbroomに対応しているので,検定部分は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

  1. 教育社会学での使用例は近藤・古田(2009)とか.↩︎