set.seed(123) # This leads to the global solution
hspider[,1:6] = scale(hspider[,1:6]) # Standardized environmental vars
p1 = cqo(cbind(Alopacce, Alopcune, Alopfabr, Arctlute, Arctperi,
Auloalbi, Pardlugu, Pardmont, Pardnigr, Pardpull,
Trocterr, Zoraspin) ~
WaterCon + BareSand + FallTwig + CoveMoss + CoveHerb + ReflLux,
ITolerances = TRUE, fam = poissonff, data = hspider,
Crow1positive=TRUE, Bestof=3, trace=FALSE)
if (deviance(p1) > 1589.0) stop("suboptimal fit obtained")
set.seed(111)
up1 = uqo(cbind(Alopacce, Alopcune, Alopfabr, Arctlute, Arctperi,
Auloalbi, Pardlugu, Pardmont, Pardnigr, Pardpull,
Trocterr, Zoraspin) ~ 1,
family = poissonff, data = hspider,
ITolerances = TRUE,
Crow1positive = TRUE, lvstart = -lv(p1))
if (deviance(up1) > 1310.0) stop("suboptimal fit obtained")
nos = ncol(up1@y) # Number of species
clr = (1:(nos+1))[-7] # to omit yellow
lvplot(up1, las=1, y=TRUE, pch=1:nos, scol=clr, lcol=clr,
pcol=clr, llty=1:nos, llwd=2)
legend(x=2, y=135, colnames(up1@y), col=clr, lty=1:nos,
lwd=2, merge=FALSE, ncol=1, x.inter=4.0, bty="l", cex=0.9)
# Compare the site scores between the two models
plot(lv(p1), lv(up1), xlim=c(-3,4), ylim=c(-3,4), las=1)
abline(a=0, b=-1, lty=2, col="blue", xpd=FALSE)
cor(lv(p1, ITol=TRUE), lv(up1))
# Another comparison between the constrained and unconstrained models
# The signs are not right so they are similar when reflected about 0
par(mfrow=c(2,1))
persp(up1, main="Red/Blue are the constrained/unconstrained models",
label=TRUE, col="blue", las=1)
persp(p1, add=FALSE, col="red")
pchisq(deviance(p1) - deviance(up1), df=52-30, lower.tail=FALSE)
Run the code above in your browser using DataLab