Dean addressed the main point of your inquiry but I would like to address another point, in case others reading this find themselves in a similar analytical situation. You indicate that you set lambda = 0.482777 based on the optimized value obtained from phytools::phylosig. That function only finds a univariate phylogenetic signal (lambda) and if multivariate data (like shape data) are used, it will “conveniently” just use the first variable. Here is a demo:
> phy <- pbtree(n = 20)
> Y <- cbind(fastBM(phy), fastBM(phy))
> dim(Y)
[1] 20 2
> phylosig(phy, Y, method = "lambda”) # entering multivariate data… it works but shouldn't
Phylogenetic signal lambda : 0.987641
logL(lambda) : -26.7988
> phylosig(phy, Y[,1], method = "lambda”) # evidence that phylosig uses just the first variable
Phylogenetic signal lambda : 0.987641
logL(lambda) : -26.7988
> phylosig(phy, Y[,2], method = "lambda")
Phylogenetic signal lambda : 1.00191
logL(lambda) : -19.3934
As you can see, for the multivariate data, Y, lambda is estimated only for the first variable. THIS IS DANGEROUS! Having pointed this out, what is the best solution? Well, currently we (the field of macroevolutionary biology) do not have an explicit optimization strategy for finding lambda for multivariate data. If the data are not highly multivariate (more variables than observations) or close to being highly multivariate, one could attempt to re-create phylosig with multivariate estimation of log-likelihood but if data are highly multivariate, log-likelihood cannot be estimated. This approach assumes that lambda should be constant for every variable in the multivariate data, which is another topic ready for debate.
Indeed, in procD.pgls, it is assumed that one scalar of lambda is used for every variable, so how could one employ an optimization strategy? Although not perfect, if we assume that the highest model likelihood should be found for a model that minimizes the dispersion of residuals, one could employ an optimization strategy by varying lambda and finding which value of lambda yields the smallest residual error. Here is an example that starts to show how that works, using the same data from the previous example (and truncated for clarity):
> summary(procD.pgls(Y~1, phy = phy, lambda = 0))
df SS MS
Residuals 19 18.733 0.98593
> summary(procD.pgls(Y~1, phy = phy, lambda = 0.1))
df SS MS
Residuals 19 14.997 0.78934
> summary(procD.pgls(Y~1, phy = phy, lambda = 0.2))
df SS MS
Residuals 19 13.304 0.70022
> summary(procD.pgls(Y~1, phy = phy, lambda = 0.4))
df SS MS
Residuals 19 12.256 0.64506
Notice that (1) the model only contains an intercept, meaning I am just entertaining a scaling of the Brownian motion (BM) model of evolutionary divergence, and that (2) the residual SS (RSS) is decreasing as I increase lambda in increments of 0.1. I stopped at lambda = 0.4 but I could continue this procedure until lambda = 1. (Since I simulated data with lambda = 1, procD.pgls with lambda = 1 would probably be near the best outcome.) With real data, there might be a point where RSS is lowest and continued increase of lambda will cause it to rise. Finding the lambda where RSS is lowest is a good solution for determining what lambda should be for your multivariate data. (When you get to an interval, say 0.6-0.7, you might start using smaller increments to zero in on a good value of lambda. If lambda is a little off, say 0.65 instead of 0.646222546, it will have little consequence for you analysis.)
As a caveat for the rigorous analytical minds reading this: this approach assumes that the trace of the residual covariance matrix (RSS above) is comparable and a useful surrogate to the determinant of the residual covariance matrix, which is used to estimate the log-likelihood of models. For only slightly multivariate data, this is likely the case. For shape data, it is probably not a huge concern, even for more complex data. For highly multivariate data, there really is not much choice, since likelihoods cannot be estimated.
Regardless of the quibbles we might have for multivariate lambda optimization, please do not input shape data into phylosig and think that it found an optimized lambda value for you. It actually only found an optimized value for your first variable of the multivariate data set, only. Trial and error would be a much better approach for attempting to optimize lambda for your multivariate data!
Hope this helps.
Mike