【问题标题】:How to Create AIC Model Selection Table in R in LaTex format?如何以 LaTex 格式在 R 中创建 AIC 模型选择表?
【发布时间】:2015-01-26 16:13:14
【问题描述】:

希望为 LaTex 格式的出版物创建 AIC 选择表,但我似乎无法获得所需的表格。我已经用谷歌搜索了这个,很惊讶我找不到答案。我在 R 中找到了更多晦涩问题的答案。

下面是一些代码,一些我不太喜欢的表格,底部是我想要制作的一般结构,但是像 stargazer 包一样采用了很好的乳胶表格格式.

我尝试为这两个包使用额外的参数来实现我想要的,但没有成功。

##Create dummy variables
a<-1:10
b<-c(10:3,1,2)
c<-c(1,4,5,3,7,3,6,2,4,5)

##Create df
df<-data.frame(a,b,c)

##Build models
m1<-lm(a~b,data=df)
summary(m1)
m2<-lm(a~c,data=df)
m3<-lm(a~b+c,data=df)
m4<-lm(a~b*c,data=df)

##View list of AIC values
AIC(m1,m2,m3,m4)

########################CREATE AIC SELECTION TABLE
##Using MuMIn Package
library(MuMIn)
modelTABLE <- model.sel(m1,m2,m3,m4)
View(modelTABLE)  ##No AIC values, just AICc, no R-squared, and model name (i.e, a~b) not present

##Using stargazer Package
library(stargazer)
test<-stargazer(m1,m2,m3,m4 ,
                type = "text", 
                title="Regression Results", 
                align=TRUE,
                style="default",
                dep.var.labels.include=TRUE,
                flip=FALSE
                ## ,out="models.htm"
)

View(test)  ##More of a table depicting individual covariate attributes, bottom of table doesn't have AIC


###Would like a table similar to the following
Model  ModelName  df    logLik      AIC    delta   AICweight    R2
m1     a ~ b      3    -6.111801    18.2    0      0.95         0.976
m3     a ~ b + c  4    -5.993613    20      1.8    0.05         0.976
m4     a ~ b * c  5    -5.784843    21.6    3.4    0.00         0.977
m2     a ~ c      3    -24.386821   54.8    36.6   0.00         0.068
 `

【问题讨论】:

  • 编辑表输出更易于阅读。求人帮忙!!

标签: r model latex lm


【解决方案1】:

model.sel 结果是data.frame,因此您可以修改它(添加型号名称、整数等)并使用例如导出到乳胶。 latex 来自 Hmisc 包。

# include R^2: 
R2 <- function(x) summary(x)$r.squared
ms <- model.sel(m1, m2, m3, m4, extra = "R2")

i <- 1:4 # indices of columns with model terms
response <- "a"

res <- as.data.frame(ms)
v <- names(ms)[i]
v[v == "(Intercept)"] <- 1

# create formula-like model names:
mnames <- apply(res[, i], 1, function(x) 
     deparse(simplify.formula(reformulate(v[!is.na(x)], response = response))))
## OR
#   mnames <- apply(res[, i], 1, function(x)
#          sapply(attr(ms, "modelList"), function(x) deparse(formula(x)))

res <- cbind(model = mnames, res[, -i])
Hmisc::latex(res, file = "")

【讨论】:

  • 谢谢卡米尔!第二行 ms
  • 是的,这是当前版本中的一个错误。从 R-forge 更新包:install.packages("MuMIn", repos="http://R-Forge.R-project.org")
  • 谢谢卡米尔,我明白了。最后一个问题 - 有没有办法输出完整的公式,即不是简化模型(例如 d+e+de,不是 de),,,我试图删除简化.formula 参数,但没有奏效。我知道这就是这个 fn 正在做的事情
  • 您应该再次检查您的代码。 deparse(reformulate(...)) 确实会生成扩展公式。 reformulate 组合列名 c("1", "b", "c", "b:c"),因此生成的公式中的交互没有简写形式 (b*c)。
猜你喜欢
  • 1970-01-01
  • 2012-11-04
  • 1970-01-01
  • 2017-06-22
  • 2018-05-07
  • 1970-01-01
  • 2010-10-11
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多