# reindexMatricesByK: Used for calculation of low dimensional standard errors &... In bootSVD: Fast, Exact Bootstrap Principal Component Analysis for High Dimensional Data

## Description

This function is used as a precursor step for calculate bootstrap standard errors, or percentiles. For very high dimensional data, we recommend that the this function be applied to the low dimensional components A^b, but the function can also be used to reorder a list of high dimensional bootstrap PCs. It can equivalently be used to reorder a list of scores. In general, we recommend that as many operations as possible be applied to the low dimensional components, as opposed to their high dimensional counterparts. This function is called by `getMomentsAndMomentCI`.

## Usage

 `1` ```reindexMatricesByK(matricesByB, pattern) ```

## Arguments

 `matricesByB` a `B`-length list of (`r` by `K`) matrices from each bootstrap sample. If the list elements have class `ff`, the returned matrices will also have class `ff`. `pattern` (optional) passed to `ff`.

## Value

a `K`-length list of (B by r) matrices. If elements of `matricesByB` have class `ff`, then the returned, reordered matrices will also have class `ff`.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46``` ```#use small n, small B, for a quick illustration set.seed(0) Y<-simEEG(n=100, centered=TRUE, wide=TRUE) svdY<-fastSVD(Y) V<- svdY\$v #original sample PCs DUt<- tcrossprod(diag(svdY\$d),svdY\$u) bInds<-genBootIndeces(B=50,n=dim(DUt)) bootSVD_LD_output<-bootSVD_LD(DUt=DUt,bInds=bInds,K=3,verbose=interactive()) ######## # to get 'low dimensional PC' moments and lower percentiles AsByB<-bootSVD_LD_output\$As AsByK<-reindexMatricesByK(AsByB) meanA1<- apply(AsByK[],2,mean) seA1<- apply(AsByK[],2,sd) pA1<- apply(AsByK[],2,function(x) quantile(x,.05)) #can also use lapply to get a list (indexed by k=1,...K) of #the means, standard errors, or percentiles for each PC. #See example below, for high dimensional bootstrap PCs. #Alternatively, moments can be calculated with seA1_v2<- getMomentsAndMomentCI(As=AsByK, V=diag(dim(AsByK[])))\$sdPCs[] all(seA1_v2==seA1) #Additional examples of exploring the low dimensional bootstrap #PC distribution are given in the documentation for #the 'bootSVD' function. ######### ######### #High dimensional percentiles for each PC VsByB<-As2Vs(As=AsByB,V=V) VsByK<-reindexMatricesByK(VsByB) percentileCI_Vs<-lapply(VsByK,function(mat_k){ apply(mat_k,2,function(x) quantile(x,c(.025,.975))) }) k=2 # the 2nd PC is a little more interesting here. matplot(t(percentileCI_Vs[[k]]),type='l',lty=1,col='blue') lines(V[,k]) ######## # Note: This function can also be used to reorganize the # high dimensional PCs. For 'ff' matrices, this will # create a new set of files on disk. ```

bootSVD documentation built on Feb. 2, 2021, 5:06 p.m.