Rfa*_*fan 21 r lme4 marginal-effects
我正在使用估计随机效应logit模型glmer,我想报告自变量的边际效应.对于glm模型,包mfx有助于计算边际效应.glmer对象有任何包或函数吗?
谢谢你的帮助.
下面给出了可重现的例子
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)
summary(cfelr)
Run Code Online (Sandbox Code Playgroud)
这是使用该包的方法margins():
library(margins)
library(lme4)
gm1 <- glmer(cbind(incidence, size - incidence) ~ period +
(1 | herd),
data = cbpp,
family = binomial)
m <- margins(gm1, data = cbpp)
m
Run Code Online (Sandbox Code Playgroud)
我的解决方案没有回答问题,
\n\nglmer”,反而,
\n\n我只提供这篇文章,因为提供的可重现示例是具有一个随机截距的条件逻辑回归,我打算提供帮助。请不要投反对票;如果这个答案被认为太偏离主题,我会删除。
\n\nR 代码基于 Patrick Heagerty 的工作(点击“View Raw”查看 pdf),下面我在他的 lnMLE 包的 github 版本中包含了一个可重现的示例(请原谅安装时的警告 - 我\'硬塞帕特里克的非 CRAN 包)。我省略了除最后一行 之外的所有输出,compare该行并排显示了固定效应系数。
library(devtools)\ninstall_github("lnMLE_1.0-2", "swihart")\nlibrary(lnMLE)\n## run the example from the logit.normal.mle help page\n## see also the accompanying document (click \'View Raw\' on page below:)\n## https://github.com/swihart/lnMLE_1.0-2/blob/master/inst/doc/lnMLEhelp.pdf\ndata(eye_race)\nattach(eye_race)\nmarg_model <- logit.normal.mle(meanmodel = value ~ black,\n logSigma= ~1,\n id=eye_race$id,\n model="marginal",\n data=eye_race,\n tol=1e-5,\n maxits=100,\n r=50)\nmarg_model\ncond_model <- logit.normal.mle(meanmodel = value ~ black,\n logSigma= ~1,\n id=eye_race$id,\n model="conditional",\n data=eye_race,\n tol=1e-5,\n maxits=100,\n r=50)\ncond_model\ncompare<-round(cbind(marg_model$beta, cond_model$beta),2)\ncolnames(compare)<-c("Marginal", "Conditional")\ncompare\nRun Code Online (Sandbox Code Playgroud)\n\n最后一行的输出:
\n\n\n\n\n比较
\n
Marginal Conditional\n\n(Intercept) -2.43 -4.94\n\nblack 0.08 0.15\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试了给出的可重现示例,但在 glmer 和 lnMLE 实现上都遇到了问题;再次,我只包含与比较结果和调用警告相关的输出glmer():
##original question / answer... glmer() function gave a warning and the lnMLE did not fit well...\nmydata <- read.csv("http://www.ats.ucla.edu/stat/data/binary.csv")\nmydata$rank <- factor(mydata$rank) #creating ranks\nid <- rep(1:ceiling(nrow(mydata)/2), times=c(2)) #creating ID variable\nmydata <- cbind(mydata,data.frame(id,stringsAsFactors=FALSE))\nset.seed(12345)\nmydata$ran <- runif(nrow(mydata),0,1) #creating a random variable\n\nlibrary(lme4)\ncfelr <- glmer(admit ~ (1 | id) + rank + gpa + ran + gre, \n data=mydata,\n family = binomial)\nRun Code Online (Sandbox Code Playgroud)\n\n这给出了:
\n\nWarning messages:\n1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :\n Model failed to converge with max|grad| = 0.00161047 (tol = 0.001, component 2)\n2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, :\n Model is nearly unidentifiable: very large eigenvalue\n - Rescale variables?;Model is nearly unidentifiable: large eigenvalue ratio\n - Rescale variables?\nRun Code Online (Sandbox Code Playgroud)\n\n但我愚蠢地继续没有重新调整,试图将其应用于logit.normal.mle给定的示例。但是,条件模型不会收敛或产生标准误差估计,
summary(cfelr)\nlibrary(devtools)\ninstall_github("lnMLE_1.0-2", "swihart")\nlibrary(lnMLE)\n\nmydata$rank2 = mydata$rank==2\nmydata$rank3 = mydata$rank==3\nmydata$rank4 = mydata$rank==4\n\ncfelr_cond = logit.normal.mle(meanmodel = admit ~ rank2+rank3+rank4+gpa+ran+gre, \n logSigma = ~1 , \n id=id, \n model="conditional", \n data=mydata, \n r=50, \n tol=1e-6, \n maxits=500)\ncfelr_cond\n\n\ncfelr_marg = logit.normal.mle(meanmodel = admit ~ rank2+rank3+rank4+gpa+ran+gre,\n logSigma = ~1 , \n id=id, \n model="marginal", \n data=mydata, \n r=50, \n tol=1e-6, \n maxits=500)\ncfelr_marg\n\n\ncompare_glmer<-round(cbind(cfelr_marg$beta, cfelr_cond$beta,summary(cfelr)$coeff[,"Estimate"]),3)\ncolnames(compare_glmer)<-c("Marginal", "Conditional","glmer() Conditional")\ncompare_glmer\nRun Code Online (Sandbox Code Playgroud)\n\n其中的最后一行表明,条件模型cfelr_cond没有评估条件模型,而只是返回边际系数,没有标准误差。
> compare_glmer\n\n Marginal Conditional glmer() Conditional\n\n(Intercept) -4.407 -4.407 -4.425\n\nrank2 -0.667 -0.667 -0.680\n\nrank3 -1.832 -1.833 -1.418\n\nrank4 -1.930 -1.930 -1.585\n\ngpa 0.547 0.548 0.869\n\nran 0.860 0.860 0.413\n\ngre 0.004 0.004 0.002\nRun Code Online (Sandbox Code Playgroud)\n\n我希望能够解决这些问题。任何帮助/评论表示赞赏。我会尽可能提供状态更新。
\n