[R] nlme and spatially correlated errors
Patricia Balvanera
pbalvane at oikos.unam.mx
Fri Jul 15 18:12:26 CEST 2005
Dear R users,
I am using lme and nlme to account for spatially correlated errors as
random effects. My basic question is about being able to correct F, p, R2
and parameters of models that do not take into account the nature of such
errors using gls, glm or nlm and replace them for new F, p, R2 and
parameters using lme and nlme as random effects.
I am studying distribution patterns of 50 tree species along a gradient.
That gradient
was sampled through 27 transects, with 10 plots within each transect. For
each plot I
have data on presence/absence, abundance and basal area of the species. I
also have data
for 4 environmental variables related to water availability (soil water
retention
capacity, slope, insolation, altitude) and X and Y coordinates for each
plot. I explored
wether the relationship between any of the response variables
(presence/absence,
abundance, basal area) and the environmental variables was linear,
polinomial, or
non-linear.
My main interest in this question is that I proceeded to correct for spatial
autocorrelation (both within transects and overall) following the
procedures suggest by
Crawley 2002 for linear models
e.g. (GUAMAC = a species, CRAS = soil water retention capacity, TRANSECTO =
transect)
> model1<-gls(GUAMAC ~ CRAS)
> model2<-lme(GUAMAC ~ CRAS, random = ~ 1 | TRANSECTO)
> model3<-lme(GUAMAC ~ CRAS, random = GUAMAC ~ CRAS | TRANSECTO)
> model4<-lme(GUAMAC ~ CRAS, random = GUAMAC ~ CRAS -1 | TRANSECTO)
> AIC(model1,model2,model3,model4)
df AIC
model1 3 3730.537
model2 4 3698.849
model3 6 3702.408
model4 4 3704.722
> plot(Variogram(model2, form = ~ X + Y))
> model5<-update(model2,corr=corSpher(c(30,0.8), form = ~ X + Y, nugget = T))
> plot(Variogram(modelo7, resType = "n"))
> summary(model5)
In this case I obtain new F for the independent variable INSOLACION, new R2
for the whole model and new parameters for the linear model.
I have also applied this procedure to polinomial models and to glms with
binomial errors
(presence/absence) with no problem.
I am nevertheless stuck with non-linear models. I am using the protocols
you suggested
in the 1998 manuals by Pinheiro and Bates, and those suggested by Crawley
2002.
Please find enclose an example with an
exponential model (which I chose for being simple). In fact the linear
models I am using
are a bit more complicated.
(HELLOT is a species, INSOLACION = INSOLATION, basal = basal area of the
species, TRANSECTO = transect)
> HELLOT ~ exp(A + (B * INSOLACION))
> basal.HELLOT <-function(A,B,INSOLACION) exp(A + (B * INSOLACION))
> HELLOT ~ basal.HELLOT(A,B,INSOLACION)
> basal.HELLOT<- deriv(~ exp(A + (B * INSOLACION))
+ , LETTERS [1:2], function(A, B, INSOLACION){})
> model1<- nlme(model = HELLOT ~ exp(A + (B * INSOLACION)), fixed = A + B
~ 1,
random = A + B ~ 1, groups = ~ TRANSECTO, start = list(fixed = c(5.23, -0.05)))
It runs perfectly and gives new values for parameters A and B, but would
only give me F for fixed effects of A and B, while what I am really looking
for is F for fixed effects of INSOLACION and the R2 of the new model.
Thank you so much in advance for your help
Dra. Patricia Balvanera
Centro de Investigaciones en Ecosistemas, UNAM-Campus Morelia
Apdo. Postal 27-3, Xangari
58090 Morelia, Michoacán, Mexico
Tel. (52-443)3-22-27-07, (52-55) 56-23-27-07
FAX (52-443) 3-22-27-19, (52-55) 56-23-27-19
More information about the R-help
mailing list