9,546 rated or chosen profiles from 1,591 respondents, in up to 3 tasks of 2 profiles varying on 6 attributes.
| Description | South African respondents (n=1,591) compared two hypothetical service-delivery protests (size, grievance, who is blamed, tactics, duration, police response) in 3 tasks, choosing for each pair the protest they sympathize with more, whose demands they support, that is more of a public disorder, and whose protesters are more deserving. |
|---|---|
| Reference | Koob, S. A., & Justesen, M. K. (2026). Fighting for a better life: Protests and public opinion in South Africa. Comparative Political Studies. |
| DOI | 10.1177/00104140261418611 |
| Licence | CC0 1.0 |
| Source data | https://doi.org/10.7910/DVN/A0C0IE |
These notes describe the source data, which the IRW reproduces as released. All notes are listed on the Data Notes page.
| Respondents | 1,591 |
|---|---|
| Rows (one per respondent, task and profile) | 9,546 |
| Tasks per respondent (most) | 3 |
| Profiles per task | 2 |
| Attributes | 6 |
| Topic | crime justice policing |
|---|---|
| A profile represents | scenario |
| Country | ZA |
| Language shown | en |
| Language of stored levels | en |
| Randomization restrictions | unknown |
| Task order | recorded in the deposit |
| Profile position | recorded in the deposit |
Outcomes:
| choice_deserving | Which of the two groups of protesters is more deserving? (paraphrase) [choice, forced] |
|---|---|
| choice_disorder | Which of the two protests is more of a public disorder? (paraphrase) [choice, forced] |
| choice_policy | Which of the two protests' policy demands do you support more? (paraphrase) [choice, forced] |
| choice_sympathy | Which of the two protests do you have more sympathy for? (paraphrase) [choice, forced] |
attr_blameattr_durationattr_grievanceattr_participantsattr_policeattr_tacticschoice_deservingchoice_disorderchoice_policychoice_sympathycov_q3_1_codecov_race_codecov_vignette_armidprofiletask
The layout (one row per respondent, task and profile; choice/rating outcomes; attr_ columns holding each attribute level as displayed) is defined in the IRW conjoint standard. What the outcomes asked is under Design above.
Or load it directly in R or Python (both need a free Redivis account; the first call opens a browser to sign in):
# R
install.packages("remotes")
remotes::install_github("itemresponsewarehouse/Rpkg")
library(irw)
df <- irw_fetch("koob_2026_protest_dimensions", source = "conj")
# Python
pip install irw
import irw
df = irw.fetch("koob_2026_protest_dimensions", source="conj")
@article{Koob_2026, title={Fighting for a Better Life: Protests and Public Opinion in South Africa}, ISSN={1552-3829}, url={http://dx.doi.org/10.1177/00104140261418611}, DOI={10.1177/00104140261418611}, journal={Comparative Political Studies}, publisher={SAGE Publications}, author={Koob, Sigrid Alexandra and Justesen, Mogens K.}, year={2026}, month=Jan }
| IRW version | v584 |
|---|---|
| Redivis dataset | irw_conjoint v4.2 |
| Redivis dataset DOI | 10.57761/qkye-q530 |
| Manifest pin for this IRW version | v4.2 |
| Metadata source | irw_meta v44.0 |