reindexMatricesByK {bootSVD} | R Documentation |
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
.
reindexMatricesByK(matricesByB, pattern)
matricesByB |
a |
pattern |
(optional) passed to |
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
.
#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)[2]) 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[[1]],2,mean) seA1<- apply(AsByK[[1]],2,sd) pA1<- apply(AsByK[[1]],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[[1]])[2]))$sdPCs[[1]] 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.