কেন উজ্জ্বল সর্বোচ্চ সম্ভাবনা অর্জন করে না (আরও জেনেরিক অপ্টিমাইজেশান প্রয়োগ করে যাচাই করা হয়েছে)?


37

সংখ্যাসূচকভাবে আহরিত MLE s এর GLMM কঠিন এবং বাস্তবে,, আমি জানি, আমরা পাশব বল অপ্টিমাইজেশান ব্যবহার করা উচিত নয় (যেমন, ব্যবহার optimএকটি সহজ ভাবে)। তবে আমার নিজের শিক্ষাগত উদ্দেশ্যে, আমি মডেলটি সঠিকভাবে বুঝতে পেরেছি কিনা তা চেষ্টা করার চেষ্টা করতে চাই (নীচের কোডটি দেখুন)। আমি দেখতে পেয়েছি যে আমি সবসময়ই এর থেকে বেমানান ফলাফল পাই glmer()

বিশেষত, আমি যদি এমএলইগুলি glmerপ্রাথমিক মান হিসাবে ব্যবহার করি তবে আমার লেখা সম্ভাবনা ফাংশন অনুযায়ী ( negloglik), সেগুলি এমএলই নয় (এর opt1$valueচেয়ে ছোট opt2)। আমি মনে করি দুটি সম্ভাব্য কারণ হ'ল:

  1. negloglik এটি ভালভাবে লেখা হয় নি যাতে এতে খুব বেশি সংখ্যাসূচক ত্রুটি থাকে এবং
  2. মডেল স্পেসিফিকেশন ভুল। মডেল নির্দিষ্টকরণের জন্য, উদ্দেশ্যে করা মডেলটি হ'ল:

L=i=1n(f(yi|N,a,b,ri)g(ri|s)dri)
যেখানে একটি দ্বিপদী পিএমএফ এবং একটি সাধারণ পিডিএফ। আমি , এবং অনুমান করার চেষ্টা করছি । বিশেষত, আমি জানতে চাই যে মডেলের স্পেসিফিকেশনটি ভুল, সঠিক স্পেসিফিকেশনটি কী।fgabs
p <- function(x,a,b) exp(a+b*x)/(1+exp(a+b*x))

a <- -4  # fixed effect (intercept)
b <- 1   # fixed effect (slope)
s <- 1.5 # random effect (intercept)
N <- 8
x <- rep(2:6, each=20)
n <- length(x) 
id <- 1:n
r  <- rnorm(n, 0, s) 
y  <- rbinom(n, N, prob=p(x,a+r,b))


negloglik <- function(p, x, y, N){
  a <- p[1]
  b <- p[2]
  s <- p[3]

  Q <- 100  # Inf does not work well
  L_i <- function(r,x,y){
    dbinom(y, size=N, prob=p(x, a+r, b))*dnorm(r, 0, s)
  }

  -sum(log(apply(cbind(y,x), 1, function(x){ 
    integrate(L_i,lower=-Q,upper=Q,x=x[2],y=x[1],rel.tol=1e-14)$value
  })))
}

library(lme4)
(model <- glmer(cbind(y,N-y)~x+(1|id),family=binomial))

opt0 <- optim(c(fixef(model), sqrt(VarCorr(model)$id[1])), negloglik, 
                x=x, y=y, N=N, control=list(reltol=1e-50,maxit=10000)) 
opt1 <- negloglik(c(fixef(model), sqrt(VarCorr(model)$id[1])), x=x, y=y, N=N)
opt0$value  # negative loglikelihood from optim
opt1        # negative loglikelihood using glmer generated parameters
-logLik(model)==opt1 # but these are substantially different...

একটি সহজ উদাহরণ

বড় সংখ্যাগত ত্রুটি হওয়ার সম্ভাবনা কমাতে আমি একটি সহজ উদাহরণ তৈরি করেছি।

y  <- c(0, 3)
N  <- c(8, 8)
id <- 1:length(y)

