Generates a new array \(\mathbf{X}'\) under the permutation null and then returns the \(V\) statistic computed for \(\mathbf{X}'\).

naiveBlockPermute1(X, block_labels, p)

Arguments

X

The \(N \times P\) binary or real matrix

block_labels

A vector of length \(P\), whose \(p\)th component indicates the block membership of feature \(p\)

p

The power \(p\) of \(l_p^p\), i.e., \(||x||_p^p = (x_1^p+...x_n^p)\)

Value

\(V(\mathbf{X}')\), where \(\mathbf{X}'\) is a resampled by permutation of entries blockwise

Details

This is Version 1, which takes in the block labels. It is suitable in the most general setting, where the features are grouped by labels. Given original \(\mathbf{X}\) and a list denoting labels of each feature, independently permutes the rows within each block of \(\mathbf{X}\) and returns resulting \(V\). If block labels are not specified, then features are assumed independent, which is to say that block_labels is set to 1:ncol(\(\mathbf{X}\)).

Dependencies: getBinVStat, getRealVStat

Examples

X <- matrix(nrow = 5, ncol = 10, rnorm(50)) # real matrix example
naiveBlockPermute1(X, block_labels = c(1,1,2,2,3,3,4,4,5,5), p = 2) # use Euclidean distance
#> [1] 10.29803

X <- matrix(nrow = 5, ncol = 10, rbinom(50, 1, 0.5)) # binary matrix example
naiveBlockPermute1(X, block_labels = c(1,1,2,2,3,3,4,4,5,5))
#> [1] 0.1288889