Latent Variable Plot for QO models
Produces an ordination diagram (latent variable plot) for quadratic ordination (QO) models. For rank-1 models, the x-axis is the first ordination/constrained/canonical axis. For rank-2 models, the x- and y-axis are the first and second ordination axes respectively.
lvplot.qrrvglm(object, varI.latvar = FALSE, refResponse = NULL, add = FALSE, show.plot = TRUE, rug = TRUE, y = FALSE, type = c("fitted.values", "predictors"), xlab = paste("Latent Variable", if (Rank == 1) "" else " 1", sep = ""), ylab = if (Rank == 1) switch(type, predictors = "Predictors", fitted.values = "Fitted values") else "Latent Variable 2", pcex = par()$cex, pcol = par()$col, pch = par()$pch, llty = par()$lty, lcol = par()$col, llwd = par()$lwd, label.arg = FALSE, adj.arg = -0.1, ellipse = 0.95, Absolute = FALSE, elty = par()$lty, ecol = par()$col, elwd = par()$lwd, egrid = 200, chull.arg = FALSE, clty = 2, ccol = par()$col, clwd = par()$lwd, cpch = " ", C = FALSE, OriginC = c("origin", "mean"), Clty = par()$lty, Ccol = par()$col, Clwd = par()$lwd, Ccex = par()$cex, Cadj.arg = -0.1, stretchC = 1, sites = FALSE, spch = NULL, scol = par()$col, scex = par()$cex, sfont = par()$font, check.ok = TRUE, jitter.y = FALSE, ...)
object |
A CQO object. |
varI.latvar |
Logical that is fed into |
refResponse |
Integer or character that is fed into |
add |
Logical. Add to an existing plot? If |
show.plot |
Logical. Plot it? |
rug |
Logical. If |
y |
Logical. If |
type |
Either |
xlab |
Caption for the x-axis. See |
ylab |
Caption for the y-axis. See |
pcex |
Character expansion of the points.
Here, for rank-1 models, points are the response y data.
For rank-2 models, points are the optimums.
See the |
pcol |
Color of the points.
See the |
pch |
Either an integer specifying a symbol or a single character
to be used as the default in plotting points.
See |
llty |
Line type.
Rank-1 models only.
See the |
lcol |
Line color.
Rank-1 models only.
See the |
llwd |
Line width.
Rank-1 models only.
See the |
label.arg |
Logical. Label the optimums and C? (applies only to rank-2 models only). |
adj.arg |
Justification of text strings for labelling the optimums
(applies only to rank-2 models only).
See the |
ellipse |
Numerical, of length 0 or 1 (applies only to rank-2 models only).
If |
Absolute |
Logical.
If |
elty |
Line type of the ellipses.
See the |
ecol |
Line color of the ellipses.
See the |
elwd |
Line width of the ellipses.
See the |
egrid |
Numerical. Line resolution of the ellipses. Choosing a larger value will result in smoother ellipses. Useful when ellipses are large. |
chull.arg |
Logical. Add a convex hull around the site scores? |
clty |
Line type of the convex hull.
See the |
ccol |
Line color of the convex hull.
See the |
clwd |
Line width of the convex hull.
See the |
cpch |
Character to be plotted at the intersection points of
the convex hull. Having white spaces means that site
labels are not obscured there.
See the |
C |
Logical. Add C (represented by arrows emanating
from |
OriginC |
Character or numeric.
Where the arrows representing C emanate from.
If character, it must be one of the choices given. By default the
first is chosen.
The value |
Clty |
Line type of the arrows representing C.
See the |
Ccol |
Line color of the arrows representing C.
See the |
Clwd |
Line width of the arrows representing C.
See the |
Ccex |
Numeric. Character expansion of the labelling of C.
See the |
Cadj.arg |
Justification of text strings when labelling C.
See the |
stretchC |
Numerical. Stretching factor for C.
Instead of using C, |
sites |
Logical. Add the site scores (aka latent variable values, nu's) to the plot? (applies only to rank-2 models only). |
spch |
Plotting character of the site scores.
The default value of |
scol |
Color of the site scores.
See the |
scex |
Character expansion of the site scores.
See the |
sfont |
Font used for the site scores.
See the |
check.ok |
Logical. Whether a check is performed to see
that |
jitter.y |
Logical. If |
... |
Arguments passed into the |
This function only works for rank-1 and rank-2 QRR-VGLMs with argument
noRRR = ~ 1
.
For unequal-tolerances models, the latent variable axes can be
rotated so that at least one of the tolerance matrices is diagonal;
see Coef.qrrvglm
for details.
Arguments beginning with “p
” correspond to the points e.g.,
pcex
and pcol
correspond to the size and color of the
points. Such “p
” arguments should be vectors of length 1,
or n, the number of sites. For the rank-2 model, arguments
beginning with “p
” correspond to the optimums.
Returns a matrix of latent variables (site scores) regardless of whether a plot was produced or not.
Interpretation of a latent variable plot (CQO diagram) is potentially very misleading in terms of distances if (i) the tolerance matrices of the species are unequal and (ii) the contours of these tolerance matrices are not included in the ordination diagram.
A species which does not have an optimum will not have an ellipse drawn even if requested, i.e., if its tolerance matrix is not positive-definite.
Plotting C gives a visual display of the weights (loadings) of each of the variables used in the linear combination defining each latent variable.
The arguments elty
, ecol
and elwd
, may be replaced
in the future by llty
, lcol
and llwd
, respectively.
For rank-1 models, a similar function to this one is
perspqrrvglm
. It plots the fitted values on a more
fine grid rather than at the actual site scores here. The result is a
collection of smooth bell-shaped curves. However, it has the weakness
that the plot is more divorced from the data; the user thinks it is
the truth without an appreciation of the statistical variability in
the estimates.
In the example below, the data comes from an equal-tolerances model. The species' tolerance matrices are all the identity matrix, and the optimums are at (0,0), (1,1) and (-2,0) for species 1, 2, 3 respectively.
Thomas W. Yee
Yee, T. W. (2004). A new technique for maximum-likelihood canonical Gaussian ordination. Ecological Monographs, 74, 685–701.
lvplot
,
perspqrrvglm
,
Coef.qrrvglm
,
par
,
cqo
.
set.seed(123); nn <- 200 cdata <- data.frame(x2 = rnorm(nn), # Has mean 0 (needed when I.tol=TRUE) x3 = rnorm(nn), # Has mean 0 (needed when I.tol=TRUE) x4 = rnorm(nn)) # Has mean 0 (needed when I.tol=TRUE) cdata <- transform(cdata, latvar1 = x2 + x3 - 2*x4, latvar2 = -x2 + x3 + 0*x4) # Nb. latvar2 is weakly correlated with latvar1 cdata <- transform(cdata, lambda1 = exp(6 - 0.5 * (latvar1-0)^2 - 0.5 * (latvar2-0)^2), lambda2 = exp(5 - 0.5 * (latvar1-1)^2 - 0.5 * (latvar2-1)^2), lambda3 = exp(5 - 0.5 * (latvar1+2)^2 - 0.5 * (latvar2-0)^2)) cdata <- transform(cdata, spp1 = rpois(nn, lambda1), spp2 = rpois(nn, lambda2), spp3 = rpois(nn, lambda3)) set.seed(111) ## Not run: p2 <- cqo(cbind(spp1, spp2, spp3) ~ x2 + x3 + x4, poissonff, data = cdata, Rank = 2, I.tolerances = TRUE, Crow1positive = c(TRUE, FALSE)) # deviance = 505.81 if (deviance(p2) > 506) stop("suboptimal fit obtained") sort(deviance(p2, history = TRUE)) # A history of all the iterations Coef(p2) ## End(Not run) ## Not run: lvplot(p2, sites = TRUE, spch = "*", scol = "darkgreen", scex = 1.5, chull = TRUE, label = TRUE, Absolute = TRUE, ellipse = 140, adj = -0.5, pcol = "blue", pcex = 1.3, las = 1, Ccol = "orange", C = TRUE, Cadj = c(-0.3, -0.3, 1), Clwd = 2, Ccex = 1.4, main = paste("Contours at Abundance = 140 with", "convex hull of the site scores")) ## End(Not run) ## Not run: var(latvar(p2)) # A diagonal matrix, i.e., uncorrelated latent vars var(latvar(p2, varI.latvar = TRUE)) # Identity matrix Tol(p2)[, , 1:2] # Identity matrix Tol(p2, varI.latvar = TRUE)[, , 1:2] # A diagonal matrix ## End(Not run)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.