Learn R Programming

NAC (version 0.1.0)

Cov_based: Covariates-based Spectral Clustering.

Description

Covariates-based Spectral Clustering is a spectral clustering method that focuses solely on the covariates structure, i.e., the \(XX^{\prime}\) where \(X\) is the covariates matrix, as introduced in Lee et al. (2010).

Usage

Cov_based(Covariate, K, itermax = 100, startn = 10)

Value

estall

A factor indicating nodes' labels. Items sharing the same label are in the same community.

Arguments

Covariate

An \(n \times p\) covariate matrix. The rows correspond to nodes and the columns correspond to covariates.

K

A positive integer which is no larger than \(n\). This is the predefined number of communities.

itermax

k-means parameter, indicating the maximum number of iterations allowed. The default value is 100.

startn

k-means parameter. The number of times the algorithm should be run with different initial centroids. The default value is 10.

References

Lee, A. B., Luca, D., Klei, L., Devlin, B., & Roeder, K. (2010). Discovering genetic ancestry using spectral graph theory. Genetic Epidemiology: The Official Publication of the International Genetic Epidemiology Society, 34(1), 51-59.
tools:::Rd_expr_doi("10.1002/gepi.20434")

Examples

Run this code

# Simulate the Covariate Matrix
n = 10; p = 5; K = 2; prob1 = 0.9;
set.seed(2022)
l = sample(1:K, n, replace=TRUE); # node labels
Pi = matrix(0, n, K) # label matrix
for (k in 1:K){
  Pi[l == k, k] = 1
}
Q = 0.1*matrix(sign(runif(p*K) - 0.5), nrow = p);
for(i in 1:K){
  Q[(i-1)*(p/K)+(1:(p/K)), i] = 0.3; #remark. has a change here
}
W = matrix(0, nrow = n, ncol = K);
for(jj in 1:n) {
  pp = rep(1/(K-1), K); pp[l[jj]] = 0;
  if(runif(1) <= prob1) {W[jj, 1:K] = Pi[jj, ];}
  else
  W[jj, sample(K, 1, prob = pp)] = 1;
  }
W = t(W)
D0 = Q %*% W
D = matrix(0, n, p)
for (i in 1:n){
  D[i,] = rnorm(p, mean = D0[,i], sd = 1);
}
Cov_based(D, 2)

Run the code above in your browser using DataLab