I'm trying to wrap my head around how to interpret the results of CCA. I've got a fairly deep understanding of OLS regression, and I've read a lot of helpful CCA explainers like this one by @ttnphns. However, I'm still struggling with one particular aspect of the logic of what one apparently does with the CCA results. I'll unpack below, using terminology from the R package CCA to refer to different elements.

In particular, I understand that the math of CCA treats X and Y identically, i.e., this is correlation, not regression. But, in a situation where Y is logically downstream of X, and where Y comprises multiple theoretically independent outcomes, the idea of using the ycoefs, which are essentially regression coefficients specifying the linear combination of ys that produce a given yscore, and which, like OLS regression, reflect the joint influence of the given y and all the other ys, doesn't make sense to me.

Again, I understand the math of how a given yscore is derived, and how that is reflected in the ycoefs. What I don't like is the idea of reporting how the various ys 'contributed to' constructing this synthetic latent variable in a regression sense, because in reality, all the ys arose independently—or, more in keeping with the logic of CCA, they were all driven by some set of latent variables.

What makes sense to me would be to report the xcoefs alongside the corr.Y.yscores, that is, the coefficients for how each x relates to a given xscore, and the loadings of each y on the corresponding yscore. In a sense, because each yscore is calculated in a way that accounts for all ys, the loading of a given y on a given yscore already contains information about the joint influence of that y alongside all the other ys.

The other wrinkle here is the cross-loadings, i.e., corr.X.yscores and corr.Y.xscores. I can imagine looking at corr.X.yscores, that is, the cross-loading of the X variables on each yscore, alongside the Y loadings, to get a causal understanding of the interrelationships (that is, as an alternative to the above, mixing xcoefs with the Y loadings), but I'm less convinced that that makes sense, more or less precisely because it doesn't account for the joint influence of all of the X variables in the way that the xcoefs do.

Example results

To make all of this a bit more concrete, here are some CCA results. I've got five X variables: Valence, Attention, Reactance, Memory, and Credibility, and five Y variables: Belonging, GovernmentTrust, Intention, DonatedAmount, and Petitition. Very briefly, people are watching videos designed to affect civic attitudes and behaviors, and we have measures of the cognitive and emotional processes evoked by those videos, along with those attitudes and behaviors. A grossly oversimplified, but good enough for these purposes, theoretical model would say that all of those X processes are evoked by the videos roughly simultaneously and independently (in the neural, not statistical, sense), and lead to the roughly independent Y outcomes.

Unsurprisingly, variables within X and Y are strongly correlated:

> cor(X)
Val        Att       Reac         Mem       Cred
Val   1.00000000  0.6944754 -0.5855827 -0.07741477  0.6173354
Att   0.69447543  1.0000000 -0.5355258 -0.12540078  0.8046387
Reac -0.58558269 -0.5355258  1.0000000  0.23206895 -0.7537869
Mem  -0.07741477 -0.1254008  0.2320690  1.00000000 -0.2560711
Cred  0.61733544  0.8046387 -0.7537869 -0.25607108  1.0000000
> cor(Y)
Belong  GovTrust    Intent    Donate     Petit
Belong   1.0000000 0.8850782 0.8711101 0.5380188 0.5216873
GovTrust 0.8850782 1.0000000 0.8733166 0.5410220 0.4790638
Intent   0.8711101 0.8733166 1.0000000 0.6456944 0.6553707
Donate   0.5380188 0.5410220 0.6456944 1.0000000 0.6766341
Petit    0.5216873 0.4790638 0.6553707 0.6766341 1.0000000


The canonical coefficients look like this (standardized for comparability):

> sX %*% cc1$xcoef [,1] [,2] [,3] [,4] [,5] Val 0.9176401 -0.13247941 -0.5219492 0.05782512 1.0556544 Att -0.2799927 0.31227055 0.1527990 1.59206208 -1.0665668 Reac 1.1499297 0.05567097 1.0843323 -0.29378942 0.3823064 Mem -0.6465517 -0.21244350 0.4343226 0.20561092 0.6359141 Cred 0.2364174 0.78268081 1.1141411 -1.54444993 0.8824901 > sY %*% cc1$ycoef
[,1]       [,2]        [,3]       [,4]         [,5]
Belong   -1.3895527  0.3820826 -1.70499039  0.6491265 -0.534639666
GovTrust -0.6988248 -1.0903387  1.36186780 -0.7034744  1.436932238
Intent    2.0947065  1.6494701 -0.07021896 -0.3707711 -0.005935978
Donate   -0.3353488  0.3181364  0.77140283  1.1164972 -0.284987733
Petit     0.2998847 -1.3448159 -0.57437068  0.0695898  0.296802850


> cc1$$scores[3:6]$$corr.X.xscores
[,1]       [,2]        [,3]        [,4]        [,5]
Val   0.24581469  0.5514077 -0.39662442  0.36615011  0.58664114
Att   0.01277755  0.8468694  0.05164687  0.52104411  0.09216574
Reac  0.43426588 -0.6732564  0.56911672  0.03166090 -0.18232597
Mem  -0.47615599 -0.4288490  0.42190857  0.32879813  0.55068044
Cred -0.12362245  0.9645981 -0.01370151 -0.05891412  0.22496523

$corr.Y.xscores [,1] [,2] [,3] [,4] [,5] Belong -0.05749260 0.07563841 -0.09272842 0.03313814 0.009171644 GovTrust -0.03802225 0.05055149 -0.01380681 0.01796878 0.011835707 Intent 0.07042491 0.08280543 -0.05089033 0.03375533 0.009924827 Donate 0.02618289 0.02078827 0.03266592 0.08688788 0.005023762 Petit 0.10706576 -0.08687193 -0.06984277 0.05680335 0.006371386$corr.X.yscores
[,1]       [,2]         [,3]         [,4]         [,5]
Val   0.068165987  0.1289231 -0.082571530  0.035632915  0.007335365
Att   0.003543296  0.1980042  0.010752139  0.050706854  0.001152441
Reac  0.120424708 -0.1574122  0.118481960  0.003081168 -0.002279805
Mem  -0.132041104 -0.1002680  0.087835329  0.031997903  0.006885712
Cred -0.034281295  0.2255300 -0.002852459 -0.005733391  0.002812967

$corr.Y.yscores [,1] [,2] [,3] [,4] [,5] Belong -0.20732517 0.32350757 -0.4454120 0.3405148 0.7334964 GovTrust -0.13711279 0.21621012 -0.0663197 0.1846402 0.9465532 Intent 0.25396065 0.35416113 -0.2444468 0.3468568 0.7937317 Donate 0.09441862 0.08891201 0.1569076 0.8928264 0.4017721 Petit 0.38609191 -0.37155369 -0.3354830 0.5836894 0.5095476  Finally, the canonical correlations themselves; the first three are significant (not shown here): > cc1$cor
[1] 0.27730640 0.23380722 0.20818570 0.09731778 0.01250401