Thank you very much for the reply Emmanuel!

OK, yes I just tried and Iʻm surprised that this works:

>  dat <- data.frame(Species = c("Homo", "Pongo", "Macaca", "Ateles",
"Galago"), X = X, Y = Y)
> cbm <- corBrownian(1, tree, form = ~Species)
> gls(Y ~ X, dat, correlation = cbm)

How does corBrownian know about Species, when it is only defined as an
element of dat, and not known in the global environment?

Anyway, thank you!
Marguerite


On Sun, May 16, 2021 at 7:03 PM Emmanuel Paradis <emmanuel.para...@ird.fr>
wrote:

> Hi Marguerite,
>
> The issue is about nlme::gls. The help page ?gls says:
>
>     data: an optional data frame containing the variables named in
>           ‘model’, ‘correlation’, ‘weights’, and ‘subset’. By default
>           the variables are taken from the environment from which ‘gls’
>           is called.
>
> So you make it work by removing "dat$" in the call to corBrownian():
>
>     cbm <- corBrownian(1, tree, form = ~Species)
>
> Best,
>
> Emmanuel
>
> ----- Le 17 Mai 21, à 6:22, Marguerite Butler mbutler...@gmail.com a
> écrit :
>
> > Aloha all,
> >
> > Does anyone know the answer to this question -  how does ape pass the
> > species name information into gls? Seems to be a global environment issue
> > when using apeʻs corBrownian and  nlmeʻs gls? and a very specific form is
> > required, but why?
> >
> > Modified from ape help page for CorClasses:
> >
> > ---
> >
> > library(nlme)
> > library(ape)
> >
> > tree <- read.tree(text =
> >
> "((((Homo:0.21,Pongo:0.21):0.28,Macaca:0.49):0.13,Ateles:0.62):0.38,Galago:1.00);")
> > X <- c(4.09434, 3.61092, 2.37024, 2.02815, -1.46968)
> > Y <- c(4.74493, 3.33220, 3.36730, 2.89037, 2.30259)
> > dat <- data.frame(Species = c("Homo", "Pongo", "Macaca", "Ateles",
> > "Galago"), X = X, Y = Y)
> >
> > gls(Y ~ X, dat, correlation=corBrownian(1, tree.primates, form =
> ~Species))
> > ---
> >
> > The above works just fine. However, if we try to calculate corBrownian
> > separately, gls cannot understand the corBrownian object:
> > ---
> >> cbm <- corBrownian(1, tree, form = ~dat$Species)    # calculate
> correlation
> >> separately
> >> gls(Y ~ X, dat, correlation = cbm)           ## does not work, invalid
> type
> >> (list) for dat
> > Error in model.frame.default(formula = ~dat + Species + Y + X, data =
> list( :
> >  invalid type (list) for variable 'dat'
> > ---
> >
> > If we put the species information into a vector in the global
> > environment it works. Why canʻt we use dat$Species?
> > ---
> > spp <- dat$Species       # save species as vector in global environment
> > cbm <- corBrownian(1, tree, form = ~spp)    # calculate correlation
> separately
> > gls(Y ~ X, dat, correlation = cbm)           ## works!
> >
> > Thanks,
> >
> > Marguerite
> >
> >
> >
> > On Fri, May 14, 2021 at 10:21 PM Marguerite Butler <mbutler...@gmail.com
> >
> > wrote:
> >
> >> Aloha Oliver,
> >>
> >> From the cor.Brownian help page, the explanation for the form argument
> is
> >> this:
> >>
> >> a one sided formula of the form ~ t, or ~ t | g, specifying the taxa
> >> covariate t and, optionally, a grouping factor g. A covariate for this
> >> correlation structure must be character valued, with entries matching
> the
> >> tip labels in the phylogenetic tree. When a grouping factor is present
> in
> >> form, the correlation structure is assumed to apply only to observations
> >> within the same grouping level; observations with different grouping
> levels
> >> are assumed to be uncorrelated. Defaults to ~ 1, which corresponds to
> using
> >> the order of the observations in the data as a covariate, and no groups.
> >>
> >> This means that "t" should contain the species names or tip labels,
> >> spelled exactly as they are in your phylogeny.  So for example if your
> data
> >> SteninaeData
> >> has a column for species names called "species" then you would specify:
> >>
> >> cor.BM <- corBrownian(phy=SteninaeTree, form = ~dat$species)
> >>
> >> and then proceed with your regression model as above.
> >>
> >>
> >> You can also follow the example on the corClasses page:
> >> http://127.0.0.1:27386/library/ape/html/corClasses.html
> >>
> >> Slightly modified here:
> >>
> >> ---
> >>
> >> library(nlme)
> >>
> >> library(ape)
> >>
> >> tree <-
> >>
> read.tree(text="((((Homo:0.21,Pongo:0.21):0.28,Macaca:0.49):0.13,Ateles:0.62):0.38,Galago:1.00);"
> >>
> >> X <- c(4.09434, 3.61092, 2.37024, 2.02815, -1.46968)  # a vector
> >>
> >> Y <- c(4.74493, 3.33220, 3.36730, 2.89037, 2.30259)   # a vector
> >>
> >> Species <- c("Homo", "Pongo", "Macaca", "Ateles", "Galago")  # a vector
> >>
> >> dat <- data.frame(Species = Species, X = X, Y = Y)    # make a dataframe
> >> with Species, X, Y, can also read in .csv
> >> cbm <- corBrownian(1, tree, form = ~dat$Species)
> >>
> >> m1 <- gls(Y ~ X, dat, correlation=cbm)
> >>
> >> m1
> >>
> >> ---
> >>
> >> hth,
> >>
> >> Marguerite
> >>
> >> On Fri, May 14, 2021 at 9:46 PM Oliver Betz <
> oliver.b...@uni-tuebingen.de>
> >> wrote:
> >>
> >>> Dear all:
> >>>
> >>> I am currently facing the following problem:
> >>>
> >>> Unsing ape, nlme por phylolm for PGLS I was wondering how to sort my
> >>> trait data (the ones in my csv file) according to the tree, so that
> >>> both are in the same order. I learned how to check whether the data &
> >>> the tree coincide in both number of species and names, but I do not
> >>> nderstand how to perform the mentioned sorting task.
> >>>
> >>> Once I am running the PGLS commands such as
> >>> cor.BM <- corBrownian(phy=SteninaeTree)
> >>> pgls <- gls(LOG_rel_Attachment_force_smooth ~
> >>> LOG_rel_Anzahl_Hafthaare_4.Vordertarsus, correlation = cor.BM, data =
> >>> SteninaeData, method = "ML")"
> >>>
> >>> I regularly receive the follwing warning note:
> >>> "In Initialize.corPhyl(X[[i]], ...) :
> >>> No covariate specified, species will be taken as ordered in the data
> >>> frame. To avoid this message, specify a covariate containing the
> >>> species names with the 'form' argument."
> >>>
> >>> Since this is just a warning message, I usually was going on with the
> >>> "summary(pgls)" command, where I was getting my results.
> >>>
> >>>
> >>> Anyhow, I was wondering whether it is OK to just ignore this warning
> >>> or whether it means that I will have to sort the sequence of the
> >>> sepcies trait data in my data file (csv) exactly according to the
> >>> sequence of the species as they occur at the tips of my tree file.
> >>> Since the spelling of the species names is exactly the same in both
> >>> the tree file and the data file, I thought that such sorting is
> >>> automatically done by the algorithm?
> >>>
> >>> I will be glad if you have any hint how ro resove this.
> >>>
> >>> My best wishes,
> >>>
> >>> Oliver Betz
> >>> (University of Tübingen, Gernmany)
> >>>
> >>> _______________________________________________
> >>> R-sig-phylo mailing list - R-sig-phylo@r-project.org
> >>> https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
> >>> Searchable archive at
> >>> http://www.mail-archive.com/r-sig-phylo@r-project.org/
> >>>
> >>
> >>
> >> --
> >> ____________________________________________
> >> Marguerite A. Butler
> >> Professor
> >>
> >> Department of Biology
> >> 2538 McCarthy Mall, Edmondson Hall 216
> >> Honolulu, HI 96822
> >>
> >> Office: 808-956-4713
> >> Dept: 808-956-8617
> >> Lab:  808-956-5867
> >> FAX:   808-956-4745
> >> http://butlerlab.org
> >> http://manoa.hawaii.edu/biology/people/marguerite-butler
> >> http://www2.hawaii.edu/~mbutler
> >>
> >>
> >
> > --
> > ____________________________________________
> > Marguerite A. Butler
> > Professor
> >
> > Department of Biology
> > 2538 McCarthy Mall, Edmondson Hall 216
> > Honolulu, HI 96822
> >
> > Office: 808-956-4713
> > Dept: 808-956-8617
> > Lab:  808-956-5867
> > FAX:   808-956-4745
> > http://butlerlab.org
> > http://manoa.hawaii.edu/biology/people/marguerite-butler
> > http://www2.hawaii.edu/~mbutler
> >
> >       [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-sig-phylo mailing list - R-sig-phylo@r-project.org
> > https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
> > Searchable archive at
> http://www.mail-archive.com/r-sig-phylo@r-project.org/
>


-- 
____________________________________________
Marguerite A. Butler
Professor

Department of Biology
2538 McCarthy Mall, Edmondson Hall 216
Honolulu, HI 96822

Office: 808-956-4713
Dept: 808-956-8617
Lab:  808-956-5867
FAX:   808-956-4745
http://butlerlab.org
http://manoa.hawaii.edu/biology/people/marguerite-butler
http://www2.hawaii.edu/~mbutler

        [[alternative HTML version deleted]]

_______________________________________________
R-sig-phylo mailing list - R-sig-phylo@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-phylo
Searchable archive at http://www.mail-archive.com/r-sig-phylo@r-project.org/

Reply via email to