JuliaでGLM(使える選択肢)


Julia の GLM (v1.1.1) パッケージで使える一般化線形モデルの分布モデルとリンク関数と、推定したモデルに対して使える関数を列挙する。前記事の補足である。

モデリングに際して

自分の持ってるデータに GLM を適用するにあたって、
1. 分布モデル:モデリングしたい目的関数の値の型と範囲に合うもの
2. リンク関数:データをそれで変換したら線形になりそうなもの、
をそれぞれ選んで、組み合わせられるようなら glm() で指定してモデリングする。今一つピンと来ない時は、試せる組み合わせを全部試す。

使い方

using GLM, RDatasets

dat = RDatasets.dataset("datasets", "iris")             # R の iris データ
mod = glm(@formula(SepalLength ~ SepalWidth * Species), # 目的変数と説明変数
          dat,                                          # データ
          Normal(),                                     # 分布モデル
          IdentityLink())                               # リンク関数

使える分布モデル

目的関数の値の型と範囲に合い、かつ分布の様子をうまく表せそうなものを選ぶ。

分布モデル 関数名 目的変数 備考 ありがちな組み合わせ
ベルヌーイ分布 Bernoulli() 0か1の二値 LogitLink
二項分布 Binomial() 0か1の二値 LogitLink
ガンマ分布 Gamma() 非負実数 InverseLink
正規分布 Normal() 全ての実数 IdentityLink
ポアソン分布 Poisson() 非負整数 目的変数の期待値 = 分散 LogLink
負の二項分布 NegativeBinomial(θ) 非負整数 期待値 < 分散 LogLink

負の二項分布を使いたいがθの値をどうしていいかわからないというときは、glm() の代わりにθの値も推定する negbin() を使う。

使えるリンク関数

リンク関数の選択肢はこんな感じ。もしかしたら「対象となる分布」には Julia では使えないものも混ざっているかもしれないが、GLMパッケージのバージョンアップで対応するかもしれない。

リンク関数$f(y)$ 目的変数$y$ 対象となる分布 備考
CauchitLink() 0か1の二値 二項分布
CloglogLink() $0<y<1$ 二項分布 $f(y)=\log(-\log(1-y))$
IdentityLink() 全ての実数 ポアソン、ガンマ、正規 変換しない $f(y) = y$
InverseLink() 非零の実数 ガンマ、正規 $f(y) = 1/y$
InverseSquareLink() 非零の実数 逆正規分布 $f(y) = 1/y^2$
LogitLink() 0か1の二値 ベルヌーイ、二項 ロジスティックの逆関数
LogLink() 非負の実数、整数 二項、ポアソン、ガンマ、正規 $f(y) = \log(y)$
NegativeBinomialLink() 非負で上限のある整数 負の二項分布 $f(y)=\log(y/(y+θ))$、θは指定する
ProbitLink() 非負実数 二項分布 正規分布の累積分布関数の逆関数
SqrtLink() 非負実数 ポアソン $f(y)=\sqrt{y}$

モデルができたら

得られたモデルに対して使える関数には以下のようなものがある。モデルの情報を取り出したり、モデルをもとに計算したりする。

関数
coef() 線形予測子の係数を返す
deviance() モデルの逸脱度を返す
dof_residual() 残差の自由度を返す
glm() 一般化線形モデルを当てはめて返す
lm() 一般線形モデルを当てはめて返す
stderror() モデルの各係数の標準誤差を返す
vcov() モデルの分散共分散行列を返す
predict() モデルから目的変数の予測値を計算して返す

また、得られたモデルのオブジェクト内にいくつかフィールドがある。上の関数では見られない値も、フィールドを直接参照したらわかる。glmfit.jl 内で GwtslmResp 構造体に定義されている。モデルのオブジェクトを mod とすると、たとえば逸脱度残差には mod.model.rr.wrkwt でアクセスできる。

フィールド 意味
y 目的変数値 FPVector
d 分布モデル UnivariateDistribution
devresid 逸脱度残差 FPVector
eta 線形予測子の値 FPVector
mu 予測値(モデルが予測する分布の期待値) FPVector
offset 線形予測子に加えるオフセット FPVector
wrkwt 最終的に得られた重み FPVector
wrkresid 最終的に得られたモデルの残差 FPVector