我有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位的数组,其中每个位置都链接到我的一个模型,但我也做不到。这就是我手工创建矢量模型名称的原因。
答案 0 :(得分:2)
将models[i]
替换为get(models[i])
。
大多数函数都处理数据,而不是名称。使用get
,R查看当前环境并尝试根据通常规则查找具有该名称的元素。