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


15

আমি খেলনার দ্বিপদী উদাহরণের সাথে লেমার (সত্যিকারের গ্লোমার) এর ফলাফলগুলি মেলাতে চাই। আমি ভিগনেটস পড়েছি এবং বিশ্বাস করি আমি বুঝতে পারছি কি হচ্ছে।

তবে দৃশ্যত আমি তা করি না। আটকে যাওয়ার পরে, আমি এলোমেলো প্রভাবগুলির ক্ষেত্রে "সত্য" স্থির করেছিলাম এবং একা স্থির প্রভাবগুলির অনুমানের পরে চলেছি। আমি নীচে এই কোডটি অন্তর্ভুক্ত করছি। + Z %*% b.kএটি বৈধতা দেখার জন্য, আপনি মন্তব্য করতে পারেন এবং এটি নিয়মিত গ্ল্যামের ফলাফলের সাথে মেলে। আমি যখন এলোমেলো প্রভাব অন্তর্ভুক্ত করা হয় তখন কেন আমি লেমার আউটপুটটির সাথে মেলে ধরতে পারছি না তা নির্ধারণ করার জন্য কিছু মস্তিষ্কের শক্তি ধার করার আশা করছি।

# Setup - hard coding simple data set 
df <- data.frame(x1 = rep(c(1:5), 3), subject = sort(rep(c(1:3), 5)))
df$subject <- factor(df$subject)

# True coefficient values  
beta <- matrix(c(-3.3, 1), ncol = 1) # Intercept and slope, respectively 
u <- matrix(c(-.5, .6, .9), ncol = 1) # random effects for the 3 subjects 

# Design matrices Z (random effects) and X (fixed effects)
Z <- model.matrix(~ 0 + factor(subject), data = df)
X <- model.matrix(~ 1 + x1, data = df)

# Response  
df$y <- c(1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1)
    y <- df$y

### Goal: match estimates from the following lmer output! 
library(lme4)
my.lmer <- lmer( y ~ x1 + (1 | subject), data = df, family = binomial)
summary(my.lmer)
ranef(my.lmer)

### Matching effort STARTS HERE 

beta.k <- matrix(c(-3, 1.5), ncol = 1) # Initial values (close to truth)
b.k <- matrix(c(1.82478, -1.53618, -.5139356), ncol = 1) # lmer's random effects

# Iterative Gauss-Newton algorithm
for (iter in 1:6) {
  lin.pred <- as.numeric(X %*% beta.k +  Z %*% b.k)
  mu.k <- plogis(lin.pred)
  variances <- mu.k * (1 - mu.k)
  W.k <- diag(1/variances)

  y.star <- W.k^(.5) %*% (y - mu.k)
  X.star <- W.k^(.5) %*% (variances * X)
  delta.k <- solve(t(X.star) %*% X.star) %*% t(X.star) %*% y.star

  # Gauss-Newton Update 
  beta.k <- beta.k + delta.k
  cat(iter, "Fixed Effects: ", beta.k, "\n")
}

উত্তর:


28

আপনি যদি আপনার মডেল ফিটিং কমান্ডটি নিম্নলিখিতটিতে পরিবর্তন করেন তবে আপনার মিলন পদ্ধতির কাজ করে:

my.lmer <- glmer(y ~ x1 + (1 | subject), data = df, family = binomial, nAGQ = 0)

মূল পরিবর্তনটি হ'ল nAGQ = 0, যা আপনার পদ্ধতির সাথে মেলে, যেখানে ডিফল্ট ( nAGQ = 1) হয় না। nAGQমানে 'অভিযোজিত গাউস-হার্মাইট কোয়াড্রিটিজ পয়েন্টের সংখ্যা' এবং glmerমিশ্রিত মডেলটি ফিট করার সময় কীভাবে এলোমেলো প্রভাবগুলি সংহত করতে হবে তা সেট করে । যখন nAGQ1 এর চেয়ে বেশি হয়, তখন অভিযোজিত চতুর্ভুজটি nAGQপয়েন্ট সহ ব্যবহৃত হয় । কখন nAGQ = 1, ল্যাপ্লেস আনুমানিকতা ব্যবহৃত হয় এবং কখন nAGQ = 0, অবিচ্ছেদ্য 'উপেক্ষা করা হয়'। খুব সুনির্দিষ্ট না হয়ে (এবং তাই সম্ভবত খুব প্রযুক্তিগত),nAGQ = 0 অর্থ, এলোমেলো প্রভাবগুলি কেবলমাত্র তাদের আনুমানিক শর্তাধীন মোডের মাধ্যমে স্থির প্রভাবগুলির অনুমানকে প্রভাবিত করে - তাই,nAGQ = 0এলোমেলো প্রভাবগুলির এলোমেলোভাবে সম্পূর্ণরূপে অ্যাকাউন্ট করে না। এলোমেলো প্রভাবগুলির সম্পূর্ণরূপে অ্যাকাউন্ট করতে, তাদের একীভূত করা দরকার। যাইহোক, আপনি এই পার্থক্যটি আবিষ্কার করেছেন nAGQ = 0এবং nAGQ = 1প্রায়শই মোটামুটি ছোট হতে পারে।

আপনার মিলে যাওয়া পদ্ধতির সাথে কাজ করবে না nAGQ > 0। কারণ এই ক্ষেত্রে অপ্টিমাইজেশনের জন্য তিনটি পদক্ষেপ রয়েছে: (1) দণ্ডিত পুনরাবৃত্তভাবে কমপক্ষে স্কোয়ারগুলি (পিআইআরএলএস) এলোমেলো প্রভাবগুলির শর্তসাপেক্ষ মোডগুলি অনুমান করার জন্য, (২) (প্রায়) তাদের শর্তাধীন মোডগুলি সম্পর্কে এলোমেলো প্রভাবগুলি একীভূত করে , এবং (3) অবজেক্টিয়াল ফাংশনের অ লাইন অপ্টিমাইজেশন (অর্থাত্ সংহতির ফলাফল)। এই পদক্ষেপগুলি অভিব্যক্তি না হওয়া পর্যন্ত তাদের পুনরাবৃত্তি করা হয়। আপনি কেবল একটি পুনরাবৃত্তির সাথে পুনর্বিবেষ্টিত ন্যূনতম স্কোয়ারগুলি (আইআরএলএস) চালাচ্ছেন যা ধরে নেওয়া bহয় যে এটি Z%*%bঅফসেট শব্দ হিসাবে পরিচিত এবং স্থাপন করা হয়েছে। আপনার দৃষ্টিভঙ্গি পিআরএলএস এর সমতুল্য রূপান্তরিত হয়, তবে এই সমতাটি কেবলমাত্র তাই ধারণ করে কারণ আপনি glmerআনুমানিক শর্তযুক্ত মোড (যা আপনি অন্যথায় জানেন না) পেতে ব্যবহার করেন।

যদি এটির যথাযথ ব্যাখ্যা না করা হয় তবে ক্ষমাপ্রার্থী তবে এটি এমন কোনও বিষয় নয় যা দ্রুত বর্ণনায় নিজেকে ভাল ধার দেয়। আপনি https://github.com/lme4/lme4pureR দরকারী খুঁজে পেতে পারেন যা lme4খাঁটি আর কোডে পদ্ধতির একটি (অসম্পূর্ণ) বাস্তবায়ন । lme4pureRএটি lme4নিজের চেয়ে বেশি পঠনযোগ্য হিসাবে ডিজাইন করা হয়েছে (যদিও এটি ধীরে ধীরে)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.