Nothing
mgVarPart <- function(genD, vectorsMEM, coords, perm = 1000) {
X <- as.matrix(vectorsMEM)
X <- apply(X, 2, scale)
W <- as.matrix(coords)
W <- apply(W, 2, scale)
genD <- as.matrix(genD)
Number_Predictors_X <- ncol(X)
Number_Predictors_W <- ncol(W)
n <- nrow(X)
XW <- as.matrix(cbind(X, W))
result <- mgRDA(genD, XW, full = FALSE)
abc <- result$RsqAdj
Fabc <- result$F
result <- mgRDA(genD, X, full = FALSE)
ab <- result$RsqAdj
Fab <- result$F
residuals_X <- result$res_matrix
predicted_X <- result$pred_matrix
result <- mgRDA(genD, W, full = FALSE)
bc <- result$RsqAdj
Fbc <- result$F
residuals_W <- result$res_matrix
predicted_W <- result$pred_matrix
# unique fraction of contribution related to X
a <- abc - bc
# unique fraction of contribution related to W
c <- abc - ab
# common fraction of contribution between X and W
b <- abc - a - c
# residual fraction
d <- 1 - abc
Fa <- (a / Number_Predictors_X) / (d / (n - Number_Predictors_X - Number_Predictors_W))
Fc <- (c / Number_Predictors_W) / (d / (n - Number_Predictors_X - Number_Predictors_W))
Prob_abc <- 1 / perm
Prob_ab <- 1 / perm
Prob_bc <- 1 / perm
Prob_a <- 1 / perm
Prob_c <- 1 / perm
# permutations test
for (i in 1:(perm - 1)) {
# testing fraction a; notice that we permute the residual values in W and not in X
permuted_rows <- sample(n, replace = FALSE)
# permuting the residual matrix, which is from the distance, and hence the need to permute
# rows and columns in the same way, hence the use of permuted_rows for columns and rows below
# testing fraction a
# Yperm=predicted_W+residuals_W[permuted_rows,permuted_rows] # implement permutation of residuals in the future
# testing fraction a
result <- mgRDA(genD, XW[permuted_rows, ], full = FALSE)
abcRnd <- result$RsqAdj
FabcRnd <- result$F
result <- mgRDA(genD, W[permuted_rows, ], full = FALSE)
bcRnd <- result$RsqAdj
FbcRnd <- result$F
aRnd <- abcRnd - bcRnd
dRnd <- 1 - abcRnd
FaRnd <- (aRnd / Number_Predictors_X) / (dRnd / (n - Number_Predictors_X - Number_Predictors_W))
if (FaRnd >= Fa) {
Prob_a <- Prob_a + 1 / perm
}
# testing fraction c
result <- mgRDA(genD, X[permuted_rows, ], full = FALSE)
abRnd <- result$RsqAdj
FabRnd <- result$F
cRnd <- abcRnd - abRnd
FcRnd <- (cRnd / Number_Predictors_W) / (dRnd / (n - Number_Predictors_X - Number_Predictors_W))
if (FcRnd >= Fc) {
Prob_c <- Prob_c + 1 / perm
}
# testing abc
if (FabcRnd >= Fabc) {
Prob_abc <- Prob_abc + 1 / perm
}
# testing ab
if (FabRnd >= Fab) {
Prob_ab <- Prob_ab + 1 / perm
}
# testing bc
if (FbcRnd >= Fbc) {
Prob_bc <- Prob_bc + 1 / perm
}
}
result <- mat.or.vec(7, 2)
result[1, 1] <- abc
result[2, 1] <- ab
result[3, 1] <- bc
result[4, 1] <- a
result[5, 1] <- c
result[6, 1] <- b
result[7, 1] <- d
result[1, 2] <- Prob_abc
result[2, 2] <- Prob_ab
result[3, 2] <- Prob_bc
result[4, 2] <- Prob_a
result[5, 2] <- Prob_c
result[6, 2] <- NA
result[7, 2] <- NA
colnames(result) <- c("Estimate", "p-value")
rownames(result) <- c("[abc]", "[ab]", "[bc]", "[a]", "[c]", "[b]", "[d]")
return(result)
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.