r - 使用tab_df()导出AIC表时如何避免添加“ModelLik”列
问题描述
以两个 LMM 为例。
lme1 <- lme(mpg ~ cyl + disp,
random = ~1|disp,
method = "ML",
data = mtcars)
lme2 <- lme(mpg ~ cyl * disp,
random = ~1|disp,
method = "ML",
data = mtcars)
AIC 表选择最佳模型。
library(AICcmodavg)
Cand.models <- list( )
Cand.models[[1]] <- lme1
Cand.models[[2]] <- lme2
aictab(Cand.models, sort = TRUE)
Model selection based on AICc:
K AICc Delta_AICc AICcWt Cum.Wt LL
Mod2 6 164.40 0.00 0.94 0.94 -74.52
Mod1 5 169.87 5.46 0.06 1.00 -78.78
要导出 AIC 表,我喜欢使用 tab_df() 函数。
library(sjPlot)
tab_df(aictab(Cand.models, sort = TRUE))
解决方案
原因是返回的对象aictab
有更多的列,然后用它的 print 方法打印。在下文中,我将返回的表分配给一个变量tb
并使用str()
. 如果你使用 RStudio,你也可以在 Environment explorer 中看到它。
函数tab_df
只是格式化数据框,因此我们可以根据需要选择、删除甚至重命名列。下面显示一个示例。作为一个小礼物,我为模型定义了用户定义的名称:
library("nlme")
library("AICcmodavg")
library("sjPlot")
lme1 <- lme(mpg ~ cyl + disp, random = ~1|disp, method = "ML", data = mtcars)
lme2 <- lme(mpg ~ cyl * disp, random = ~1|disp, method = "ML", data = mtcars)
# alternative way to produce the list, can optionally provide speaking names
Cand.models <- list(
'model 1' = lme1,
'model 2' = lme2
)
# assign the table to a variable
tb <- aictab(Cand.models, sort = TRUE)
## look what is in
str(tb)
which_columns <- c("Modnames", "K", "AICc", "Delta_AICc", "AICcWt", "Cum.Wt", "LL")
tab_df(aictab(Cand.models, sort = TRUE)[which_columns])
推荐阅读
- python - 如何用空字符串替换列表中的所有 False 值?
- docker - Docker 统计数据与运行时内存统计数据
- sql - 在一列上选择不同的并返回所有其他列
- javascript - 如何在 JavaScript 中解析具有重复值的大型 JSON 文件?
- jquery - jQuery 数据仅在某些堆栈帧中可见
- angular - 除非使用“deps”属性定义了依赖提供者,否则提供者无法工作
- algorithm - 子集和问题,通过初始排序打破平局
- javascript - 删除数组中的多个位置
- c# - C#:可以在可以出现类型名称的地方使用构造类型?
- react-native - SQLite 数据库在每次应用重启时初始化