如何使用ANOVA函数对列表中保存的多个模型进行分析?

我有一个包含多个线性回归模型的列表,像这样:

> 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 TableModel  1: rnorm(10) ~ 1Model  2: rnorm(10) ~ 1Model  3: rnorm(10) ~ 1Model  4: rnorm(10) ~ 1Model  5: rnorm(10) ~ 1Model  6: rnorm(10) ~ 1Model  7: rnorm(10) ~ 1Model  8: rnorm(10) ~ 1Model  9: rnorm(10) ~ 1Model 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

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注