一般化モーメント法(GMM)を使用してロジスティック回帰パラメーターを計算する


13

ロジスティック回帰に非常に類似した回帰の係数を計算したい(実際には別の係数を使用したロジスティック回帰: とき与えられたことができます)。GMMを使用して係数を計算することを考えましたが、使用すべきモーメント条件は何かわかりません。

A1+eb0+b1バツ1+b2バツ2+
A

誰でもそれを手伝ってくれますか?

ありがとう!


「与えることができます」と言うとき、それはユーザーによって指定されているのですか、それともモデルによって推定されているのですか?A
マクロ

どちらにしても。入力(egA = 0.25)として入力するか、検索する係数の1つにすることができます
user5497

被験者ごとに異なりますか(つまり、データですか)、またはすべての観測値にわたって固定された定数ですか?
マクロ

すべての観測(b0、b1、...など)で
修正

2
GMMの代わりに最尤法を使用しないのはなぜですか?
マクロ

回答:


6

仮定すると、、このモデルは、ベルヌーイの応答変数があるY IとをA1Y

PrY=1=A1+eバツb

ここで、(およびおそらく定数として扱われるかパラメーターとして扱われるかに応じてA)は近似係数であり、X iは観測値iのデータです。定数項が1の変数をデータマトリックスに追加することにより、インターセプト項が処理されると仮定します。bAバツ

瞬間条件は次のとおりです。

E[YA1+eバツbバツ]=0。

観測を仮定して、これを条件のサンプル対応物に置き換えます。N

m=1N=1N[YA1+eバツbバツ]=0

これは、考えられるすべての係数値bでを最小化すること実際に解決されます(以下では、この最適化を実行するためにNelder-Meadシンプレックスを使用します)。mmb

トピックに関する優れたR-bloggersチュートリアルから借りて、gmmパッケージを使用してRでこれを実装することは非常に簡単です。例として、虹彩データセットを操作して、がく片の長さと幅、および花弁の長さと幅に基づいて虹彩がan色かどうかを予測します。この場合、は定数で1に等しいと仮定します。A

dat <- as.matrix(cbind(data.frame(IsVersicolor = as.numeric(iris$Species == "versicolor"), Intercept=1), iris[,1:4]))
head(dat)
#      IsVersicolor Intercept Sepal.Length Sepal.Width Petal.Length Petal.Width
# [1,]            0         1          5.1         3.5          1.4         0.2
# [2,]            0         1          4.9         3.0          1.4         0.2
# [3,]            0         1          4.7         3.2          1.3         0.2
# [4,]            0         1          4.6         3.1          1.5         0.2
# [5,]            0         1          5.0         3.6          1.4         0.2
# [6,]            0         1          5.4         3.9          1.7         0.4

ロジスティック回帰を使用して近似された係数は次のとおりです。

summary(glm(IsVersicolor~., data=as.data.frame(dat[,-2]), family="binomial"))
# Coefficients:
#              Estimate Std. Error z value Pr(>|z|)    
# (Intercept)    7.3785     2.4993   2.952 0.003155 ** 
# Sepal.Length  -0.2454     0.6496  -0.378 0.705634    
# Sepal.Width   -2.7966     0.7835  -3.569 0.000358 ***
# Petal.Length   1.3136     0.6838   1.921 0.054713 .  
# Petal.Width   -2.7783     1.1731  -2.368 0.017868 *  

gmmを使用する必要がある主要な要素は、モーメント条件、つまり行、各観察用IYA1+eバツbバツ

moments <- function(b, X) {
  A <- 1
  as.vector(X[,1] - A / (1 + exp(-(X[,-1] %*% cbind(b))))) * X[,-1]
}

b

init.coef <- lm(IsVersicolor~., data=as.data.frame(dat[,-2]))$coefficients
library(gmm)
fitted <- gmm(moments, x = dat, t0 = init.coef, type = "iterative", crit = 1e-19,
              wmatrix = "optimal", method = "Nelder-Mead",
              control = list(reltol = 1e-19, maxit = 20000))
fitted
#  (Intercept)  Sepal.Length   Sepal.Width  Petal.Length   Petal.Width  
#      7.37849      -0.24536      -2.79657       1.31364      -2.77834  
# 
# Convergence code =  0 

収束コード0は、手順が収束したことを示し、パラメーターはロジスティック回帰によって返されるパラメーターと同じです。

momentEstim.baseGmm.iterativegmm:::.obj1mmoptimgmm

gmm.objective <- function(theta, x, momentFun) {
  avg.moment <- colMeans(momentFun(theta, x))
  sum(avg.moment^2)
}
optim(init.coef, gmm.objective, x=dat, momentFun=moments,
      control = list(reltol = 1e-19, maxit = 20000))$par
#  (Intercept) Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#    7.3784866   -0.2453567   -2.7965681    1.3136433   -2.7783439 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.