2

您好如何为每个模型的 AIC 与完整模型的 AIC 的差异创建直方图。?

#AIC of the full model
Y <- modelTT$aic
#AICs for each of the n models.
X <- lapply(listOfModels,function(xx) xx$aic)

所以基本上我想先做 X - Y。然后我需要创建从最大到最小的每个差值的直方图。

4

2 回答 2

2

另一种选择使用broom()

df =  data.frame(a =  sample(1:10, replace = TRUE, 24), 
                 b = sample(25:40, replace = TRUE, 24),
                 c = sample(0:1, replace = TRUE, 24))

model1 = lm(a ~ b + c, df)
model2 = lm(b ~ c, df ) 
model3 = lm(a ~  c, df)

library(broom)
library(ggplot2)
library(dplyr)

mod1 = glance(model1) %>% mutate(model = "m1")
mod2 = glance(model2) %>% mutate(model = "m2")
mod3 = glance(model3) %>% mutate(model = "m3")

models = bind_rows(mod1, mod2, mod3)


models %>% ggplot(aes(model,AIC)) + geom_bar(stat = "identity")

给出以下

在此处输入图像描述

于 2018-02-09T08:24:35.413 回答
0

一个通用的data.frame

db<-data.frame(y=c(1,2,3,4,5,6,7,8,9),x1=c(9,8,7,6,5,4,3,2,1),x2=c(9,9,7,7,5,5,3,3,1))

lm模型列表

LM_modesl<-NULL
LM_modesl[[1]]<-lm(y ~ x1+x2 , data = db)
LM_modesl[[2]] <- lm(y ~ x1 , data = db)
LM_modesl[[3]] <- lm(y ~ x2 , data = db)

AIC 计算

AIC<-lapply(LM_modesl,AIC)

递减图

plot(sort(unlist(AIC),decreasing = T),type="h")
于 2018-02-09T08:16:12.597 回答