negloglik <- function(p, y, N){
  a <- p[1]
  s <- p[2]
  Q <- 100  # Inf does not work well
  L_i <- function(r,y){
    dbinom(y, size=N, prob=exp(a+r)/(1+exp(a+r)))*dnorm(r,0,s)
  }
  -sum(log(sapply(y, function(x){
    integrate(L_i,lower=-Q, upper=Q, y=x, rel.tol=1e-14)$value
  })))
}

library(lme4)
(model <- glmer(cbind(y,N-y)~1+(1|id), family=binomial))
MLE.glmer <- c(fixef(model), sqrt(VarCorr(model)$id[1]))
opt0 <- optim(MLE.glmer, negloglik, y=y, N=N, control=list(reltol=1e-50,maxit=10000)) 
MLE.optim <- opt0$par
MLE.glmer # MLEs from glmer
MLE.optim # MLEs from optim

L_i <- function(r,y,N,a,s) dbinom(y,size=N,prob=exp(a+r)/(1+exp(a+r)))*dnorm(r,0,s)

L1 <- integrate(L_i,lower=-100, upper=100, y=y[1], N=N[1], a=MLE.glmer[1], 
                s=MLE.glmer[2], rel.tol=1e-10)$value
L2 <- integrate(L_i, lower=-100, upper=100, y=y[2], N=N[2], a=MLE.glmer[1], 
                s=MLE.glmer[2], rel.tol=1e-10)$value

(log(L1)+log(L2)) # loglikelihood (manual computation)
logLik(model)     # loglikelihood from glmer 

এমএলইগুলি (লগ-সম্ভাবনা নিজেরাই নয়) কি তুলনাযোগ্য? অর্থাৎ, আপনি কি কেবল ধ্রুবক দ্বারা বন্ধ?
বেন বলকার

অনুমিত এমএলইগুলি স্পষ্টতই আলাদা ( MLE.glmerএবং MLE.optim) এলোমেলো প্রভাবের জন্য (নতুন উদাহরণটি দেখুন), সুতরাং এটি কেবল সম্ভাবনার মানগুলির কিছু ধ্রুবক ফ্যাক্টরের উপর ভিত্তি করে নয়, আমি মনে করি।
quibble

4
একটি উচ্চ মান নির্ধারণ @Ben nAGQমধ্যে glmerMLEs তুলনীয় প্রণীত। ডিফল্ট নির্ভুলতা glmerখুব ভাল ছিল না।
quibble

5
অনুরূপ lme4 প্রশ্নের সাথে লিঙ্ক করা যে @ স্টিভ ওয়াকার আমাকে এই সম্পর্কে সাহায্য করেছিল: stats.stackexchange.com/questions/77313/…
বেন ওগোরেক ২১

3
একটি পুরানো প্রশ্ন হিসাবে ডাব্লু / প্রচুর পরিমাণে উদ্দীপনা, সম্ভবত এটি দাদু হতে পারে। এটি বন্ধ হওয়ার প্রয়োজন দেখছি না।
গুং - মনিকা পুনরায়

উত্তর:


3

একটি উচ্চ মান নির্ধারণ nAGQমধ্যে glmerকল দুটি পদ্ধতি সমতুল্য থেকে MLEs প্রণীত। ডিফল্ট নির্ভুলতা glmerখুব ভাল ছিল না। এটি বিষয়টি নিষ্পত্তি করে।

glmer(cbind(y,N-y)~1+(1|id),family=binomial,nAGQ=20)

এখানে @ স্টিভওয়ালকারের উত্তর দেখুন কেন আমি গৌস-নিউটন অ্যালগরিদমের ম্যানুয়াল প্রয়োগের সাথে গ্লোমার (পারিবারিক = দ্বিপদী) আউটপুটটির সাথে মিল করতে পারি না? আরো বিস্তারিত জানার জন্য.


1
তবে আনুমানিক লগলিঙ্কিলিটিগুলি খুব আলাদা (সম্ভবত কিছু ধ্রুবক দ্বারা), তাই বিভিন্ন পদ্ধতি মিশ্রিত করা উচিত নয়।
quibble

হুঁ, আকর্ষণীয় / অবাক - এই উদাহরণ স্থাপনের জন্য ধন্যবাদ, আমি এটি সন্ধানের জন্য সময় বের করার চেষ্টা করব।
বেন বলকার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.