如何使用方差分析函数将多个模型保存在一个列表中?
how to use the function ANOVA to multiple models saved in a list?
我有一个包含多个线性回归模型的列表,如下所示:
> list
[[1]]
Call:
lm(formula = formula, data = data)
Coefficients:
(Intercept) V1
512.91937 -0.04731
[[2]]
Call:
lm(formula = formula, data = data)
Coefficients:
(Intercept) V2
499.34648 -0.01863
[[3]]
Call:
lm(formula = formula, data = data)
Coefficients:
(Intercept) V3
504.0089 -0.0271
函数ANOVA
主要用于选择最佳模型,因此允许n
个模型进行比较。即:
anova(model1,model2,model3,...,modeln)
所以我想做的是类似的事情。当你有三个模型时,没有问题,但我有一个 100 个模型的列表,它们可以更多。所以我需要手动保存这一步。我需要类似
的东西
anova(list[[1]],list[[2]],...,list[[n]])
可能是apply
家族的有用功能,但我不知道。
你可以用 do.call
> l <- replicate(10, lm(rnorm(10) ~ 1), simplify = FALSE)
> do.call(anova, l)
Analysis of Variance Table
Model 1: rnorm(10) ~ 1
Model 2: rnorm(10) ~ 1
Model 3: rnorm(10) ~ 1
Model 4: rnorm(10) ~ 1
Model 5: rnorm(10) ~ 1
Model 6: rnorm(10) ~ 1
Model 7: rnorm(10) ~ 1
Model 8: rnorm(10) ~ 1
Model 9: rnorm(10) ~ 1
Model 10: rnorm(10) ~ 1
Res.Df RSS Df Sum of Sq F Pr(>F)
1 9 12.8275
2 9 5.6966 0 7.1309
3 9 11.3766 0 -5.6801
4 9 12.2143 0 -0.8376
5 9 6.1445 0 6.0697
6 9 14.0516 0 -7.9071
7 9 6.5769 0 7.4748
8 9 8.5335 0 -1.9566
9 9 4.4292 0 4.1042
10 9 9.0037 0 -4.5745
不过,您确定要对似乎没有嵌套的模型执行此操作吗?此外,您应该避免定义与 base
函数重合的对象,例如 list
.
我有一个包含多个线性回归模型的列表,如下所示:
> list
[[1]]
Call:
lm(formula = formula, data = data)
Coefficients:
(Intercept) V1
512.91937 -0.04731
[[2]]
Call:
lm(formula = formula, data = data)
Coefficients:
(Intercept) V2
499.34648 -0.01863
[[3]]
Call:
lm(formula = formula, data = data)
Coefficients:
(Intercept) V3
504.0089 -0.0271
函数ANOVA
主要用于选择最佳模型,因此允许n
个模型进行比较。即:
anova(model1,model2,model3,...,modeln)
所以我想做的是类似的事情。当你有三个模型时,没有问题,但我有一个 100 个模型的列表,它们可以更多。所以我需要手动保存这一步。我需要类似
的东西anova(list[[1]],list[[2]],...,list[[n]])
可能是apply
家族的有用功能,但我不知道。
你可以用 do.call
> l <- replicate(10, lm(rnorm(10) ~ 1), simplify = FALSE)
> do.call(anova, l)
Analysis of Variance Table
Model 1: rnorm(10) ~ 1
Model 2: rnorm(10) ~ 1
Model 3: rnorm(10) ~ 1
Model 4: rnorm(10) ~ 1
Model 5: rnorm(10) ~ 1
Model 6: rnorm(10) ~ 1
Model 7: rnorm(10) ~ 1
Model 8: rnorm(10) ~ 1
Model 9: rnorm(10) ~ 1
Model 10: rnorm(10) ~ 1
Res.Df RSS Df Sum of Sq F Pr(>F)
1 9 12.8275
2 9 5.6966 0 7.1309
3 9 11.3766 0 -5.6801
4 9 12.2143 0 -0.8376
5 9 6.1445 0 6.0697
6 9 14.0516 0 -7.9071
7 9 6.5769 0 7.4748
8 9 8.5335 0 -1.9566
9 9 4.4292 0 4.1042
10 9 9.0037 0 -4.5745
不过,您确定要对似乎没有嵌套的模型执行此操作吗?此外,您应该避免定义与 base
函数重合的对象,例如 list
.