SSブログ

多項ロジットモデルの最尤推定 [データサイエンス、統計モデル]

多項ロジットモデルは、対象が3つ以上の質的変数を目的変数とする推定する

## R package [nnet] を利用 library(nnet)
## 多項ロジスティック判別を実行
Logistic = multinom(grape ~ ., data = wine.train) summary(Logistic)

パッケージを使うと一行でかけるのですが、最尤法を実装してみました。
小数点の細かい部分で誤差は出ていますが、パッケージでの実行結果と同じになっています。

##多項ロジットモデル
hh <-nrow(wine.train) ##データ数 b0<-c(0, 0, 0, 0, 0, 0)
## Logit model の対数尤度関数の定義 fr <- function(x) {
LL = 0
a0 <- x[1] # grape2 切片 a1 <- x[2] # grape2 x1 a2 <- x[3] # grape2 x2 b0 <- x[4] # grape3 切片 b1 <- x[5] # grape3 x1 b2 <- x[6] # grape3 x2
# 効用の計算
U_1 <- 0
U_2 <- a0 + a1*wine.train[,"x1"] + a2*wine.train[,"x2"]
U_3 <- b0 + b1*wine.train[,"x1"] + b2*wine.train[,"x2"]
d <- exp(U_1) + exp(U_2) + exp(U_3)
LLI <- wine.train[,"grape1"]*U_1 + wine.train[,"grape2"]*U_2
+ wine.train[,"grape3"]*U_3 -log(d)
##対数尤度の計算 LL <- sum(LLI) return(LL)
}
## 対数尤度関数fr の最大化
res <- optim(b0, fr, method = "BFGS", hessian = TRUE,
control=list(fnscale=-1))
matrix(res$par, nrow = 2, ncol = 3, byrow = T)


スパース回帰分析とパターン認識 データサイエンス入門シリーズ

スパース回帰分析とパターン認識 データサイエンス入門シリーズ

  • 出版社/メーカー: 講談社
  • 発売日: 2020/04/30
  • メディア: Kindle版



nice!(0)  コメント(0) 
共通テーマ:学問

nice! 0

コメント 0