আমি খেলনার দ্বিপদী উদাহরণের সাথে লেমার (সত্যিকারের গ্লোমার) এর ফলাফলগুলি মেলাতে চাই। আমি ভিগনেটস পড়েছি এবং বিশ্বাস করি আমি বুঝতে পারছি কি হচ্ছে।
তবে দৃশ্যত আমি তা করি না। আটকে যাওয়ার পরে, আমি এলোমেলো প্রভাবগুলির ক্ষেত্রে "সত্য" স্থির করেছিলাম এবং একা স্থির প্রভাবগুলির অনুমানের পরে চলেছি। আমি নীচে এই কোডটি অন্তর্ভুক্ত করছি। + 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")
}