Learn R Programming

GPArotation (version 2026.8-1)

CCAI: The CCAI Climate-Friendly Purchasing Choices Domain

Description

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.

Usage

data(CCAI, package = "GPArotation")

Arguments

Format

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.

Details

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).

ItemDescriptionF1F2F3
CCAI8Choose products with less impact on climate change.95.00-.02
CCAI6Choose products with less packaging.91-.04.01
CCAI7Choose products made locally.89-.09.07
CCAI11Encourage others to choose climate-friendly products.56.40.05
CCAI12Problem solve to reduce impact of purchases.52.44.04
CCAI10Encourage others to buy less.41.44.12
CCAI14Give time/money to orgs reducing purchase impact-.01.97-.02
CCAI13Give time/money to orgs reducing purchases.02.93.01
CCAI5Donate to charity rather than buying a gift-.02.78.20
CCAI2Use borrowed/rented/digital rather than buying-.02-.18.90
CCAI4Buy used rather than new.00.15.76
CCAI1Repair rather than buying replacements.03.06.76
CCAI3Use borrowed/rented tools rather than buying.10.21.62
CCAI9Donate or sell old possessions.22.27.46

CCAI_Phi is a \(3 \times 3\) factor intercorrelation matrix. All three intercorrelations exceed 0.50.

F1F2F3
Choosing Sustainable Options1.000.590.59
Supporting Collective Action0.591.000.53
Avoiding Buying New0.590.531.00

The Tandem Paradigm on Correlated Data

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.

References

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. tools:::Rd_expr_doi("10.9741/2766-7227.1028").

See Also

rotations, bifactorT, eigen, factanal, Harman, Thurstone, WansbeekMeijer, GriffithMulaik

Examples

Run this code
  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)

Run the code above in your browser using DataLab