As per the question, I want to run a regression of variables where those variables are nested within each other and therefore highly correlated. Here is my specific example for context:
I study the effects of
Extraversion on various outcomes. Theoretically,
Extraversion (a personality trait) is itself made up of two lower-level 'personality aspects', being
Extraversion being made up of these two lower-level traits, it is still possible for
Extraversion to explain additional variance in an
Outcome over and above the individual effects of
Enthusiasm. 20 items (questions on a questionnnaire) are typically used to measured all three constructs (10 for
Assertiveness, 10 for
Enthusiasm, and the full 20 for
Extraversion). The variables are therefore highly correlated (usually > 0.70).
I would like to know how to correctly run a regression to best figure out what the contribution is of each of these three traits, given that they are necessarily highly correlated.
Some made-up data in the form of a correlation matrix to illustrate:
#Correlation matrix. MyMatrix <- matrix( c(1.0, 0.7, 0.8, 0.3, 0.7, 1.0, 0.6, 0.4, 0.8, 0.6, 1.0, 0.4, 0.3, 0.4, 0.4, 1.0), nrow=4, ncol=4) rownames(MyMatrix) <- colnames(MyMatrix) <- c("Extraversion", "Assertiveness","Enthusiasm","Outcome") #Assume means and standard deviations as follows: MEAN.Extraversion <- 4.00 MEAN.Assertiveness <- 3.90 MEAN.Enthusiasm <- 4.10 MEAN.Outcome <- 5.00 SD.Extraversion <- 1.01 SD.Assertiveness <- 0.95 SD.Enthusiasm <- 0.99 SD.Outcome <- 2.20 s <- c(SD.Extraversion, SD.Assertiveness, SD.Enthusiasm, SD.Outcome) m <- c(MEAN.Extraversion, MEAN.Assertiveness, MEAN.Enthusiasm, MEAN.Outcome) #Convert to covariance matrix. cov.mat <- diag(s) %*% MyMatrix %*% diag(s) rownames(cov.mat) <- colnames(cov.mat) <- rownames(MyMatrix) names(m) <- rownames(MyMatrix) #Run model. library(lavaan) m1 <- 'Outcome ~ Extraversion + Assertiveness + Enthusiasm' fit <- sem(m1, sample.cov=cov.mat, sample.nobs=300, sample.mean=m, meanstructure=TRUE) summary(fit, standardize=TRUE)