2016-10-12 63 views
0

我有一個問題來計算AIC。事實上,我估計了我的3個模型的參數:「mod_linear」,它是一個線性模型,「mod_exp」和「mod_logis」是兩個非線性模型。AIC on nls on R

我所使用的函數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 + n日誌(RSS/n),其中K是參數的數,n的數目來計算的AIC的樣本和RSS剩餘的平方和。

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 

正如你所看到的,是不是相同的結果,這是兩個其他模型相同的東西。 有人可以幫助我嗎?

問候

+0

你可以改善你的問題。請閱讀[如何在R中提供最小重現性示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610)。然後相應地編輯並改進它。 – lukeA

回答

4

你應該總是請確認您使用的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擬合的對數似然值。