Спасибо за вашу помощь.
Ответ 3
Мое решение не отвечает на вопрос,
"Есть ли способ получить" маргинальные эффекты "от объекта glmer
",
но,
"Есть ли способ получить маргинальные логистические коэффициенты регрессии из условной логистической регрессии с одним случайным перехватом?"
Я предлагаю эту запись, потому что воспроизводимый пример был условной логистической регрессией с одним случайным перехватом, и я намереваюсь быть полезным. Пожалуйста, не уменьшайте; Я сниму, если этот ответ будет считаться слишком неактивным.
R-код основан на работе Патрика Хигерти (нажмите "Просмотреть сырье" , чтобы увидеть pdf), и я включаю воспроизводимый пример ниже из моей версии github его пакета lnMLE (извините предупреждения при установке - я делаю показ пакета Patrick non-CRAN). Я опускаю вывод для всех, кроме последней строки, compare
, который показывает коэффициенты фиксированного эффекта бок о бок.
library(devtools)
install_github("lnMLE_1.0-2", "swihart")
library(lnMLE)
## run the example from the logit.normal.mle help page
## see also the accompanying document (click 'View Raw' on page below:)
## https://github.com/swihart/lnMLE_1.0-2/blob/master/inst/doc/lnMLEhelp.pdf
data(eye_race)
attach(eye_race)
marg_model <- logit.normal.mle(meanmodel = value ~ black,
logSigma= ~1,
id=eye_race$id,
model="marginal",
data=eye_race,
tol=1e-5,
maxits=100,
r=50)
marg_model
cond_model <- logit.normal.mle(meanmodel = value ~ black,
logSigma= ~1,
id=eye_race$id,
model="conditional",
data=eye_race,
tol=1e-5,
maxits=100,
r=50)
cond_model
compare<-round(cbind(marg_model$beta, cond_model$beta),2)
colnames(compare)<-c("Marginal", "Conditional")
compare
Вывод последней строки:
сравнить
Marginal Conditional
(Intercept) -2.43 -4.94
black 0.08 0.15
Я попытался воспроизвести воспроизводимый пример, но имел проблемы как с реализацией glmer, так и с lnMLE; снова я включаю только вывод, относящийся к результатам сравнения, и предупреждения из вызова glmer()
:
##original question / answer... glmer() function gave a warning and the lnMLE did not fit well...
mydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank) #creating ranks
id <- rep(1:ceiling(nrow(mydata)/2), times=c(2)) #creating ID variable
mydata <- cbind(mydata,data.frame(id,stringsAsFactors=FALSE))
set.seed(12345)
mydata$ran <- runif(nrow(mydata),0,1) #creating a random variable
library(lme4)
cfelr <- glmer(admit ~ (1 | id) + rank + gpa + ran + gre,
data=mydata,
family = binomial)
Что дало:
Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model failed to converge with max|grad| = 0.00161047 (tol = 0.001, component 2)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :
Model is nearly unidentifiable: very large eigenvalue
- Rescale variables?;Model is nearly unidentifiable: large eigenvalue ratio
- Rescale variables?
но я безрассудно продолжал без масштабирования, пытаясь применить logit.normal.mle
к приведенному примеру. Однако условная модель не сходится или не дает стандартных оценок ошибок,
summary(cfelr)
library(devtools)
install_github("lnMLE_1.0-2", "swihart")
library(lnMLE)
mydata$rank2 = mydata$rank==2
mydata$rank3 = mydata$rank==3
mydata$rank4 = mydata$rank==4
cfelr_cond = logit.normal.mle(meanmodel = admit ~ rank2+rank3+rank4+gpa+ran+gre,
logSigma = ~1 ,
id=id,
model="conditional",
data=mydata,
r=50,
tol=1e-6,
maxits=500)
cfelr_cond
cfelr_marg = logit.normal.mle(meanmodel = admit ~ rank2+rank3+rank4+gpa+ran+gre,
logSigma = ~1 ,
id=id,
model="marginal",
data=mydata,
r=50,
tol=1e-6,
maxits=500)
cfelr_marg
compare_glmer<-round(cbind(cfelr_marg$beta, cfelr_cond$beta,summary(cfelr)$coeff[,"Estimate"]),3)
colnames(compare_glmer)<-c("Marginal", "Conditional","glmer() Conditional")
compare_glmer
Последняя строка показывает, что условная модель из cfelr_cond
не оценивала условную модель, а только возвращала предельные коэффициенты и стандартные ошибки.
> compare_glmer
Marginal Conditional glmer() Conditional
(Intercept) -4.407 -4.407 -4.425
rank2 -0.667 -0.667 -0.680
rank3 -1.832 -1.833 -1.418
rank4 -1.930 -1.930 -1.585
gpa 0.547 0.548 0.869
ran 0.860 0.860 0.413
gre 0.004 0.004 0.002
Я надеюсь сгладить эти проблемы. Любая помощь/комментарии оцениваются. Я дам обновления статуса, когда смогу.