# builds a network based on correlation (default=spearman)
# return network and laplacian of the network
network_build <- function(data_train,p,corr) {
if(missing(p)) p=0;
if(missing(corr)) corr="plus";
cor.method = "spearman"
network_corr <- cor(data_train,method = cor.method)
num_sample = nrow(data_train) - 2 # degrees of freedom
# T-test w/ H0: correlation == 0; H1: correlation != 0
network_corr_t <-
network_corr / (sqrt(abs(1 - (network_corr ^ 2)) / (num_sample))) # t-stat for T-test
network_corr_t_p <-
2 * (1 - pt(abs(network_corr_t), num_sample)) # p-value for T-test
# FDR adjustment for multiple hypothesis testing
network_p <-
matrix(
p.adjust(network_corr_t_p, 'fdr'), # adjusted p-values (as a vector)
nrow = nrow(network_corr_t_p),
ncol = ncol(network_corr_t_p)
) # p-values as a matrix
# p-value filter
network <- network_corr
if(p>0){
network[network_p>min(p,max(network_p))] = 0
}
# correlation value filter
if(corr=='plus'){
network <- abs(network)
}
diag(network) <- 0
D = diag(colSums(network))
laplacian = D-network
return(list(network = network, laplacian = laplacian))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.