plfd {PLFD}R Documentation

PLFD

Description

A portmanteau local feature discrimination (PLFD) approach to the classification with high-dimensional matrix-variate data.

Usage

plfd(x, y, r0, c0, blockList, blockMode = NULL, permNum = 100, alpha = 0)

Arguments

x

Array of \(r \times c \times n\).

y

Vector of length-\(n\) with values 1 or 2.

r0, c0

Row and column size of blocks. See details.

blockList

List including the index set of pre-specified blocks. See details.

blockMode

How the differential structure of \(M_1 - M_2\) are detected. The default (blockMode=NULL) does NOT detect the structure of feature blocks. If blockMode="fd"(or "forward"), a forward stepwise procedure is conducted to detect the nonzero positions of feature blocks, wherein BIC serves as the stopping rule.

permNum

Rounds of permutation.

alpha

The upper-\(\alpha\) quantile of the permutation statistic.

Details

There are two ways to specify the blocks under consideration. In the case that the matrix-variate is partition into non-overlapping blocks that share the common row size and column size, these sizes can be specified by r0 and c0. Otherwise, the blocks can be flexibly specified by parameter blockList, which should be a list in which each element includes rIdx and cIdx corresponding to the row and column index set of a block. See examples.

Value

List.

References

Xu Z., Luo S. and Chen Z. (2021). A Portmanteau Local Feature Discrimination Approach to the Classification with High-dimensional Matrix-variate Data. Sankhya A. doi:10.1007/s13171-021-00255-2

Examples

set.seed(2023)
rDim <- 20
cDim <- 20

n <- 100
y <- sample(1:2, n, TRUE, c(0.5, 0.5))
x <- array(rnorm(rDim*cDim*n), dim=c(rDim, cDim, n))
x[, , y==2] <- (x[, , y==2] + 1.0)

ntest <- 200
ytest <- sample(1:2, ntest, TRUE, c(0.5, 0.5))
xtest <- array(rnorm(rDim*cDim*ntest), dim=c(rDim, cDim, ntest))
xtest[, , ytest==2] <- (xtest[, , ytest==2] + 1.0)

## Uniform partition
print( plfd(x, y, r0=5, c0=5) )

## Pre-specify feature blocks
blockList <- list(list(rIdx=1:5, cIdx=1:5), 
                  list(rIdx=6:10, cIdx=1:5), 
                  list(rIdx=3:9, cIdx=2:8))
print( plfd.model <- plfd(x, y, blockList=blockList) )

## Predict
predict(plfd.model, xtest, ytest)


[Package PLFD version 0.2.0 Index]