AIC的应用通常涉及以下步骤:
- 建立多个模型:首先,对于一组数据,你需要建立多个候选模型。每个模型可能包含不同数量的解释变量。
- 计算每个模型的AIC:然后,你需要计算每个模型的AIC值。根据AIC的定义,对于每个模型,计算对数似然(logLik)和模型参数数量(p)。
- 比较AIC值:比较所有模型的AIC值,寻找AIC值最小的模型。
现在,我们用一个具体的例子来解释这一过程。假设我们有一组关于房屋价格的数据,我们想要建立一个模型来预测房价。我们有以下几个变量可以用作模型的解释变量:- X1: 房屋大小(平方米)
- X2: 房屋年龄(年)
- X3: 卧室数量
- X4: 浴室数量
- X5: 是否有车库
我们可以建立几个不同的模型:
- 模型1: 只用房屋大小作为解释变量
- 模型2: 用房屋大小和房屋年龄作为解释变量
- 模型3: 用房屋大小、房屋年龄和卧室数量作为解释变量
- 以此类推
对每个模型,我们使用回归分析来计算其对数似然值(logLik),并计算参数的数量(p)。
举个例子,如果模型1的logLik是-300,模型有1个参数,那么AIC为:
A
I
C
模型
1
=
−
2
×
(
−
300
)
+
2
×
1
=
600
+
2
=
602
AIC_{模型1} = -2 \times (-300) + 2 \times 1 = 600 + 2 = 602
AIC模型1=−2×(−300)+2×1=600+2=602
同理,我们可以计算模型2、模型3等的AIC。假设模型2的logLik是-295,有2个参数,则AIC为:
A
I
C
模型
2
=
−
2
×
(
−
295
)
+
2
×
2
=
590
+
4
=
594
AIC_{模型2} = -2 \times (-295) + 2 \times 2 = 590 + 4 = 594
AIC模型2=−2×(−295)+2×2=590+4=594
如果模型3的logLik是-292,有3个参数,则AIC为:
A
I
C
模型
3
=
−
2
×
(
−
292
)
+
2
×
3
=
584
+
6
=
590
AIC_{模型3} = -2 \times (-292) + 2 \times 3 = 584 + 6 = 590
AIC模型3=−2×(−292)+2×3=584+6=590
在这个例子中,模型3有最低的AIC值,因此根据AIC准则,模型3是最佳的模型。
最后一步,我们会选择AIC值最小的模型3来进行预测,因为它在复杂度和拟合优度之间达到了最好的平衡。
在R语言中计算对数似然值
在R语言中,可以使用多种方法来计算对数似然值,具体取决于你的模型类型。对于线性模型,可以使用lm()
函数来拟合模型,然后使用logLik()
函数来获取对数似然值。
我们将使用R中自带的’mtcars’数据集作为这个例子。我们将使用’wt’(重量)和’hp’(马力)来预测’mpg’(每加仑英里数)。
data(mtcars)
model <- lm(mpg ~ wt + hp, data=mtcars)
手动使用对数似然值来计算AIC
# 计算模型的对数似然值
log_likelihood <- logLik(model)
# 输出对数似然值。
print(log_likelihood)
# AIC使用以下公式计算:-2 * 对数似然值 + 2 * 参数数量
# 参数的数量是模型中的系数数量(包括截距)。
aic_value <- -2 * as.numeric(log_likelihood) + 2 * length(coef(model))
# 输出AIC值。
print(aic_value)
也可以直接调用 AIC()
函数。
# 直接获取AIC值
aic_value <- AIC(model)
# 打印AIC值
print(aic_value)