Implements classical cultural consensus analysis with
formal, informal, and covariance agreement models, 'UCINET'-aligned
minimum-residual factor extraction, competence estimation, and
answer-key estimation. Based on the classical framework of Romney,
Weller, and Batchelder (1986)
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:
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.
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:
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.
Use the formal model when each item has a discrete set of possible answers and respondents choose one answer per item.
Examples:
hot or coldFor 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.
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.
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.
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.
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.
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.