wikillm

Paper · 2022-09-14 · cs.LG, cs.CL

Out of One, Many: Using Language Models to Simulate Human Samples

Conditions GPT-3 on first-person demographic backstories to make "silicon samples" that stand in for survey respondents. Tested in US politics: judges called GPT-3 and human word lists human at the same rate (61%), vote choice matched ANES 2012-2020 (tetrachoric 0.90-0.94), and cross-item associations matched. Author-reported.

Distributional alignmentPrompt engineeringsilicon-samplingpersona-conditioningsurvey-simulationalgorithmic-fidelitysocial-sciencegpt-3

arXivPDFMarkdown10 min read

AI-compiled by claude-haiku-5-5 on 2026-10-19, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.

In plain words

Researchers who study people often run surveys, and surveys are slow and costly. The authors ask whether a large language model can answer survey questions the way a particular kind of person would, so that the model could be used as a stand-in for a group of people before real data is collected.

The trick is to describe a person first. The authors write a short first-person story about each respondent, with that respondent's age, party, church attendance and similar traits, and put it in front of the model. The model then continues the text, which is how it answers. They do this for thousands of real survey respondents and get a set of simulated people they call a "silicon sample."

They then check whether the simulated people behave like the real ones. The checks cover word choices, answers to survey questions, and how different answers relate to each other. In the study on US politics, the match is close enough that the authors suggest researchers could use such samples to try out ideas before they spend money on people. They also say the same method could be misused to target groups, and they ask for care in using it.

TL;DR

The paper defines "algorithmic fidelity" as how well a language model's answers match the patterns of a given human sub-population, and proposes four criteria to test it. It builds "silicon samples" by conditioning GPT-3 (Davinci, 175B) on first-person backstories taken from real respondents in ANES 2012, 2016 and 2020 and in the Pigeonholing Partisans data. Across three US-politics studies, the authors report close correspondence with human responses (author-reported). No official code was found, so the method must be rebuilt from the text.

Problem

Social scientists want to use language models as stand-ins for people. The authors say a model's average behaviour is not enough for this: one model can hold several patterns of opinion, and each must match a specific group §3. Two gaps follow. First, internet-trained models over-represent some groups, so their marginal answers are skewed §4. Second, a model's conditional answers for a chosen group may not match that group's real answers §3. The paper proposes that a model is only useful for social science once it passes four criteria: a social-science Turing test, backward continuity, forward continuity, and pattern correspondence §3. The authors state that they propose no numeric thresholds for the criteria; repeated support across data sources, measures and groups is their chosen standard §3.

Method

Algorithmic fidelity criteria §3. A model should:

  1. produce text that human judges cannot tell from human text (Turing test);
  2. produce text that reveals the input's attitudes and demographics (backward continuity);
  3. produce text that follows the form, tone and content of the input (forward continuity);
  4. reproduce the relationships between ideas, demographics and behaviour seen in human data (pattern correspondence).

Silicon sampling §4. Human samples are rarely representative of the internet population the model learned from. The authors take backstories from a nationally representative survey (ANES) and estimate the probabilities of interest conditioned on those backstories, rather than on the model's own unconditioned distribution §4. The paper argues this corrects the skew, using the conditional structure of the model §4. Whether it does so depends on the model's conditional distribution matching the human one, which is what the studies test §4.

Backstory conditioning §5, app. 2, app. 3, app. 4. Each respondent becomes one simulated subject. Template fragments are filled with that respondent's values and concatenated in a fixed order, so that the text reads as a first-person account. The three studies use different templates:

  • Study 1 (Pigeonholing Partisans): fragments in the order ideology, 7-point partisanship, race, gender, income, age. Missing fragments are omitted. Age maps to four phrases; income maps to four phrases app. 2.
  • Study 2 (ANES vote): ten ANES variables are turned into first-person phrases, including race, gender, age, ideology, party, political interest, church attendance, political discussion, flag patriotism and state. Patriotism and state were unavailable in 2020 app. 3.
  • Study 3 (ANES closed-ended items): a mock interview. Eleven answered items form the context, and the twelfth, the target, is placed last app. 4. Phrasing follows ANES wording where possible app. 4 (question-wording table, unnumbered).

The example template is shown in fig. 2 for Study 1 and in the Study 3 interview figure app. 4. The exact template wording of Study 1 is inside a figure and is not transcribed in the source text used for this card.

Generating responses. Study 1 and Study 3 sample text from the model. Study 2 reads probabilities only and does not sample app. 3.

Pseudocode
# Silicon vote probability for one respondent  [app. 3] [app. 1]
# Input:  backstory (str), token_sets (candidate -> list of tokens)
# Output: P(Republican) in [0, 1]

