Dear Ricardo,
Using an OLS model is probably a good idea but you should make sure your covariance matrices are comparable, meaning their determinants are calculated based on similar scaling. For example, an OLS model is a GLS model using a covariance matrix that is an identity matrix. The identity matrix could be weighted by the tree depth (common value on the diagonal of the phylogenetic covariance matrix). You can do this like so (with N taxa):
d <- PhyCov[1]
wI <- d * diag(N)
Then use wI as a covariance matrix for a GLS fit, which will inflate the determinant of the OLS residual covariance matrix fairly to account for tree depth (height). Alternatively, you could make your phylogenetic covariance matrix unit depth. This can be done “by hand” but RRPP has a function, scaleCov, which can rescale phylogenetic covariance matrices by lambda, but also does more. Here is an example
uPhyCov <- scaleCov(PhyCov, scale. = 1/d, scale.diagonal = TRUE)
This covariance matrix could be used in a GLS fit and could be compared to an OLS fit.
Either approach makes sure covariance matrices have the same diagonal, which means an OLS model is the same as GLS with a star phylogeny, given the depth of tree used.
Note that
scaleCov(PhyCov, scale. = lambda, scale.diagonal = FALSE)
should produce the same or similar covariance matrix as mvgls, provided the unscaled phylogenetic covariance matrices are the same. The difference is that scaling a tree by lambda does not change its depth. Scaling the covariance matrix by 1/d and including the diagonal makes the tree unit depth. One could scale the covariance matrix by lambda/d and include the diagonal, which would simultaneously adjust the branch lengths and make the tree unit depth.
hope that helps!
Mike