[R-sig-ME] nlme package: changing reference for varIdent parameter estimates in summary.gls
Kornak, John
john.kornak at ucsf.edu
Wed Dec 24 23:34:09 CET 2014
Dear R mixed-effects modeling experts,
I am running gls models with heterogeneous group variances using the glm function in the nlme package with varIdent weights. I am interested in controlling the baseline level for the group variance function standard deviation estimates by applying the relevel function to the group variable. When I use relevel, the baseline level in the coefficient table changes as expected, but the baseline level does not change for the variance function table; for example, see the fitted models gls1 vs. gls2 in the contrived example below. Does anyone have a suggested hack as to how I can change the baseline level for the variance function output please? One hack I have made work is to change the order of the rows in the data (see final part of example), but that seems rather ugly and will get painful for the real data I am working with for which I need to reset many different reference levels.
I have google searched / checked help pages for other solutions without success.
I am running R version 3.1.0 on an iMac OSX v. 10.9.5
Thank you in advance and happy holidays!
John Kornak
> library(nlme)
> group <- factor(c(rep("no",20),rep("yes",20)))
> set.seed(2)
> outcome <- c(rnorm(20,0,2),rnorm(20,5,4))
> dataTest <- data.frame(outcome,group)
# Original model fit before releveling
> gls1 <- gls(outcome ~ group, weights=varIdent(form = ~1|group), data=dataTest)
> summary(gls1)
snip
Variance function:
Structure: Different standard deviations per stratum
Formula: ~1 | group
Parameter estimates:
no yes
1.00000 2.23034
Coefficients:
Value Std.Error t-value p-value
(Intercept) 0.390922 0.4734001 0.825775 0.4141
groupyes 4.607951 1.1571140 3.982279 0.0003
snip
Residual standard error: 2.11711
Degrees of freedom: 40 total; 38 residual
# relevel the group so that yes is the reference
> dataTest$group <- relevel(dataTest$group,"yes")
> gls2 <- gls(outcome ~ group, weights=varIdent(form = ~1|group), data=dataTest)
> summary(gls2)
snip
Variance function:
Structure: Different standard deviations per stratum
Formula: ~1 | group
Parameter estimates:
no yes
1.00000 2.23034 ### no" is still the reference group here for the variance function
Coefficients:
Value Std.Error t-value p-value
(Intercept) 4.998873 1.055843 4.734484 0e+00
groupno -4.607951 1.157114 -3.982279 3e-04 # yes has become the reference for the coefficients
snip
Residual standard error: 2.11711
Degrees of freedom: 40 total; 38 residual
>
# Reorganize the data so that the group == yes" entries come first
> dataTest2 <- dataTest[c(21:40,1:20), ]
> gls3 <- gls(outcome ~ group, weights=varIdent(value = c(yes = 0.5), form = ~1|group), data=dataTest2)
> summary(gls3)
snip
Variance function:
Structure: Different standard deviations per stratum
Formula: ~1 | group
Parameter estimates:
yes no
1.0000000 0.4483626 ## now I have the desired yes as reference level
Coefficients:
Value Std.Error t-value p-value
(Intercept) 4.998873 1.055843 4.734487 0e+00
groupno -4.607951 1.157113 -3.982281 3e-04 # and yes also reference level here
snip
Residual standard error: 4.721872
Degrees of freedom: 40 total; 38 residual
>
---------------------------------------------------
John Kornak, PhD
Associate Professor in Residence
Department of Epidemiology and Biostatistics
University of California, San Francisco
Mission Hall: Global Health & Clinical Sciences Building
550 16th St, 2nd floor, Box #0560
San Francisco, CA 94158-2549
Tel: 415-514-8028
Fax: 415-514-8150
Email: john.kornak at ucsf.edu<mailto:john.kornak at ucsf.edu>
[[alternative HTML version deleted]]
More information about the R-sig-mixed-models
mailing list