[R] question regarding variance function in gls

Yu, Xuesong xyu at scharp.org
Mon Mar 15 19:00:55 CET 2010


Dear R-help members,

I have a question regarding how to use varComb function to specify a
variance function for the "weights"  in the gls.  I  need to fit a
linear model with heteroscedasticity. The variance function is
exp(c0+nu0*W +nu1*W^2) where W is  a covariate.  Initially I want to use
varFunc to define my own variance function following the instruction in
the Pinheiro and Bates (2000), but I could not make it work. Then I used
varComb in gls with  weights=varComb(varExp(form=~W),
varExp(form=~I(W^2))))).  But the estimated variance parameters seems to
have a large discrepancy from the true values 
(I used the simulated data).  This makes me wonder if  it is a right way
to model variance function  exp(c0+nu0*W +nu1*W^2) using "varComb".  The
codes and outputs are copied below.   

Any suggestions and help are very apprecited

library(nlme)
 
simulate.pilot = function(m, mn, sigma, alpha0, alpha1, c0, nu0, nu1) {

   pilot.dat=data.frame(W=rnorm(m, mean=mn, sd=sigma))
   pilot.dat=transform(pilot.dat, Y=rnorm(m, mean=alpha0 + alpha1*W,
sd=sqrt(exp(c0+nu0*W+nu1*W^2))))
        
   pilot.dat   
}

mn=3.3
sigma=sqrt(0.5)

alpha0=0.1
alpha1=3

m=200
n=200

c0=-2.413;   nu0=-0.2; nu1=0.3

simu.dat=simulate.pilot(m, mn, sigma, alpha0, alpha1, c0, nu0, nu1)
   
fit1=try(gls(Y~W, data=simu.dat, weights=varComb(varExp(form=~W),
varExp(form=~I(W^2)))))
c0.hat= log(fit1$sigma^2)
 nu0.hat=2*fit1$modelStruct$varStruct$A[1]
 nu1.hat=2*fit1$modelStruct$varStruct$B[1]

> c0.hat
[1] -1.570104
> nu0.hat
[1] -0.787264
> nu1.hat
[1] 0.4057129
>

Thanks
 
Xuesong 



More information about the R-help mailing list