[R] testing significance of axis loadings from multivariate dudi.mix
Francisco Mora Ardila
fmora at oikos.unam.mx
Sat Nov 5 22:01:53 CET 2011
Hi all
I´m trying to tests the significance of loadings from a ordination of 46 variables
(caategorical, ordinal and nominal). I used dudi.mix from ade4 for the ordination. A
years ago Jari Oksanen wrote this script implementing Peres-Neto et al. 2003 (Ecology)
bootstraping method:
netoboot <- function (x, permutations=1000, ...)
{
pcnull <- princomp(x, cor = TRUE, ...)
res <- pcnull$loadings
out <- matrix(0, nrow=nrow(res), ncol=ncol(res))
N <- nrow(x)
for (i in 1:permutations) {
pc <- princomp(x[sample(N, replace=TRUE), ], cor = TRUE ...)
pred <- predict(pc, newdata = x)
r <- cor(pcnull$scores, pred)
k <- apply(abs(r), 2, which.max)
reve <- sign(diag(r[k,]))
sol <- pc$loadings[ ,k]
sol <- sweep(sol, 2, reve, "*")
out <- out + ifelse(res > 0, sol <= 0, sol >= 0)
}
out/permutations
}
I tried to aply it to the case of dudi.mix instead of princomp this way:
netoboot1<-function (x, permutations=1000,...) {
dudinull <- dudi.mix(x, scannf = FALSE, nf = 3)
res <- dudinull$c1
out <- matrix(0, nrow=nrow(res), ncol=ncol(res))
N <- nrow(x)
for (i in 1:permutations) {
dudi <- dudi.mix(x[sample(N, replace=TRUE), ], scannf = FALSE, nf = 3)
pred <- predict(dudi, newdata = x)
r <- cor(dudinull$li, pred)
k <- apply(abs(r), 2, which.max)
reve <- sign(diag(r[k,]))
sol <- dudi$c1[ ,k]
sol <- sweep(sol, 2, reve, "*")
out <- out + ifelse(res > 0, sol <= 0, sol >= 0)
}
out/permutations
}
But a problem arised with the predict function: it doesn´t seem to work with an object
from dudi.mix and I dont understand why. Can somebody tell me why? Any suggestions to
modify the script or to use other method?
Thanks in advance.
Francisco
Francisco Mora Ardila
Laboratorio de Biodiversidad y Funcionamiento del Ecosistema
Centro de Investigaciones en Ecosistemas
UNAM-Campus Morelia
Tel 3222777 ext. 42621
Morelia , MIchoacán, México.
--
Open WebMail Project (http://openwebmail.org)
More information about the R-help
mailing list