我要计算AIC的一个问题。事实上,我估计我的3个车型的参数:“mod_linear”,这是一种线性模型和“mod_exp”和“mod_logis”这是两个非线性模型。
我使用的功能AIC():
AIC(mod_linear,mod_exp,mod_logis)
df AIC
mod_linear 4 3.015378
mod_exp 5 -11.010469
mod_logis 5 54.015746
但我试图与式AIC = 2K +博客(RSS / n),其中K是参数的数量,n中的样本的数目和RSS平方残差之和,以计算AIC。
k=4
n=21
#Calcul of nls for the linear model:
mod_linear=nls(data$P~P_linear(P0,K0,a),data=data,
start=c(P0=4.2,K0=4.5,a=0.)
2*k+n*log(sum(residuals(mod_linear)^2)/n)
-56.58004
正如你所看到的,是不一样的结果,它的两个其他车型一样的东西。有人可以帮助我吗?
问候
你应该总是请确认您使用AIC
的一致定义照顾。
AIC
使用的2K-2 * LN(L)通常的定义。对数似然计算,例如,通过作为stats:::logLik.lm
0.5 * (- N * (log(2 * pi) + 1 - log(N) + log(sum(res^2))))
。
一个例子:
fit <- lm(Sepal.Length ~ Sepal.Width, data = iris)
AIC(fit)
#[1] 371.9917
logL <- 0.5 * (- length(residuals(fit)) * (log(2 * pi) + 1 - log(length(residuals(fit))) + log(sum(residuals(fit)^2))))
2 * (fit$rank + 1) - 2 * logL
#[1] 371.9917
然而,help("AIC")
警告:
对数似然,因此AIC / BIC只被定义到一个附加常数。不同的常数以往,用于不同的目的...比较不同类别的配合时,需要特别注意[...]。
见stats:::logLik.nls
对数似然是如何为nls
拟合计算。