লজিস্টিক রিগ্রেশন প্যারামিটার গণনা করার জন্য মুহুর্তগুলির সাধারণীকরণ পদ্ধতি (GMM) ব্যবহার করে


13

লজিস্টিক রিগ্রেশন-এর মতো অনুরূপ একটি রিগ্রেশনের সহগের গুণাগুলি গণনা করতে চাই (অন্য সহগের সাথে আসলে লজিস্টিক রিগ্রেশন: যখন দেওয়া যেতে পারে)। সহগের হিসাব করার জন্য আমি জিএমএম ব্যবহার করার কথা ভেবেছিলাম, তবে আমার যে মুহুর্তের পরিস্থিতি ব্যবহার করা উচিত তা আমি নিশ্চিত নই।এ

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

কেউ কি আমাকে এতে সহায়তা করতে পারে?

ধন্যবাদ!


আপনি যখন " A দেওয়া যেতে পারে " বলছেন , আপনার অর্থ কি এটি ব্যবহারকারী দ্বারা নির্দিষ্ট করা হয়েছে বা এটি মডেল দ্বারা অনুমান করা হয়েছে?
— ম্যাক্রো

যেভাবেই হোক আমি এটিকে একটি ইনপুট (উদাহরণস্বরূপ = 0.25) হিসাবে রাখতে পারি বা সন্ধানের সহগগুলির মধ্যে একটি হতে পারি
— user5497

এটি কি সাবজেক্টে সাবজেক্টে পরিবর্তিত হয় (যেমন এটি ডেটা) বা এটি সমস্ত পর্যবেক্ষণ জুড়ে একটি স্থির ধ্রুবক?
— ম্যাক্রো

সমস্ত পর্যবেক্ষণ (যেমন
— বি 0

2
জিএমএম এর পরিবর্তে সর্বাধিক সম্ভাবনা কেন ব্যবহার করবেন না?
— ম্যাক্রো

উত্তর:


6

ধরে ধরে , এই মডেলটির সাথে বার্নোল্লি প্রতিক্রিয়া ভেরিয়েবল ওয়াই আই রয়েছেA≤1Yi

Pr(Yi=1)=A1+e−Xi′b,

যেখানে (এবং সম্ভবত একটি , তা একটি ধ্রুবক বা একটি প্যারামিটার হিসাবে গণ্য হবে উপর নির্ভর করে) লাগানো কোফিসিয়েন্টস এবং এক্স আমি পর্যবেক্ষণ জন্য ডেটা আমি । আমি ধরে নিই যে ইন্টারপেস টার্মটি হ'ল ডেটা ম্যাট্রিক্সে ধ্রুবক মান 1 সহ একটি ভেরিয়েবল যুক্ত করে পরিচালনা করা হয়েছে।bAXii

মুহুর্তের শর্তগুলি:

E[(Yi−A1+e−Xi′b)Xi]=0.

N

m=1N∑i=1N[(Yi−A1+e−Xi′b)Xi]=0

m′mb

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 *  

(Yi−A1+e−Xi′b)Xii

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:::.obj1মি'মিoptimgmm

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.