我使用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平方:可以推荐哪一个?以及如何计算它?
由于
答案 0 :(得分: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
McFadden伪R2
m00 <- gls(wow~1, data=mp, correlation = corARMA(p=1))
R2.n <- 1-(as.numeric(logLik(m01)/logLik(m00)))
R2.n
但我不认为哪种更适合评估这种模型的适合度。
答案 1 :(得分:2)
您需要有某种基线进行比较:
> 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平方度量假设。
答案 2 :(得分:1)
rcompanion::nagelkerke ()
计算三个不同的伪R²值。该函数接受通过nlme::gls
拟合的模型。
答案 3 :(得分:0)
summary(m01)
会给你你想要的东西吗? ??fit
会为您提供进一步的建议。