AIC上R上NLS

问题描述 投票:1回答:1

我要计算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

正如你所看到的,是不一样的结果,它的两个其他车型一样的东西。有人可以帮助我吗?

问候

r nls model-comparison
1个回答
5
投票

你应该总是请确认您使用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拟合计算。

© www.soinside.com 2019 - 2024. All rights reserved.