Skip to contents

Correlation matrix, factor pattern matrix, and factor intercorrelations for the Climate Change Action Inventory (CCAI) Climate-Friendly Purchasing Choices domain, from 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.

Usage

data(CCAI)

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). The Climate Change Action Inventory contains eight domains; the Climate-Friendly Purchasing Choices domain analyzed here is one of them.

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

See vignette("GPA3bifactor", package = "GPArotation") for a bifactor analysis of these data.

Note

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.

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. doi: 10.9741/2766-7227.1028.

Examples

  data(CCAI, package = "GPArotation")

  # Observed correlation matrix
  round(CCAI_R, 2)
#>        CCAI8 CCAI6 CCAI7 CCAI11 CCAI12 CCAI10 CCAI14 CCAI13 CCAI5 CCAI2 CCAI4
#> CCAI8   1.00  0.81  0.78   0.75   0.71   0.64   0.54   0.55  0.53  0.39  0.50
#> CCAI6   0.81  1.00  0.74   0.65   0.64   0.60   0.50   0.53  0.50  0.38  0.49
#> CCAI7   0.78  0.74  1.00   0.66   0.66   0.55   0.47   0.50  0.52  0.39  0.52
#> CCAI11  0.75  0.65  0.66   1.00   0.84   0.84   0.66   0.67  0.67  0.42  0.55
#> CCAI12  0.71  0.64  0.66   0.84   1.00   0.76   0.70   0.71  0.65  0.41  0.54
#> CCAI10  0.64  0.60  0.55   0.84   0.76   1.00   0.65   0.64  0.62  0.40  0.54
#> CCAI14  0.54  0.50  0.47   0.66   0.70   0.65   1.00   0.93  0.78  0.32  0.50
#> CCAI13  0.55  0.53  0.50   0.67   0.71   0.64   0.93   1.00  0.79  0.35  0.53
#> CCAI5   0.53  0.50  0.52   0.67   0.65   0.62   0.78   0.79  1.00  0.37  0.57
#> CCAI2   0.39  0.38  0.39   0.42   0.41   0.40   0.32   0.35  0.37  1.00  0.49
#> CCAI4   0.50  0.49  0.52   0.55   0.54   0.54   0.50   0.53  0.57  0.49  1.00
#> CCAI1   0.45  0.48  0.46   0.53   0.54   0.52   0.44   0.45  0.52  0.50  0.60
#> CCAI3   0.57  0.52  0.52   0.62   0.58   0.61   0.54   0.56  0.60  0.52  0.68
#> CCAI9   0.60  0.57  0.58   0.62   0.60   0.63   0.59   0.60  0.62  0.45  0.66
#>        CCAI1 CCAI3 CCAI9
#> CCAI8   0.45  0.57  0.60
#> CCAI6   0.48  0.52  0.57
#> CCAI7   0.46  0.52  0.58
#> CCAI11  0.53  0.62  0.62
#> CCAI12  0.54  0.58  0.60
#> CCAI10  0.52  0.61  0.63
#> CCAI14  0.44  0.54  0.59
#> CCAI13  0.45  0.56  0.60
#> CCAI5   0.52  0.60  0.62
#> CCAI2   0.50  0.52  0.45
#> CCAI4   0.60  0.68  0.66
#> CCAI1   1.00  0.55  0.58
#> CCAI3   0.55  1.00  0.59
#> CCAI9   0.58  0.59  1.00

  # Published pattern matrix and factor intercorrelations
  round(CCAI_pattern, 2)
#>        SustainableOptions CollectiveAction AvoidBuyingNew
#> CCAI8                0.95             0.00          -0.02
#> CCAI6                0.91            -0.04           0.01
#> CCAI7                0.89            -0.09           0.07
#> CCAI11               0.56             0.40           0.05
#> CCAI12               0.52             0.44           0.04
#> CCAI10               0.41             0.44           0.12
#> CCAI14              -0.01             0.97          -0.02
#> CCAI13               0.02             0.93           0.01
#> CCAI5               -0.02             0.78           0.20
#> CCAI2               -0.02            -0.18           0.90
#> CCAI4                0.00             0.15           0.76
#> CCAI1                0.03             0.06           0.76
#> CCAI3                0.10             0.21           0.62
#> CCAI9                0.22             0.27           0.46
  round(CCAI_Phi, 2)
