Romney: Classical Cultural Consensus Analysis

CRAN RStudio mirror downloads

Romney is an R package for classical cultural consensus analysis (CCA). It implements three models:

The basic idea of cultural consensus analysis is simple: if a group shares a common cultural model, then people who know more of that shared culture should agree with one another more often. From patterns of agreement alone, we can estimate:

Installation

install.packages("Romney")

To install the development version from GitHub:

# install.packages("pak")
pak::pak("wernerhertzog/Romney")

Version 0.1.1 is under development and has not yet been released on CRAN.

What Classical CCA Does

In the classical approach introduced by Romney, Weller, and Batchelder, we begin with a respondent-by-item matrix. Each row is a person and each column is a question, item, rating, or judgment. The analysis then:

  1. computes agreement among respondents
  2. extracts the main latent dimension of agreement
  3. interprets the first factor loading as cultural competence
  4. uses those competences to estimate an answer key appropriate to the model

When there is one dominant shared cultural model, the first factor should be much stronger than the second, and first-factor competences should mostly be positive.

The Three Models

1. Formal Model

Use the formal model when each item has a discrete set of possible answers and respondents choose one answer per item.

Examples:

For two respondents \(i\) and \(j\), let \(p_{ij}\) be the proportion of items on which they gave the same answer, and let \(m\) be the number of possible response options. The formal model uses a guessing-corrected agreement score:

\[ a_{ij} = \frac{m p_{ij} - 1}{m - 1} \]

The model assumes that respondents either know an answer or guess uniformly among the possible options. It uses estimated competence to calculate the probability of each answer and select the most probable cultural answer key.

2. Informal Model

Use the informal model when responses are ordered or numeric rather than categorically correct/incorrect.

Examples:

Here, agreement is not about exact matches in categories. Instead, it is about whether respondents vary together across items. Agreement is measured by Pearson correlation between respondents:

\[ a_{ij} = \mathrm{cor}(x_i, x_j) \]

where \(x_i\) and \(x_j\) are the vectors of responses given by respondents \(i\) and \(j\).

In plain language: if two people place items in a similar order, or give similarly high and low ratings across items, they are in stronger consensus.

The estimated cultural answer key is the competence-weighted mean response for each item. Here, competence measures agreement with the shared response pattern rather than the probability of knowing an answer.

3. Covariance Model

Use the covariance model when the data are binary yes/no or true/false and you want the classical binary covariance procedure used in UCINET.

Examples:

For each pair of respondents, the binary data can be summarized in a \(2 \times 2\) table with counts \(n_{11}\), \(n_{10}\), \(n_{01}\), and \(n_{00}\). The covariance model uses a covariance-style agreement score:

\[ a_{ij} = \frac{n_{11} n_{00} - n_{10} n_{01}} {n (n - 1)\pi(1-\pi)} \]

where \(n\) is the number of jointly observed items used for that pair and \(\pi\) is the assumed proportion of “yes” or “true” items in the cultural answer key. The default is 0.5.

Unlike exact-match agreement, covariance takes account of each respondent’s tendency to say yes or no. The answer key is estimated by a competence-weighted vote for each item.

How To Read The Output

The main outputs of classical consensus analysis are:

A common rule of thumb is that a strong one-culture solution has:

These are guidelines, not proof of a single shared culture. Interpretation also depends on the cultural domain and the study’s ethnographic context.

The factor statistics are sums of squared loadings, called “eigenvalues” in UCINET. They are distinct from the eigenvalues of the original agreement matrix.

UCINET Reproduction

On the three included synthetic datasets, Romney closely reproduces the classical consensus results from UCINET 6.832. Agreement matrices match at its printed precision, categorical answer keys match exactly, and ordinal answer estimates differ by less than 0.001. Small differences remain in competence estimates and factor statistics.

The repository includes the CSV datasets, original UCINET logs, and scripts for repeating the comparisons. See the validation report for the full results and methodology.

The models follow the classical consensus framework also implemented in ANTHROPAC.

Minimal Example

library(Romney)

x <- simulate_consensus_data(
  n_respondents = 20,
  n_questions = 40,
  n_answers = 4,
  competence = 0.75,
  seed = 1
)

fit <- consensus(x$responses, method = "formal", answer_levels = 1:4)

print(fit)
fit$competence[1:5, 1]
fit$answer_key$key[1:10]

See the methods vignette for details on the models, assumptions, and diagnostics. Use citation("Romney") for the package citation.

References