3

我使用来自 nlme 的 gls 来适应这个模型:

require(nlme)

set.seed(101)
mp <-data.frame(year=1990:2010)
N <- nrow(mp)

mp <- within(mp,
     {
         wav <- rnorm(N)*cos(2*pi*year)+rnorm(N)*sin(2*pi*year)+5
         wow <- rnorm(N)*wav+rnorm(N)*wav^3
     })

m01 <- gls(wow~poly(wav,3), data=mp, correlation = corARMA(p=1))

我想计算任何拟合优度的度量,例如伪 R 平方:可以推荐哪一个?以及如何计算?

谢谢

4

4 回答 4

3

您需要有某种基线进行比较:

> summary(m01)
Generalized least squares fit by REML
  Model: wow ~ poly(wav, 3) 
  Data: mp 
       AIC      BIC    logLik
  226.5434 231.5427 -107.2717

 m01 <- gls(wow~1, data=mp, correlation = corARMA(p=1))
> summary(m01)
Generalized least squares fit by REML
  Model: wow ~ 1 
  Data: mp 
       AIC     BIC    logLik
  256.5048 259.492 -125.2524

非线性拟合的问题在于平均值不再是“基线”,而这正是 R 平方测量所假设的。

于 2013-01-22T04:09:07.800 回答
3

这里有一些伪 R 平方

R2 <- cor(mp$wow,predict(m01))^2

R2

R2.1 <- 1 - with(mp, (sum((wow-predict(m01))^2)/sum((wow-mean(wow))^2)))

R2.1

麦克法登伪 R2

m00 <- gls(wow~1, data=mp, correlation = corARMA(p=1))

R2.n <- 1-(as.numeric(logLik(m01)/logLik(m00)))

R2.n

但我不知道哪个更适合评估这种模型的拟合优度。

于 2013-01-22T20:57:57.420 回答
2

rcompanion::nagelkerke ()计算三个不同的伪 R² 值。该函数接受通过 拟合的模型nlme::gls

于 2019-11-12T13:36:40.727 回答
0

summary(m01)假设我正确理解你的问题,应该给你你正在寻找的东西???fit将为您提供进一步的建议。

于 2013-01-22T03:45:42.913 回答