AIC со взвешенной нелинейной регрессией (nls)

Я сталкиваюсь с некоторыми расхождениями при сравнении отклонения взвешенной и невзвешенной модели со значениями 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

что является тем же значением, что и вышеприведенный AIC (stats:::AIC.logLik), основанный на логарифмическом правдоподобии

но

> AICrss(fm2DNase1)
[1] -56.69772

что выше и идеально соответствует также более высокому отклонению второй модели.

Может ли кто-нибудь просветить меня? Является ли стандартная реализация AIC для моделей «nls» неприменимой в случае взвешенной подгонки?

С уважением, Андрей


person A.N. Spiess    schedule 24.09.2012    source источник
comment
Мне посоветовали на перекрестной проверке, что AIC обычно не применим к nls подходит.   -  person Roland    schedule 24.09.2012
comment
Я не понял, почему вы решили, что две модели с отклонениями 0,004789569 и 0,0164259 будут существенно отличаться. Имеет ли значение функция отклонения даже для подгонки nls? И если это имеет смысл, разве вам не нужно иметь разницу больше 3,84 (а может быть, и больше, если степени свободы были выше), чтобы достичь значимости?   -  person IRTFM    schedule 24.09.2012
comment
что произойдет, если вы масштабируете свои веса так, чтобы их сумма равнялась 1? Я подозреваю, что R (правильно или неправильно) рассматривает веса так, как будто они соответствуют большему количеству данных...   -  person Ben Bolker    schedule 24.09.2012
comment
Аааа, спасибо, ребята, когда я стандартизирую, чтобы сумма всех весов равнялась 1, я получаю stats:::AIC.logLik AIC(fm1DNAse) = 544, AIC(fm2DNase1) = 589, что также благоприятствует невзвешенной модели. Не следует ли отметить в документе 'nls', что вы должны использовать веса, сумма которых равна единице? Спасибо еще раз!   -  person A.N. Spiess    schedule 25.09.2012
comment
переместите комментарий, чтобы ответить, пожалуйста!   -  person te_ar    schedule 07.11.2012
comment
Интуитивно, если вы взвешиваете что-то, это должно привести к лучшей посадке, не так ли?   -  person Eric    schedule 13.03.2018