Dr Carbon
2009-Jan-28 17:51 UTC
[R] gls prediction using the correlation structure in nlme
How does one coerce predict.gls to incorporate the fitted correlation structure from the gls object into predictions? In the example below the AR(1) process with phi=0.545 is not used with predict.gls. Is there another function that does this? I'm going to want to fit a few dozen models varying in order from AR(1) to AR(3) and would like to look at the fits with the correlation structure included. Thanks in advance. -JC PS I am including the package maintainers on this post - does this constitute a maintainer-specific question in r-help etiquette? # example set.seed(123) x <- arima.sim(list(order = c(1,0,0), ar = 0.7), n = 100) y <-x + arima.sim(list(order = c(1,0,0), ar = 0.7), n = 100) x <- c(x) y <- c(y) lm1 <- lm(y~x) ar(residuals(lm1)) # indicates an ar1 model cs1 <- corARMA(p=1) fm1 <- gls(y~x,corr=cs1) summary(fm1) # get fits fits <- predict(fm1) # use coef to get fits fits2 <- coef(fm1)[1] + (coef(fm1)[2] * x) plot(fits,fits2)
Dr Carbon
2009-Jan-30 01:28 UTC
[R] gls prediction using the correlation structure in nlme
On Wed, Jan 28, 2009 at 9:51 AM, Dr Carbon <drcarbon at gmail.com> wrote:> How does one coerce predict.gls to incorporate the fitted correlation > structure from the gls object into predictions? In the example below > the AR(1) process with phi=0.545 is not used with predict.gls. Is > there another function that does this? I'm going to want to fit a few > dozen models varying in order from AR(1) to AR(3) and would like to > look at the fits with the correlation structure included. > > Thanks in advance. > > -JC > > PS I am including the package maintainers on this post - does this > constitute a maintainer-specific question in r-help etiquette? > > # example > set.seed(123) > x <- arima.sim(list(order = c(1,0,0), ar = 0.7), n = 100) > y <-x + arima.sim(list(order = c(1,0,0), ar = 0.7), n = 100) > x <- c(x) > y <- c(y) > lm1 <- lm(y~x) > ar(residuals(lm1)) # indicates an ar1 model > cs1 <- corARMA(p=1) > fm1 <- gls(y~x,corr=cs1) > summary(fm1) > # get fits > fits <- predict(fm1) > # use coef to get fits > fits2 <- coef(fm1)[1] + coef(fm1)[2] * x > plot(fits,fits2) >I think this is the way to do this? b0 <- coef(fm1)[1] b1 <- coef(fm1)[2] p1 <- intervals(fm1)$corStruct[2] y[i] = b0 + p1*y[i-1] + b1*x[i]