def silicon_vote_probability(backstory, token_sets):
    # Condition on the backstory and the vote sentence  [app. 3]
    prompt = backstory + " In 2016, I voted for"
    # Get the next-token log-probabilities for this context  [app. 1]
    log_probs = next_token_log_probs(prompt)
    # Sum probability over each candidate's token set  [app. 1]
    mass_republican = sum_token_probs(log_probs, token_sets["republican"])
    mass_democrat = sum_token_probs(log_probs, token_sets["democrat"])
    # Renormalise the two collapsed sets to sum to 1  [app. 1]
    return mass_republican / (mass_republican + mass_democrat)

Study 2 then codes the vote as Republican when the probability is above 0.50 and Democrat otherwise; no probability was exactly 0.50 §6 app. 3.

Pseudocode
# Interview-style response for one target item  [app. 4]
# Input:  respondent (dict of ANES values), target (item name), options
# Output: one of the options, or MISSING

def silicon_answer(respondent, target, options):
    # Build the mock interview from the other eleven items  [app. 4]
    context = interview_for(respondent, exclude=target)
    # Sample up to five tokens at temperature 0.7  [app. 4] [app. 1]
    completion = sample(context, max_tokens=5, temperature=0.7)
    # Normalise, then exact-match the allowed options  [app. 4]
    text = completion.strip().lower()
    return options.get(text, MISSING)

Study 1 pipeline §5, app. 2. Each silicon subject receives the template and generates 128 tokens. A regular expression extracts four words; where the regex fails, light manual correction was applied. If more than four were given, the first four were kept; if fewer, the rest were left blank app. 2. Lists were then rated by human evaluators on Lucid, without knowing the source.

Study 3 association analysis §7, app. 4. Cramér's V is computed for every pair of the 22 variables (the 11 items as inputs and as outputs), once on ANES data and once on the GPT-3 outputs paired with ANES inputs. Only complete cases are kept for each comparison. The R function CramerV from DescTools was used app. 4.

Hyperparameters

NameValueWhereNotes
ModelGPT-3 Davinci, 175B, OpenAI API§2 app. 1Ada, Curie and Babbage not tested app. 1
Temperature, Studies 1 and 30.7app. 1 app. 4Not tuned; the paper says a sweep is of interest app. 1
Temperature, Study 2not applicableapp. 3Only token probabilities are read
Other sampling settings, Studies 1 and 3API defaultsapp. 1Default values not listed
Max tokens, Study 1128app. 2
Max tokens, Study 35app. 4
Study 1 sample2,107 respondents with all five background fieldsapp. 2Partisanship, ethnicity, gender, income, age
Study 1 texts after culling3,592 human, 4,083 GPT-3, 7,675 totalapp. 2
Lucid evaluators2,873app. 28 content lists and 8 Turing lists each
Evaluations per text3 (120 texts coded twice, 7 coded four times)app. 2
Study 2 ANES respondents2012: 5,914; 2016: 4,270; 2020: 5,442app. 5One query each
Study 2 token setsRomney: romney, mitt, republican, conservative; Obama: obama, barack, democrat, democratic, liberal. 2016 Trump: trump, donald, republican, conservative; Clinton: clinton, hillary, rodham, senator, democrat, democratic, liberal. 2020 Trump and Biden: analogous setsapp. 3Case and spacing variants included; not tuned
Decision threshold0.50§6 app. 3Republican if above
Study 3 complete cases1,782 of 4,270 (2016 ANES)app. 4
Study 3 target factors12 (vote turnout and vote choice merged, so 11 unique items)app. 4Each target predicted in turn
Study 3 unique promptsmore than 50,000app. 4
Regression, Study 1OLS linear probability model, fixest in R; evaluator fixed effects; standard errors clustered by evaluator and listapp. 2Logit reported as not materially different app. 2
Income scale used in Study 1 regression11-point scale collapsed to 0–1app. 2

Results

Author-reported. The Study 1 setup is 7,675 short lists judged by Lucid evaluators. Studies 2 and 3 use ANES 2012, 2016 and 2020 respondents with one silicon subject each.

SettingMetricHumanGPT-3Source
Study 1, Turingshare of lists judged human61.7%61.2%§5 (p = 0.44)
Study 1, contentshare with traits mention72.3%66.5%§5 app. 2
Study 1, contentshare judged extreme39.8%41.0%§5
Study 1, partisanshipcorrect guess of writer's party60.1%52.8%§5 (chance 33%, p < .001)
Study 1, regressionGPT-3 source effect on correct guessreference−0.073 (SE 0.008)app. 2
Study 2, 2012mean P(Romney)0.4040.391§6
Study 2, 2016mean P(Trump)0.4770.432§6
Study 2, 2020mean P(Trump)0.4120.472§6
Study 2, 2012tetrachoric, whole sample—0.90tab. 1
Study 2, 2016tetrachoric, whole sample—0.92tab. 1
Study 2, 2020tetrachoric, whole sample—0.94tab. 1
Study 2, 2016tetrachoric, independents—0.41tab. 1
Study 2, 2020tetrachoric, independents—0.02tab. 1
Study 2, 2020Cohen's kappa, whole sample—0.77app. 3
Study 3mean Cramér's V difference (GPT-3 minus ANES), temp 0.7—−0.026§7 app. 4

