The goal of this project is to establish if children and adults can adjust their generalizations about a social group to account for sampling skew.
Adults failed to account for probabilistic skew that resulted in a skewed but still mixed sample (study 2a). However, adults showed evidence of accounting for deterministic skew that resulted in a uniform sample (study 2b). Here, we try to identify whether adults require skew to be deterministic and/or the sample to be all uniform to account for sampling skew.
Here, the agent’s preference was probabilistic, while the sample they chose ended up being entirely uniform (100% aligned with the agent’s preference). If adults require skew to be deterministic, they should fail. If adults require the sample to be uniform, they should succeed.
Adult participants passed all the checks, indicating that they knew what soccer and basketball balls were, that they knew Alex either had no preference (not skewed) or had a preference for one sport (skewed) among kids, and among Gorps.
In contrast to Study 2b, where adults successfully account for deterministic skew, adult participants here showed sensitivity to probabilistic skew that resulted in a uniform sample. Specifically:
Adults showed less generalization of the sample’s sport in the skewed condition than in the not skewed condition.
When comparing Alex’s Gorp friends and Gorps on Gorp Planet, there was no condition difference in forced-choice responses of who likes soccer more, although qualitatively it leans towards a condition effect in the predicted direction. (Note that an effect on this measure was not preregistered.)
This is interesting contrast to Study 2b, as the only difference is a single familiarization trial, making Alex’s preferences probabilistic (befriending soccer on 5 out of 6 trials) rather than deterministic (6 out of 6).
As a result, it appears that adults do account for (probabilistic) skewed sampling when it results in a uniform sample, such that the uniform sample acts as a cue that skewed sampling has contaminated the sample.
Data was collected from 399 adults recruited via Prolific on Mon 7/27/2026 as a standard sample. Participants were required to be in the United States, fluent in English, and have not participated in any previous studies in this project.
Participants were paid $2.25 for an estimated 9 minute task. In fact, the study generally took about 10.5 minutes for participants.
| condition | participants |
|---|---|
| not_skewed | 190 |
| skewed | 192 |
The final sample included 382 adults (n = 190-192 in each of the 2 conditions).
Participants were excluded if they failed the sound check or task check.
| Exclusion reasons | |||||
| n_collect | sound_check | check_task | n | n_excl | excl_rate |
|---|---|---|---|---|---|
| 399 | 3 | 14 | 382 | 17 | 4.26% |
| age | ||
| mean | sd | n |
|---|---|---|
| 42.36 | 14.20 | 382 |
| gender | n | prop |
|---|---|---|
| Female | 213 | 55.8% |
| Male | 165 | 43.2% |
| Non-binary | 2 | 0.5% |
| Prefer not to specify | 1 | 0.3% |
| Woman | 1 | 0.3% |
| race | n | prop |
|---|---|---|
| White, Caucasian, or European American | 238 | 62.3% |
| Black or African American | 66 | 17.3% |
| Hispanic or Latino/a | 20 | 5.2% |
| South or Southeast Asian | 16 | 4.2% |
| East Asian | 12 | 3.1% |
| White, Caucasian, or European American,Hispanic or Latino/a | 8 | 2.1% |
| White, Caucasian, or European American,Black or African American | 4 | 1.0% |
| Middle Eastern or North African | 3 | 0.8% |
| Prefer not to specify | 3 | 0.8% |
| White, Caucasian, or European American,Native American, American Indian, or Alaska Native | 3 | 0.8% |
| Black or African American,South or Southeast Asian | 1 | 0.3% |
| HUMAN RACE | 1 | 0.3% |
| Hispanic or Latino/a,Black or African American | 1 | 0.3% |
| Hispanic or Latino/a,Native American, American Indian, or Alaska Native | 1 | 0.3% |
| South or Southeast Asian,East Asian | 1 | 0.3% |
| White, Caucasian, or European American,East Asian | 1 | 0.3% |
| White, Caucasian, or European American,Middle Eastern or North African | 1 | 0.3% |
| White, Caucasian, or European American,Native American, American Indian, or Alaska Native,South or Southeast Asian | 1 | 0.3% |
| mixed | 1 | 0.3% |
| education | n | prop |
|---|---|---|
| Less than high school | 4 | 1.0% |
| High school/GED | 42 | 11.0% |
| Some college | 100 | 26.2% |
| Bachelor's (B.A., B.S.) | 151 | 39.5% |
| Master's (M.A., M.S.) | 68 | 17.8% |
| Doctoral (Ph.D., J.D., M.D.) | 15 | 3.9% |
| Prefer not to specify | 2 | 0.5% |
This study was administered as a Qualtrics survey, and approved by the NYU IRB (IRB-FY2024-9169).
After providing their consent, participants completed a captcha and sound check, and were asked to watch videos sound on. Participants then watched the following videos in order:
In the warmup phase, to confirm participants’ understanding of balls and sports, participants heard the narrator label a soccer ball and a basketball, and were asked to click on each.
In the alternate counterbalance version, the left/right position of soccer and basketball buttons was switched on this and all questions in the study.
In the familiarization phase, participants were introduced to an agent called Alex (depicted using a photograph of a white female child), and learned how Alex chooses friends by watching her make friends at a playground.
Each trial showed pictures of two children (pictures matched on race and gender; races and genders varied across trials), one holding a soccer ball and another holding a basketball. Children were unique to each trial.
In the **skewed condition**, Alex approached the child holding the soccer ball on 5 out of 6 trials, and approached the child holding the basketball on the remaining oddball trial. Trial order was randomized, such that the oddball trial always appeared in 2nd, 3rd, 4th, or 5th position.
In the **not skewed condition**, Alex approached children of each sport on 3 out of 6 trials. Sport selections alternated, with the first selection being randomized.
In the alternate counterbalance version, the position of children was fixed, while Alex's selections were switched, such that the skewed condition saw Alex approach mostly basketball.
After responding, participants in the skewed condition were told that Alex will probably choose the kid holding the soccer ball, because Alex likes soccer (or basketball, in the alternate counterbalance version). Participants in the not skewed condition were told, "it might be hard for Alex to choose, because Alex likes soccer *and* basketball".
Inference: prediction trials: As one of our dependent measures, participants were asked to predict the sport preferences of 4 novel Gorps (a brown, pink, purple, and teal Gorp in fixed order). These four trials were averaged into a prediction proportion for each participant.
For piloting purposes, participants were also asked how they decided their responses in the prediction task.
Inference: comparison forced-choice: As another dependent measure, adults were shown Alex’s Gorp friends again, and were asked to make a forced-choice comparison: Who liked soccer more? Alex’s Gorp friends, Gorps on Gorp Planet, or do they like soccer the same. In the counterbalanced version, this question asked about basketball.
For piloting purposes, participants were also asked how they decided their response to this question.
After labeling, all participants correctly identified a soccer ball and a basketball.
Both conditions largely passed the friends check.
Participants in the skewed condition understood Alex would befriend kids who prefered one sport (aligned with their counterbalance condition), while participants in the not skewed condition appeared more mixed.
All participants received information about the expected response after their response.
Participants were asked to recall that Alex met many kids at the park today, and to recall which sport more of the kids on the playground liked: basketball, soccer, or did they like them the same.
The correct answer to this question is “the same”, as every trial showed a basketball kid and a soccer kid.
Participants mostly answered this question correctly; participants who gave incorrect answers were still included. All participants received the correct answer after their response.
Both conditions largely passed the agent friends check.
Participants in the skewed condition understood Alex would befriend the Gorp who preferred one sport (aligned with their counterbalance condition), while participants in the not skewed condition appeared more mixed.
Participants were asked to predict the sport preferences (soccer or basketball) of 4 novel group members (a brown, pink, purple, and teal Gorp in fixed order).
First prediction trial:
glmer_infer_sport <-
glmer(infer_sport ~ condition + (1 | participant),
data = data_tidy,
family = binomial)
# condition difference?
glmer_infer_sport %>%
summary()
# set priors
priors <- c(
prior(normal(0, 1.5), class = "Intercept"), # centered prior for baseline log-odds
prior(normal(0, 1), class = "b"), # weakly informative prior
prior(student_t(3, 0, 1), class = "sd") # half-Student-t
)
# bayesian model
brm_infer_sport <-
brm(infer_sport ~ condition + (1 | participant),
data = data_tidy,
family = bernoulli(link = "logit"),
prior = priors,
save_pars = save_pars(all = TRUE))
## Running /Library/Frameworks/R.framework/Resources/bin/R CMD SHLIB foo.c
## using C compiler: ‘Apple clang version 17.0.0 (clang-1700.6.4.2)’
## using SDK: ‘MacOSX26.2.sdk’
## clang -arch arm64 -std=gnu2x -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/Rcpp/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/unsupported" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/BH/include" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/src/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppParallel/include/" -I"/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/rstan/include" -DEIGEN_NO_DEBUG -DBOOST_DISABLE_ASSERTS -DBOOST_PENDING_INTEGER_LOG2_HPP -DSTAN_THREADS -DUSE_STANC3 -DSTRICT_R_HEADERS -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION -D_HAS_AUTO_PTR_ETC=0 -include '/Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp' -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1 -I/opt/R/arm64/include -fPIC -falign-functions=64 -Wall -g -O2 -c foo.c -o foo.o
## In file included from <built-in>:1:
## In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp:22:
## In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Dense:1:
## In file included from /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/Core:19:
## /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/library/RcppEigen/include/Eigen/src/Core/util/Macros.h:679:10: fatal error: 'cmath' file not found
## 679 | #include <cmath>
## | ^~~~~~~
## 1 error generated.
## make: *** [foo.o] Error 1
##
## SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 1).
## Chain 1:
## Chain 1: Gradient evaluation took 5.6e-05 seconds
## Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 0.56 seconds.
## Chain 1: Adjust your expectations accordingly!
## Chain 1:
## Chain 1:
## Chain 1: Iteration: 1 / 2000 [ 0%] (Warmup)
## Chain 1: Iteration: 200 / 2000 [ 10%] (Warmup)
## Chain 1: Iteration: 400 / 2000 [ 20%] (Warmup)
## Chain 1: Iteration: 600 / 2000 [ 30%] (Warmup)
## Chain 1: Iteration: 800 / 2000 [ 40%] (Warmup)
## Chain 1: Iteration: 1000 / 2000 [ 50%] (Warmup)
## Chain 1: Iteration: 1001 / 2000 [ 50%] (Sampling)
## Chain 1: Iteration: 1200 / 2000 [ 60%] (Sampling)
## Chain 1: Iteration: 1400 / 2000 [ 70%] (Sampling)
## Chain 1: Iteration: 1600 / 2000 [ 80%] (Sampling)
## Chain 1: Iteration: 1800 / 2000 [ 90%] (Sampling)
## Chain 1: Iteration: 2000 / 2000 [100%] (Sampling)
## Chain 1:
## Chain 1: Elapsed Time: 0.145 seconds (Warm-up)
## Chain 1: 0.143 seconds (Sampling)
## Chain 1: 0.288 seconds (Total)
## Chain 1:
##
## SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 2).
## Chain 2:
## Chain 2: Gradient evaluation took 7e-06 seconds
## Chain 2: 1000 transitions using 10 leapfrog steps per transition would take 0.07 seconds.
## Chain 2: Adjust your expectations accordingly!
## Chain 2:
## Chain 2:
## Chain 2: Iteration: 1 / 2000 [ 0%] (Warmup)
## Chain 2: Iteration: 200 / 2000 [ 10%] (Warmup)
## Chain 2: Iteration: 400 / 2000 [ 20%] (Warmup)
## Chain 2: Iteration: 600 / 2000 [ 30%] (Warmup)
## Chain 2: Iteration: 800 / 2000 [ 40%] (Warmup)
## Chain 2: Iteration: 1000 / 2000 [ 50%] (Warmup)
## Chain 2: Iteration: 1001 / 2000 [ 50%] (Sampling)
## Chain 2: Iteration: 1200 / 2000 [ 60%] (Sampling)
## Chain 2: Iteration: 1400 / 2000 [ 70%] (Sampling)
## Chain 2: Iteration: 1600 / 2000 [ 80%] (Sampling)
## Chain 2: Iteration: 1800 / 2000 [ 90%] (Sampling)
## Chain 2: Iteration: 2000 / 2000 [100%] (Sampling)
## Chain 2:
## Chain 2: Elapsed Time: 0.14 seconds (Warm-up)
## Chain 2: 0.141 seconds (Sampling)
## Chain 2: 0.281 seconds (Total)
## Chain 2:
##
## SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 3).
## Chain 3:
## Chain 3: Gradient evaluation took 7e-06 seconds
## Chain 3: 1000 transitions using 10 leapfrog steps per transition would take 0.07 seconds.
## Chain 3: Adjust your expectations accordingly!
## Chain 3:
## Chain 3:
## Chain 3: Iteration: 1 / 2000 [ 0%] (Warmup)
## Chain 3: Iteration: 200 / 2000 [ 10%] (Warmup)
## Chain 3: Iteration: 400 / 2000 [ 20%] (Warmup)
## Chain 3: Iteration: 600 / 2000 [ 30%] (Warmup)
## Chain 3: Iteration: 800 / 2000 [ 40%] (Warmup)
## Chain 3: Iteration: 1000 / 2000 [ 50%] (Warmup)
## Chain 3: Iteration: 1001 / 2000 [ 50%] (Sampling)
## Chain 3: Iteration: 1200 / 2000 [ 60%] (Sampling)
## Chain 3: Iteration: 1400 / 2000 [ 70%] (Sampling)
## Chain 3: Iteration: 1600 / 2000 [ 80%] (Sampling)
## Chain 3: Iteration: 1800 / 2000 [ 90%] (Sampling)
## Chain 3: Iteration: 2000 / 2000 [100%] (Sampling)
## Chain 3:
## Chain 3: Elapsed Time: 0.138 seconds (Warm-up)
## Chain 3: 0.142 seconds (Sampling)
## Chain 3: 0.28 seconds (Total)
## Chain 3:
##
## SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 4).
## Chain 4:
## Chain 4: Gradient evaluation took 7e-06 seconds
## Chain 4: 1000 transitions using 10 leapfrog steps per transition would take 0.07 seconds.
## Chain 4: Adjust your expectations accordingly!
## Chain 4:
## Chain 4:
## Chain 4: Iteration: 1 / 2000 [ 0%] (Warmup)
## Chain 4: Iteration: 200 / 2000 [ 10%] (Warmup)
## Chain 4: Iteration: 400 / 2000 [ 20%] (Warmup)
## Chain 4: Iteration: 600 / 2000 [ 30%] (Warmup)
## Chain 4: Iteration: 800 / 2000 [ 40%] (Warmup)
## Chain 4: Iteration: 1000 / 2000 [ 50%] (Warmup)
## Chain 4: Iteration: 1001 / 2000 [ 50%] (Sampling)
## Chain 4: Iteration: 1200 / 2000 [ 60%] (Sampling)
## Chain 4: Iteration: 1400 / 2000 [ 70%] (Sampling)
## Chain 4: Iteration: 1600 / 2000 [ 80%] (Sampling)
## Chain 4: Iteration: 1800 / 2000 [ 90%] (Sampling)
## Chain 4: Iteration: 2000 / 2000 [100%] (Sampling)
## Chain 4:
## Chain 4: Elapsed Time: 0.137 seconds (Warm-up)
## Chain 4: 0.142 seconds (Sampling)
## Chain 4: 0.279 seconds (Total)
## Chain 4:
# set priors for null model
priors_null <- c(
prior(normal(0, 1.5), class = "Intercept"), # centered prior for baseline log-odds
prior(student_t(3, 0, 1), class = "sd") # half-Student-t
)
# null model
brm_infer_sport_null <-
brm(infer_sport ~ 1 + (1 | participant),
data = data_tidy, family = bernoulli(),
prior = priors_null,
save_pars = save_pars(all = TRUE))
# get bf
bayes_factor(brm_infer_sport, brm_infer_sport_null)
A Bayesian analysis shows strong evidence in favor of a condition effect (BF = 65).
Participants were shown Alex’s Gorp friends again, and were asked to infer whether Gorps on Gorp Planet liked the sample-majority sport “less”, “the same”, or “more” than Alex’s Gorp friends.
# multinomial regression: do responses differ by condition?
infer_comp_multinom <- data %>%
multinom(infer_comp ~ condition, data = .) %>%
Anova()
infer_comp_multinom
There was no evidence participants made different responses to the comparison forced-choice question depending on condition (LR Chisq(2) = 1.18, p = 0.555).
Participants’ responses to the comparison forced-choice question did not appear to be clearly related to their earlier responses to the prediction trials.
The comparison forced-choice asked who likes the sample-majority sport more: Alex’s Gorp friends, Gorps on Gorp Planet, or if they like it the same.
Since 8 out of 8 of Alex’s Gorp friends liked the sample-majority sport, matching the sample proportion would correspond with predictions of 1 (100%). As a result:
predictions of 0, 0.25, and 0.5, 0.75 should correspond with responding “Alex’s Gorp friends”
predictions of 1 should correspond with responding “the same”
## R version 4.5.2 (2025-10-31)
## Platform: aarch64-apple-darwin20
## Running under: macOS Tahoe 26.5.2
##
## Matrix products: default
## BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.5-arm64/Resources/lib/libRlapack.dylib; LAPACK version 3.12.1
##
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
##
## time zone: America/New_York
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] car_3.1-3 carData_3.0-5 nnet_7.3-20
## [4] tidybayes_3.0.7 broom.mixed_0.2.9.6 brms_2.23.0
## [7] Rcpp_1.1.2 lmerTest_3.2-0 lme4_2.0-6
## [10] Matrix_1.7-6 viridis_0.6.5 viridisLite_0.4.2
## [13] ggtext_0.1.2 lubridate_1.9.4 forcats_1.0.1
## [16] stringr_1.6.0 dplyr_1.1.4 purrr_1.2.1
## [19] readr_2.1.6 tidyr_1.3.2 tibble_3.3.1
## [22] ggplot2_4.0.3 tidyverse_2.0.0 gt_1.3.0
## [25] scales_1.4.0 janitor_2.2.1 here_1.0.2
## [28] knitr_1.51
##
## loaded via a namespace (and not attached):
## [1] RColorBrewer_1.1-3 tensorA_0.36.2.1 rstudioapi_0.18.0
## [4] jsonlite_2.0.0 magrittr_2.0.4 TH.data_1.1-5
## [7] estimability_1.5.1 farver_2.1.2 nloptr_2.2.1
## [10] rmarkdown_2.30 fs_1.6.6 ragg_1.5.0
## [13] vctrs_0.7.1 minqa_1.2.8 base64enc_0.1-3
## [16] htmltools_0.5.9 curl_7.0.0 distributional_0.6.0
## [19] broom_1.0.12 Formula_1.2-5 StanHeaders_2.32.10
## [22] sass_0.4.10 parallelly_1.46.1 bslib_0.10.0
## [25] htmlwidgets_1.6.4 sandwich_3.1-1 emmeans_2.0.1
## [28] zoo_1.8-15 cachem_1.1.0 lifecycle_1.0.5
## [31] pkgconfig_2.0.3 R6_2.6.1 fastmap_1.2.0
## [34] rbibutils_2.4.1 future_1.69.0 snakecase_0.11.1
## [37] digest_0.6.39 numDeriv_2016.8-1.1 colorspace_2.1-2
## [40] furrr_0.3.1 ps_1.9.1 rprojroot_2.1.1
## [43] textshaping_1.0.4 Hmisc_5.2-5 labeling_0.4.3
## [46] timechange_0.3.0 abind_1.4-8 compiler_4.5.2
## [49] bit64_4.6.0-1 withr_3.0.2 inline_0.3.21
## [52] htmlTable_2.4.3 S7_0.2.1 backports_1.5.0
## [55] QuickJSR_1.9.0 pkgbuild_1.4.8 MASS_7.3-65
## [58] loo_2.9.0 tools_4.5.2 foreign_0.8-90
## [61] otel_0.2.0 glue_1.8.0 callr_3.7.6
## [64] nlme_3.1-168 gridtext_0.1.5 grid_4.5.2
## [67] checkmate_2.3.3 cluster_2.1.8.1 generics_0.1.4
## [70] gtable_0.3.6 tzdb_0.5.0 data.table_1.18.0
## [73] hms_1.1.4 xml2_1.5.2 pillar_1.11.1
## [76] ggdist_3.3.3 vroom_1.6.7 posterior_1.6.1
## [79] splines_4.5.2 lattice_0.22-7 survival_3.8-6
## [82] bit_4.6.0 tidyselect_1.2.1 reformulas_0.4.3.1
## [85] arrayhelpers_1.1-2 gridExtra_2.3 V8_8.0.1
## [88] stats4_4.5.2 xfun_0.56 bridgesampling_1.2-1
## [91] matrixStats_1.5.0 rstan_2.32.7 stringi_1.8.7
## [94] yaml_2.3.12 boot_1.3-32 evaluate_1.0.5
## [97] codetools_0.2-20 cli_3.6.5 rpart_4.1.24
## [100] RcppParallel_5.1.11-1 xtable_1.8-4 systemfonts_1.3.1
## [103] Rdpack_2.6.5 processx_3.8.6 jquerylib_0.1.4
## [106] globals_0.18.0 coda_0.19-4.1 svUnit_1.0.8
## [109] parallel_4.5.2 rstantools_2.6.0 bayesplot_1.15.0
## [112] Brobdingnag_1.2-9 listenv_0.10.0 ggthemes_5.2.0
## [115] mvtnorm_1.3-3 crayon_1.5.3 rlang_1.1.7
## [118] multcomp_1.4-29