Sử dụng phương pháp tổng quát của các khoảnh khắc (GMM) để tính toán tham số hồi quy logistic


13

Tôi muốn tính hệ số theo hồi quy rất giống với hồi quy logistic (Thực tế là hồi quy logistic với một hệ số khác: khi có thể được cho). Tôi đã nghĩ đến việc sử dụng GMM để tính toán các hệ số, nhưng tôi không chắc những điều kiện thời điểm nào tôi nên sử dụng.Một

A1+e(b0+b1x1+b2x2+),
A

Bất cứ ai có thể giúp tôi với điều đó?

Cảm ơn!


Khi bạn nói " Một có thể được đưa ra", bạn có nghĩa là nó được chỉ định bởi người dùng hoặc nó được ước tính bởi mô hình?
Macro

một trong hai cách Tôi có thể đặt nó làm đầu vào (ví dụ: A = 0,25) hoặc là một trong những hệ số cần tìm
user5497

Nó thay đổi từ chủ đề này sang chủ đề khác (tức là dữ liệu) hay nó là một hằng số cố định trên tất cả các quan sát?
Macro

cố định trên tất cả các quan sát (như b0, b1, ...)
user5497

2
Tại sao không sử dụng khả năng tối đa thay vì GMM?
Macro

Câu trả lời:


6

Giả sử , mô hình này có biến Bernoulli phản ứng Y i vớiMột1YTôi

Pr(YTôi= =1)= =Một1+e-XTôi'b,

trong đó (và có thể là A , tùy thuộc vào việc nó được coi là hằng số hay tham số) là các hệ số phù hợp và X i là dữ liệu để quan sát i . Tôi giả sử thuật ngữ chặn được xử lý bằng cách thêm một biến có giá trị không đổi 1 vào ma trận dữ liệu.bMộtXTôiTôi

Các điều kiện thời điểm là:

E[(YTôi-Một1+e-XTôi'b)XTôi]= =0.

Chúng tôi thay thế điều này bằng bản sao mẫu của điều kiện, giả sử quan sát:N

m= =1NΣTôi= =1N[(YTôi-Một1+e-XTôi'b)XTôi]= =0

Điều này thực tế được giải quyết bằng cách giảm thiểu trên tất cả các giá trị hệ số có thể b (bên dưới chúng tôi sẽ sử dụng đơn giản Nelder-Mead để thực hiện tối ưu hóa này).m'mb

Một

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

Dưới đây là các hệ số được trang bị bằng hồi quy logistic:

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 *  

(YTôi-Một1+e-XTôi'b)XTôiTôi

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 

Mã hội tụ bằng 0 biểu thị thủ tục được hội tụ và các tham số giống hệt với các tham số được trả về bằng hồi quy logistic.

momentEstim.baseGmm.iterativegmm:::.obj1m'moptimgmm

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 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.