4
$\begingroup$

I would like to implement the method "Hierarchical PCA", as described in the following paper and compare it to a "standard" PCA. I like to do this in R

AVELLANEDA, Marco. Hierarchical pca and applications to portfolio management. Revista mexicana de economía y finanzas, 2020, 15. Jg., Nr. 1, S. 1-16.

My "standard" PCA is based on a T x n predictor matrix Predictors_train. Each of the predictors belongs to one of 5 "groups". I would use the following code:

pca_pred <- Predictors_train %>%
            prcomp(scale. = TRUE, center=TRUE) 

Now, implementing the method it seems I have to

  1. reestimate/adjust the correlation matrix
  2. estimate a new PCA based on the adjusted covariance matrix.

As for 2), it seems to be clear that I have to use prcomp() on the adjusted correlation matrix, e.g. in the following form

pca_pred <- AdjustedMatrix %>%
            prcomp(scale. = TRUE, center=TRUE) 

(Maybe I will not need the scaling, as I use a matrix as an input this time and not time series.

As for 1), the method in the paper suggests that I would a) calculate the standard correlation matrix b) use the results within the "blocks" of the predictors c) for elements of different blocks, use the simplified estimate beta_ibeta_jcorr(F_k(i), F_k(j)) , where the F_k()s are the first factors of PCA components within the blocks.

My approach would be to write all the low-level code myself (using some loops). But maybe there is an easier way to do this? In a sense, it seems to be a standard operation, but I cannot figure out the "generic" aspect that would help me to calculate the intra- and inter-block correlation efficiently.

Has anyone experienced similar problems?

$\endgroup$

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.