ill-identified diary

所属組織の業務や見解とは一切無関係なアフィリエイト付きメモ帳。所属とは関係ないけどここを見て所属先にも興味を持っていただけると喜びます。

[R] glmnet を glm みたいに使う

概要

  • 本文よりリンクの面積の方が大きいしょぼい記事
  • glmnet()glm() の構文っぽく使う関数を雑に作った.
  • 今は caretがあるのであまり意味はない.

内容

glmnet パッケージの glmnet() は名前でわかるように一般化線形モデル (GLM) を elastic net で正則化してくれる関数だが, 組み込みの glm() と違って formula で式を与えられないので若干めんどくささがある*1. また, リンク関数も指定できず, 自分で応答変数を変換してから使う必要がある.

今は caret と併用すればデータフレームと formula でモデルを定義できる部分は可能になるので意味は薄いが, 適当に作ってみた.

glmnet 自体の簡単な解説はここなんかを.

www.slideshare.net

GLM の解説は久保本 (緑本) が定番か.


以下が本題. elastic net なので, formula で指定した説明変数がすべて使われるわけでなく, 選択肢の候補である. よってデフォルトでは y~. つまり y 以外の全変数を候補として扱う. 厳密にテストしてないのでいろいろ問題がありそう*2.
2017/5/1: プログラムを清書


giste3a394011fc1e3e18d051c3fff95fbc5


以上


*1:つまり, factor型のカテゴリ変数を自分でパースしなければならない

*2:たとえば, 出力にリンク変数の変換情報がないため, そのまま predict する際は手動で変換前の値に復元する必要がある