Other numbers the paper reports:

  • Study 1, extremity and tone: the GPT-3 source effect is small on the content measures, with coefficients listed as −0.010 (positive), 0.013 (extreme), −0.058 (traits), 0.033 (issues), 0.078 (groups) app. 2.
  • Study 2, subgroups: 2016 tetrachoric values are 0.90 or higher for more than half of the listed groups. Independents are the weakest group §6 tab. 1.
  • Study 2, ablation (2016): no single backstory element carries all the signal; party is more predictive than ideology; adding state or political interest mildly hurt performance app. 3.
  • Study 2, model comparison: larger models do better on vote prediction; the 6B GPT-Neo model is said to rival GPT-3 app. 3.
  • Study 3, sampling: at temperature 0.001 the mean gap is 0.059, and every respondent was classed white, so race was dropped; at temperature 1.0 the mean gap is −0.031 app. 4.
  • Study 3, missing data: GPT-3 non-compliance is 22.6% for ideology and 23.8% for the 2016 vote; ANES missingness is 14.3% for education app. 4.
  • Costs (paid API, rate stated as $0.06 per 1,000 tokens): Study 1 $29; Study 2 $75 for 15,626 queries; Study 3 $119 per experiment and $1,428 for all twelve app. 5.

Paper vs code

No official code. The paper's data-availability line promising replication code is commented out in the LaTeX source (near the end of the file). Searches run on 2026-10-19: no link in the paper, the arXiv metadata, or the source; no project page; GitHub search for "algorithmic fidelity", "silicon sampling gpt-3", "pigeonholing partisans", "algorithmic fidelity gpt-3 argyle" and "silicon samples language model survey" returned no repository by the authors.

Pitfalls

  • Model access. The results depend on GPT-3 Davinci's log-probabilities and on the OpenAI completion API as it was in 2022. The paper does not say whether that model is still served. Any reproduction needs a model with equivalent token-probability access, and the numbers may not carry over.
  • Study 2 uses probabilities, Studies 1 and 3 use samples. Temperature has no effect on Study 2. Temperature 0.7 was chosen without tuning and only briefly varied in Study 3 app. 1 app. 4.
  • Token-set collapsing is manual. The sets were chosen to catch common cases and were not tuned app. 3. Results depend on them: the 2012 and 2016 sets include party and ideology words, not just candidate names app. 3.
  • Missing data handling. Invalid or non-compliant completions are coded missing and the analysis keeps only complete cases app. 4. In Study 3 that is 1,782 of 4,270 respondents, and GPT-3 misses vary from 0.4% to 23.8% by item app. 4.
  • Individual-level matching is not tested. The authors compare distributions, not person-by-person answers app. 4. A reimplementation that checks each simulated respondent against their source will see low agreement by design.
  • Study 3 counts are inconsistent in the text. The main text says eleven survey questions condition the model and the twelfth is predicted §7. The appendix says twelve variables, with turnout and vote choice merged into one metric, so eleven unique items app. 4. The appendix also reports 4,270 queries per experiment, but only 1,782 complete cases enter the analysis app. 4.
  • Study 2 varies by year. Patriotism and state are not available in 2020, so the 2020 silicon subjects were conditioned on fewer variables app. 3. Comparing years is therefore not like-for-like.
  • Study 1 uses a survey platform. Evaluator pay, attention checks and exclusion rules are not stated in the source. Evaluators saw some lists that were "generated by a computer model" and were asked to guess which ones; the paper reports that roughly 40% of both kinds were guessed as computer-made §5.
  • Length mismatch. GPT-3 lists are longer on average than human lists (7.78 vs 4.54 words) and include more phrases app. 2. Evaluators saw these lists as they were, so the content comparisons include this difference.
  • Costs in the source. The cost appendix gives "1,1471" queries for Study 1 and "20112" for the 2012 wave; the text elsewhere gives 2,107 Study 1 respondents and the 2012 wave as 5,914 app. 2 app. 5. Treat the cost appendix's query counts as typographical until checked against the data.
  • Ethics. The authors name misuse risks (targeting groups for misinformation or manipulation) and ask for transparent research practice §9. The card records that statement only; it does not add guidance beyond the paper.

Lineage

  • Builds on: GPT-3, Brown et al. 2020, cited as the model used §2.
  • Uses data from: ANES 2012, 2016 and 2020 §1 app. 3; the Pigeonholing Partisans survey, Rothschild et al. §5 app. 2.
  • Compared against: other language models on vote prediction, including GPT-Neo and Jurassic app. 3.
  • Superseded by: not known from content on this wiki.

Source and license

Adapted from “Out of One, Many: Using Language Models to Simulate Human Samples” by Lisa P. Argyle, Ethan C. Busby, Nancy Fulda, Joshua Gubler, Christopher Rytting, David Wingate (arXiv:2209.06899), used under CC BY-SA 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. This page is licensed under CC BY-SA 4.0.