如何在循环中计算AIC和BIC?

时间:2017-08-31 22:53:02

标签: r loops for-loop

我有10个不同的模型用于同一个数据集,我想比较所有模型的AIC和BIC。

我想过用模型名称创建一个名为models的字符向量:

modelsnames = c("model1", "model2",...,"model10")

然后,我想以下列方式计算这两个统计数据:

for ( i in 1:length(models)){
Akaike[i] = AIC(models[i],k = 2)
BIC[i] = BIC(models[i])
}

但是我收到了这个错误:

  

UseMethod(“logLik”)中的错误:     没有适用于“logLik”的方法应用于“character”类的对象

很明显(或者至少看起来如此)我既不能用AIC也不能用BIC作为参数。

如何有效地计算模型的AIC和BIC并将答案存储到一个数组中?对于10个型号,它可以通过复制,粘贴和进行微小的更改来快速完成,但是一旦模型数量增加,它就变得非常麻烦。

所有帮助将不胜感激。

Obs。:我还尝试创建一个10位的数组,其中每个位置都链接到我的一个模型,但我也做不到。这就是我手工创建矢量模型名称的原因。

1 个答案:

答案 0 :(得分:2)

models[i]替换为get(models[i])

大多数函数都处理数据,而不是名称。使用get,R查看当前环境并尝试根据通常规则查找具有该名称的元素。