投げ縄回帰モデルや、パラメータが部分的にしか方程式に入力されていない他の正規化モデルのAICまたはBIC値を計算することは可能ですか?自由度をどのように決定しますか?
Rを使用して、投げ縄回帰モデルをパッケージのglmnet()
関数に適合glmnet
させています。モデルのAIC値とBIC値を計算する方法を知りたいです。このようにして、値を正則化なしで適合するモデルと比較する場合があります。これは可能ですか?
投げ縄回帰モデルや、パラメータが部分的にしか方程式に入力されていない他の正規化モデルのAICまたはBIC値を計算することは可能ですか?自由度をどのように決定しますか?
Rを使用して、投げ縄回帰モデルをパッケージのglmnet()
関数に適合glmnet
させています。モデルのAIC値とBIC値を計算する方法を知りたいです。このようにして、値を正則化なしで適合するモデルと比較する場合があります。これは可能ですか?
回答:
glmnetモデルのAICとBICを計算する方法に多くの苦労していました。しかし、かなり多くの検索を行った後、Googleの結果の3ページ目に答えが見つかりました。見つけることができますここに。私は私だけができないと信じているので、将来の読者のためにここに投稿しています。
最後に、AICとBICを次の方法で実装しました。
fit <- glmnet(x, y, family = "multinomial")
tLL <- fit$nulldev - deviance(fit)
k <- fit$df
n <- fit$nobs
AICc <- -tLL+2*k+2*k*(k+1)/(n-k-1)
AICc
BIC<-log(n)*k - tLL
BIC
johnnyheinekenが参照するリンクで、著者は次のように述べています。
glmnetオブジェクト(dev.ratio、nulldev)から利用できる2つの量では、AICcを計算するために必要なモデルの尤度を取得するには不十分であると思います。尤度(null)、尤度(model)、尤度(saturated)の3つの未知数に2つの方程式があります。尤度(null)から尤度(model)を取得できません。
2つのモデル間でAICを比較している場合、ヌルの逸脱を分離できないという事実は重要ではないように思えます。不等式の「両側」に存在するため、どちらのモデルがより低いAICを持たなければならないかを示します。これは2つのことに依存しています。