在将加权和未加权模型的偏差与 AIC 值进行比较时,我遇到了一些差异。一个一般的例子(来自'nls'):
DNase1 <- subset(DNase, Run == 1)
fm1DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), DNase1)
这是未加权的拟合,在“nls”的代码中可以看到“nls”生成了一个向量wts <- rep(1, n)
。
现在进行加权拟合:
fm2DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal),
DNase1, weights = rep(1:8, each = 2))
其中我为 8 种浓度中的每一种分配了增加的权重,并重复了 2 次。
现在deviance
我得到:
deviance(fm1DNase1)
[1] 0.004789569
> deviance(fm2DNase1)
[1] 0.0164259
告诉我加权拟合具有显着更高的偏差(更差拟合)。
现在AIC
(或BIC
)我得到
> AIC(fm1DNase1)
[1] -76.41642
> AIC(fm2DNase1)
[1] -372.5437
这告诉我第二次拟合是更好的一个数量级(较低的 AIC)。为什么这样?
如果我AIC
根据教科书中的残差平方和进行定义
RSS <- function (object)
{
w <- object$weights
r <- residuals(object)
if (is.null(w))
w <- rep(1, length(r))
sum(w * residuals(object)^2)
}
AICrss <- function(object)
{
n <- nobs(object)
k <- length(coef(object))
rss <- RSS(object)
n * log((2 * pi)/n) + n + 2 + n * log(rss) + 2 * k
}
我明白了
> AICrss(fm1DNase1)
[1] -76.41642
stats:::AIC.logLik
与上述基于对数似然的 AIC ( ) 的值相同
但
> AICrss(fm2DNase1)
[1] -56.69772
它更高并且完全适合第二个模型的更高偏差。
谁能启发我?'nls' 模型的标准 AIC 实施是否不适用于加权拟合?
干杯,安德烈