Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 带加权非线性回归(nls)的AIC_R_Regression_Nls_Model Comparison - Fatal编程技术网

R 带加权非线性回归(nls)的AIC

R 带加权非线性回归(nls)的AIC,r,regression,nls,model-comparison,R,Regression,Nls,Model Comparison,在比较加权和未加权模型与AIC值的偏差时,我遇到了一些差异。 一般示例(来自“nls”): 告诉我加权拟合的偏差明显更大(是一种更差的拟合) 现在有了AIC(或BIC)我就明白了 这告诉我,第二个拟合在数量级上是更好的(AIC更低)。为什么会这样 如果我根据教科书中的残差平方和定义AIC RSS <- function (object) { w <- object$weights r <- residuals(object) if (is.null(w

在比较加权和未加权模型与AIC值的偏差时,我遇到了一些差异。 一般示例(来自“nls”):

告诉我加权拟合的偏差明显更大(是一种更差的拟合)

现在有了
AIC
(或
BIC
)我就明白了

这告诉我,第二个拟合在数量级上是更好的(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
}
这与基于对数似然性的上述AIC(
stats:::AIC.logLik
)的值相同

但是

这更高,完全符合第二个模型的更高偏差

有谁能启发我吗?“nls”模型的标准AIC实施是否不适用于加权拟合

干杯,
Andrej

我一直认为AIC通常不适用于
nls
fits。我不明白为什么您认为偏差为0.004789569和0.0164259的两个模型会“显著不同”。偏差函数对nls拟合是否有意义?如果它是有意义的,你不需要有大于3.84的差异(如果自由度更高,可能会更大)才能达到意义吗?如果你缩放你的体重,使它们总和为1,会发生什么?我怀疑R(正确或错误地)将权重视为它们对应于拥有更多数据……啊,感谢各位,当我标准化所有权重时,我得到的统计结果是:AIC.logLik AIC(fm1DNAse)=544,AIC(fm2DNase1)=589,这也支持未加权模型。“nls”文档中是否应注明,您必须使用总计为1的权重?再次感谢!请将评论移至回答!我一直认为AIC通常不适用于
nls
fits。我不明白为什么您认为偏差为0.004789569和0.0164259的两个模型会“显著不同”。偏差函数对nls拟合是否有意义?如果它是有意义的,你不需要有大于3.84的差异(如果自由度更高,可能会更大)才能达到意义吗?如果你缩放你的体重,使它们总和为1,会发生什么?我怀疑R(正确或错误地)将权重视为它们对应于拥有更多数据……啊,感谢各位,当我标准化所有权重时,我得到的统计结果是:AIC.logLik AIC(fm1DNAse)=544,AIC(fm2DNase1)=589,这也支持未加权模型。“nls”文档中是否应注明,您必须使用总计为1的权重?再次感谢!请将评论移至回答!
 fm2DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), 
                 DNase1, weights = rep(1:8, each = 2))
deviance(fm1DNase1)
[1] 0.004789569

> deviance(fm2DNase1)
[1] 0.0164259
> AIC(fm1DNase1)
[1] -76.41642

> AIC(fm2DNase1)
[1] -372.5437
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
> AICrss(fm2DNase1)
[1] -56.69772