| CCAI | R Documentation |
Correlation matrix, factor pattern matrix, and factor intercorrelations for the Climate Change Action Inventory (CCAI) (Barchard et al., 2021) Climate-Friendly Purchasing Choices domain, analyzed in Bi and Barchard (2024). The scale measures the frequency with which individuals make purchasing choices aimed at reducing climate change. Data were collected from 500 United States MTurk workers. After 15 climate change deniers and 24 multivariate outliers were removed, 461 participants remained. Climate change deniers were excluded because the scale measures behaviors intended to reduce climate change — including individuals who do not believe climate change exists would be inconsistent with the measure's intent.
The Climate Change Action Inventory contains eight domains; the Climate-Friendly Purchasing Choices domain analyzed here is one of them.
data(CCAI, package = "GPArotation")
Three objects are loaded by data(CCAI):
CCAI_R: a 14 \times 14 numeric
correlation matrix. Row and column names are item labels
CCAI1 through CCAI14, ordered by factor
to match CCAI_pattern.
CCAI_pattern: a 14 \times 3 numeric
matrix of factor pattern coefficients. Row names are item labels
CCAI1 through CCAI14, ordered by factor to
facilitate interpretation. Column names are factor labels
SustainableOptions, CollectiveAction, and
AvoidBuyingNew.
CCAI_Phi: a 3 \times 3 numeric matrix
of factor intercorrelations. Row and column names are the three
factor labels.
The CCAI Climate-Friendly Purchasing Choices domain consists of 14 items. Items used a nine-point frequency scale ranging from 1 (less than once a year) to 9 (at least 14 times a week). For full details on study design, data collection, analysis, and interpretation see Bi and Barchard (2024).
CCAI_R is the observed 14 \times 14 correlation
matrix for the 14 items of the Climate-Friendly Purchasing Choices domain.
The correlation matrix was kindly provided by the authors and has not been
published separately.
CCAI_pattern is a 14 \times 3 factor pattern matrix
from principal components extraction followed by direct oblimin rotation,
reported in Table 2 of Bi and Barchard (2024) (the Table is labeled
“Factor Structure” in the paper but contains pattern coefficients).
The three factors are: Choosing Sustainable Options (F1), Supporting
Collective Action (F2), and Avoiding Buying New (F3).
| Item | Description | F1 | F2 | F3 |
| CCAI8 | Choose products with less impact on climate change | .95 | .00 | -.02 |
| CCAI6 | Choose products with less packaging | .91 | -.04 | .01 |
| CCAI7 | Choose products made locally | .89 | -.09 | .07 |
| CCAI11 | Encourage others to choose climate-friendly products | .56 | .40 | .05 |
| CCAI12 | Problem solve to reduce impact of purchases | .52 | .44 | .04 |
| CCAI10 | Encourage others to buy less | .41 | .44 | .12 |
| CCAI14 | Give time/money to orgs reducing purchase impact | -.01 | .97 | -.02 |
| CCAI13 | Give time/money to orgs reducing purchases | .02 | .93 | .01 |
| CCAI5 | Donate to charity rather than buying a gift | -.02 | .78 | .20 |
| CCAI2 | Use borrowed/rented/digital rather than buying | -.02 | -.18 | .90 |
| CCAI4 | Buy used rather than new | .00 | .15 | .76 |
| CCAI1 | Repair rather than buying replacements | .03 | .06 | .76 |
| CCAI3 | Use borrowed/rented tools rather than buying | .10 | .21 | .62 |
| CCAI9 | Donate or sell old possessions | .22 | .27 | .46 |
CCAI_Phi is a 3 \times 3 factor intercorrelation
matrix. All three intercorrelations exceed 0.50.
| F1 | F2 | F3 | |
| Choosing Sustainable Options | 1.00 | 0.59 | 0.59 |
| Supporting Collective Action | 0.59 | 1.00 | 0.53 |
| Avoiding Buying New | 0.59 | 0.53 | 1.00 |
The CCAI Purchasing Choices domain illustrates the Tandem
criteria on highly correlated factors. Because the underlying
dimensions are strongly intercorrelated (\phi_{ij} > 0.50),
TandemI pulls shared variance into a single dominant general
factor (approximately 59 percent of total variance), alerting the
researcher to a unified behavioral core.
TandemII forces an orthogonal simple structure, but the
90-degree constraint creates an artificial compromise when true
dimensions are correlated — smearing loadings across factors.
Comparing TandemII to oblique Oblimin using the package
summary diagnostics (calc_AUC, calc_hyperplane)
provides empirical evidence that an oblique structure is
conceptually superior for these data.
See vignette("GPA3bifactor", package = "GPArotation") for a
bifactor analysis of these data.
The raw data are publicly available on the Open Science Framework. As the data are subject to a license, users should consult the OSF page for terms of use before using the raw data directly: https://osf.io/h38yb/overview.
Barchard, K.A., Okagawa, K., Hoffman, C.K., and Odents, O. (2021). Climate Change Action Inventory. Unpublished psychological test. Available from kim.barchard@unlv.edu.
Bi, Y. and Barchard, K.A. (2024). Purchasing choices that reduce climate change: An exploratory factor analysis. Spectra Undergraduate Research Journal, 3(2), 8–14. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.9741/2766-7227.1028")}.
rotations,
bifactorT,
eigen,
factanal,
Harman,
Thurstone,
WansbeekMeijer,
GriffithMulaik
data(CCAI, package = "GPArotation")
# Observed correlation matrix
round(CCAI_R, 2)
# Published pattern matrix and factor intercorrelations
round(CCAI_pattern, 2)
round(CCAI_Phi, 2)
# Reproduce published analysis: PCA extraction via eigendecomposition
# followed by oblimin rotation. No additional packages required.
# Gives the same result as psych::principal used by Bi and Barchard (2024).
ev <- eigen(CCAI_R)
k <- 3
L_unrotated <- ev$vectors[, 1:k] %*% diag(sqrt(ev$values[1:k]))
rownames(L_unrotated) <- colnames(CCAI_R)
res.ob <- oblimin(L_unrotated, randomStarts = 100)
# Sort and extract loadings for comparison
res_sorted <- GPArotation:::.sortGPALoadings(res.ob)
L_repro <- unclass(res_sorted$loadings)
# Compare reproduced vs published side by side, alternating by factor
comparison <- cbind(round(L_repro[, 1], 2), round(CCAI_pattern[, 1], 2),
round(L_repro[, 2], 2), round(CCAI_pattern[, 2], 2),
round(L_repro[, 3], 2), round(CCAI_pattern[, 3], 2))
colnames(comparison) <- c("F1.repro", "F1.pub",
"F2.repro", "F2.pub",
"F3.repro", "F3.pub")
print(comparison)
# --- Tandem criteria ---
# Stage 1: TandemI reveals factor redundancy structure.
# One dominant general factor (SS = 8.3, 59% variance) suggests
# highly correlated underlying constructs.
res.t1 <- tandemI(L_unrotated, randomStarts = 100)
print(res.t1)
# Stage 2: TandemII for simple structure (orthogonal constraint).
res.t2 <- tandemII(L_unrotated, randomStarts = 100)
summary(res.t2)
# For heavily correlated constructs, oblique rotation achieves
# substantially cleaner simple structure than TandemII.
# Compare AUC and hyperplane counts across methods.
cat(" AUC Hyperplane\n")
cat("TandemII ",
round(GPArotation:::calc_AUC(res.t2)$AUC_mean, 3), " ",
sum(abs(unclass(res.t2$loadings)) < 0.1), "loadings\n")
cat("Oblimin ",
round(GPArotation:::calc_AUC(res.ob)$AUC_mean, 3), " ",
sum(abs(unclass(res.ob$loadings)) < 0.1), "loadings\n")
# Orthogonal bifactor rotation using MLE extraction
fa.un <- factanal(factors = 3, covmat = CCAI_R, n.obs = 461,
rotation = "none")
bif <- bifactorT(fa.un)
print(bif, sortLoadings = FALSE, digits = 3, cutoff = 0.05)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.