从lme、lmer、glmer到乳胶的提取回归结果如何?
我正在用lme、lmer和glmer为模型装配。我需要用summary()对象构造表,并导出到Latex以显示结果。xtable、mtable和aprtable不工作。我在之前的一篇文章(下面的链接)中看到了lme4对象的解决方案,但没有看到这些对象的解决方案 以下是我正在安装的两个模型示例:从lme、lmer、glmer到乳胶的提取回归结果如何?,r,latex,R,Latex,我正在用lme、lmer和glmer为模型装配。我需要用summary()对象构造表,并导出到Latex以显示结果。xtable、mtable和aprtable不工作。我在之前的一篇文章(下面的链接)中看到了lme4对象的解决方案,但没有看到这些对象的解决方案 以下是我正在安装的两个模型示例: lme(y ~ time, data, na.action=na.omit, method="REML", random = ~ 1 | subject, control=lmeControl(msM
lme(y ~ time, data, na.action=na.omit, method="REML", random = ~ 1 | subject, control=lmeControl(msMaxIter = 200, msVerbose = TRUE))
glmer(y ~ time + (time | subject), data, family=binomial(link = "logit"), REML=T, control=list(maxIter = 800, maxFN=1000, msVerbose = TRUE))
有什么帮助吗
感谢lme的
lme
,我的个人版本如下;您可以将其与其他类似的插件一起下载,例如,从中提取lme/lm/glm表的p值的\Sexpr{}
字符串作为Dmisc
这是非常个性化的,但是如果我非常喜欢舍入到真正的有效数字。对不起,包nlme做了所有我需要的(并且比lme/gaussian更多),所以还没有lme4版本
"latex.summary.lme" <-
function(object, title="",parameter=NULL, file="",
shadep=0.05,caption=NULL,label=NULL,ctable=FALSE,form=NULL,
interceptp = FALSE, moredec=0, where="!htbp", ...) {
# This function can be mis-used for gls models when an explicit
# form is given
options(Hverbose=FALSE)
require('Hmisc')
require('nlme')
dd <- object$dims
method <- object$method
fixF <- object$call$fixed
xtTab <- as.data.frame(object$tTable)
sigp <- xtTab[,"p-value"]< shadep # cells that will be shaded
if (!interceptp){
sigp[1] <- FALSE # intercept will never be shaded
# Replace small significances, discarding p-value for (Intercept)
xtTab[1,"p-value"] = 1 # we do not show it anyway, easier formatting
}
pval <- format(zapsmall(xtTab[, "p-value"],4))
pval[as.double(pval) < 0.0001] <- "$< .0001$"
xtTab[, "p-value"] <- pval
xtTab[,"t-value"] <- round(xtTab[,"t-value"],1)
if (ncol(xtTab) == 5) # not for gls
xtTab[,"DF"] <- as.integer(xtTab[,"DF"])
# extract formula
if (is.null(form)) {
if (!is.null(object$terms)) {
form=object$terms
} else {
form = formula(object)
}
}
if (is.null(parameter)) {
parameter=as.character(form[[2]])
}
if (any(wchLv <- (as.double(levels(xtTab[, "p-value"])) == 0))) {
levels(xtTab[, "p-value"])[wchLv] <- "<.0001"
}
if (is.null(label))
label <- lmeLabel("contr",form)
form <- deparse(removeFormFunc(as.formula(form)),width.cutoff=500)
form <- paste(sub('~','$\\\\sim$ ',form),sep="")
# All I( in factors are replaced with (This could be improved)
row.names(xtTab) <-
gsub("I\\(","(",dimnames(object$tTable)[[1]])
row.names(xtTab) <- gsub("\\^2","\\texttwosuperior",row.names(xtTab))
# Determine base level
levs <- lapply(object$contrasts,function(object) {dimnames(object)[[1]][1]})
levnames <- paste(names(levs),levs,sep=" = ",collapse=", ")
# Try to locate numeric covariables
# v1 <- all.vars(formula(object))[-1]
## Changed 8.10.2008, not regression-tested
v1 <- all.vars(form)[-1]
numnames <- v1[is.na(match(v1,names(levs)))]
if (length(numnames > 0)) {
numnames <- paste(numnames," = 0",collapse=", ")
levnames <- paste(levnames,numnames,sep=", ")
}
if (is.null(caption)){ # TODO: Allow %s substitution
if (inherits(object,"lme"))
md = "Mixed model (lme)" else
if (inherits(object,"gls"))
md = "Extended linear model (gls)" else
md = "Linear model"
caption <- paste(md," contrast table for \\emph{",
parameter, "} (model ",form,
"). The value in row (Intercept) gives the reference value for ",
levnames,".",sep='')
}
caption.lot <- paste("Contrast table for ",parameter, " by ",
levnames)
ndec <- pmax(round(1-log10(xtTab[,2]+0.000001)+moredec),0)
xtTab[,1] <- formatC(round(xtTab[,1],ndec))
xtTab[,2] <- formatC(round(xtTab[,2],ndec))
if (ncol(xtTab) == 5) {
names(xtTab) <- c("Value","StdErr","DF","t","p")
pcol = 5
} else {# gls misuse
names(xtTab) <- c("Value","StdErr","t","p")
pcol = 4
}
# Only show intercept p/t when explicitely required
if (!interceptp){
xtTab[1,pcol-1] <- NA
xtTab[1,pcol] <- ''
}
cellTex <- matrix(rep("", NROW(xtTab) * NCOL(xtTab)), nrow=NROW(xtTab))
cellTex[sigp,pcol] <- "cellcolor[gray]{0.9}"
rowlabel <- ifelse(nchar(parameter) >9,"",parameter)
latex(xtTab, title=title, file=file, caption=caption,caption.lot=caption.lot,
caption.loc="bottom", label=label, cellTexCmds = cellTex,
rowlabel=rowlabel, ctable=ctable, where=where,
booktabs = !ctable, numeric.dollar=FALSE,col.just=rep("r",5),...)
}
"latex.lme" <-
function(object, title="",parameter=NULL,file="",shadep=0.05,
caption=NULL,label=NULL,ctable=FALSE,form=NULL,
interceptp=FALSE, moredec= 0, where="!htbp",...) {
options(Hverbose=FALSE)
require('Hmisc')
require('nlme')
latex.summary.lme(summary(object),title=title,parameter=parameter,
file=file, shadep=shadep, caption=caption,
label=label, ctable=ctable, form=form, moredec=moredec, where=where,...)
}
“latex.summary.lme”编辑:
编辑时,lme4包已更新,memisc不再使用这些对象。包texreg是另一种选择。我留下了这个答案,以防memisc更新后重新开始工作
该软件包包含4个表:
以下是我编写的一些代码的片段:
GPusenonMH=lmer(GPEtc_c~Age.y+Measure+Gender+Marital2+Work2+(1|NHS), family="poisson", data=subset(lemurdata, Measure %in% c(1,3)))
model1=mtable(GPusetotal, GPuseMH, GPusenonMH, summary.stats=FALSE)
toLatex(model1)
显然,如果您想要任何这些东西,您可以将summary.stats=TRUE
请注意,默认情况下都会使用dcolumn和booktabs Latex软件包,因此可以将它们放在Latex前言中,或者使用帮助文件中的命令(useBooktabs=FALSE,useDcolumn=FALSE)将其关闭。以下是我的解决方案:假设fit
是lme模型的结果,例如fit fit\u text属性(fit\u text)
您将看到类似于结构的结果。然后,您可以将摘要报告的某些组件保存到txt文件或Rdata文件中。我刚刚发现,对于summary.mer
对象存在一个coef
方法,该方法提供了所有必要的数据(用于固定效果)。返回的对象(强制转换为data.frame
)可以很容易地移交给所选的格式包(例如xtable
或ascii
)。
请参见以下示例(仅生成可用的data.frame
):
require(lme4)
谢谢你,迪特!这真的很有帮助。我在使用你的函数时出错了。你能帮我吗?错误是“error in[.data.frame
(xtTab,“p-value”):未定义的列被选中“这可能是语言问题吗?当您创建摘要时,请检查您的区域设置中是否存在列“p-value”(lme(..))(谢谢!mtable
与我的GLMERs配合使用效果很好。帮助页面(?mtable
)对于展示如何以比您在R中可能选择使用的更正式的术语重新标记变量和模型,它也非常有用
> fit_text <- unclass(fit)
> attributes(fit_text)
require(lme4)
gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
family = binomial, data = cbpp)
(res.table <- as.data.frame(coef(summary(gm1))))
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.3985 0.2279 -6.137 0.0000000008416
## period2 -0.9923 0.3054 -3.249 0.0011562741408
## period3 -1.1287 0.3260 -3.462 0.0005368285553
## period4 -1.5804 0.4288 -3.686 0.0002282168737