#>                    SustainableOptions CollectiveAction AvoidBuyingNew
#> SustainableOptions               1.00             0.59           0.59
#> CollectiveAction                 0.59             1.00           0.53
#> AvoidBuyingNew                   0.59             0.53           1.00

  # Reproduce published analysis: PCA extraction via eigendecomposition
  # followed by direct oblimin rotation --- no additional packages 
  # required. This 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_oblimin <- oblimin(L_unrotated, randomStarts = 100)

  # print applies sorting --- capture the sorted result
  res_sorted  <- print(res_oblimin)
#> Oblique rotation method Oblimin Quartimin converged at lowest minimum.
#> Of 100 random starts 100% converged, 100% at the same lowest minimum.
#> Loadings at lowest minimum:
#>          [,1]   [,2]   [,3]
#> CCAI8   0.946  0.003 -0.020
#> CCAI6   0.912 -0.044  0.014
#> CCAI7   0.893 -0.089  0.074
#> CCAI11  0.565  0.399  0.055
#> CCAI12  0.524  0.442  0.038
#> CCAI10  0.408  0.442  0.123
#> CCAI14 -0.007  0.969 -0.025
#> CCAI13  0.016  0.930  0.014
#> CCAI5  -0.018  0.780  0.196
#> CCAI2  -0.021 -0.176  0.902
#> CCAI4   0.005  0.146  0.758
#> CCAI1   0.029  0.058  0.757
#> CCAI3   0.101  0.211  0.624
#> CCAI9   0.216  0.272  0.464
#> 
#>                 [,1]  [,2]  [,3]
#> SS loadings    3.892 3.756 3.084
#> Proportion Var 0.278 0.268 0.220
#> Cumulative Var 0.278 0.546 0.767
#> 
#> Phi:
#>       [,1]  [,2]  [,3]
#> [1,] 1.000 0.589 0.595
#> [2,] 0.589 1.000 0.534
#> [3,] 0.595 0.534 1.000
  L_repro <- loadings(res_sorted)

  # 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)
#>        F1.repro F1.pub F2.repro F2.pub F3.repro F3.pub
#> CCAI8      0.95   0.95     0.00   0.00    -0.02  -0.02
#> CCAI6      0.91   0.91    -0.04  -0.04     0.01   0.01
#> CCAI7      0.89   0.89    -0.09  -0.09     0.07   0.07
#> CCAI11     0.56   0.56     0.40   0.40     0.05   0.05
#> CCAI12     0.52   0.52     0.44   0.44     0.04   0.04
#> CCAI10     0.41   0.41     0.44   0.44     0.12   0.12
#> CCAI14    -0.01  -0.01     0.97   0.97    -0.02  -0.02
#> CCAI13     0.02   0.02     0.93   0.93     0.01   0.01
#> CCAI5     -0.02  -0.02     0.78   0.78     0.20   0.20
#> CCAI2     -0.02  -0.02    -0.18  -0.18     0.90   0.90
#> CCAI4      0.00   0.00     0.15   0.15     0.76   0.76
#> CCAI1      0.03   0.03     0.06   0.06     0.76   0.76
#> CCAI3      0.10   0.10     0.21   0.21     0.62   0.62
#> CCAI9      0.22   0.22     0.27   0.27     0.46   0.46

  # Orthogonal bifactor rotation on observed correlation matrix using MLE extraction
  fa_unrotated <- factanal(factors = 3, covmat = CCAI_R, n.obs = 461, 
                           rotation = "none")
  bif <- bifactorT(loadings(fa_unrotated))
  print(bif, sortLoadings = FALSE, digits = 3)
#> Orthogonal rotation method Bifactor Biquartimin converged.
#> Loadings:
#>        Factor1 Factor2 Factor3
#> CCAI8    0.849   0.386  -0.042
#> CCAI6    0.785   0.334  -0.005
#> CCAI7    0.760   0.346   0.065
#> CCAI11   0.854   0.096   0.121
#> CCAI12   0.853   0.028   0.080
#> CCAI10   0.788   0.017   0.177
#> CCAI14   0.843  -0.480  -0.055
#> CCAI13   0.850  -0.448  -0.019
#> CCAI5    0.772  -0.294   0.175
#> CCAI2    0.444   0.067   0.432
#> CCAI4    0.618  -0.018   0.545
#> CCAI1    0.561   0.023   0.479
#> CCAI3    0.672  -0.001   0.430
#> CCAI9    0.714  -0.001   0.344
#> 
#>                Factor1 Factor2 Factor3
#> SS loadings      7.877   0.913   1.109
#> Proportion Var   0.563   0.065   0.079
#> Cumulative Var   0.563   0.628   0.707