2

在将加权和未加权模型的偏差与 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 实施是否不适用于加权拟合?

干杯,安德烈

4

0 回答 0