加重モデルと非加重モデルの偏差を 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))
ここでは、2 つの反復で 8 つの濃度のそれぞれに増加する重みを割り当てます。
今deviance
私は得る:
deviance(fm1DNase1)
[1] 0.004789569
> deviance(fm2DNase1)
[1] 0.0164259
加重適合の逸脱度が大幅に高い(適合が悪い)ことを教えてくれます。
今AIC
(またはBIC
)で私は得る
> AIC(fm1DNase1)
[1] -76.41642
> AIC(fm2DNase1)
[1] -372.5437
これは、2番目の適合が桁違いに優れていることを示しています(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
これはより高く、2 番目のモデルのより高い逸脱にも完全に適合します。
誰でも私を啓発できますか?加重フィッティングの場合、「nls」モデルの標準 AIC 実装は適用されませんか?
乾杯、アンドレイ