Predicting Effects, Missing Distributions: Evaluating Large Language Models as Human-Behavior Simulators in Operations Management
Supplemental Material
Description of Software and Data
The code and data in the zip file referenced above are a snapshot of the software and data that were used in the research reported in the paper "Predicting Effects, Missing Distributions: Evaluating LLMs as Human Behavior Simulators in Operations Management" by Runze Zhang, Xiaowei Zhang, and Mingyang Zhao.
The goal of this repository is to replicate the numerical experiments in the paper, including main-text Figures 1–12, electronic-companion Figures EC.1–EC.4, appendix distribution panels EC.5–EC.6, and Tables 1. The default Quick Start regenerates all reported displays from bundled analysis outputs under data/ without calling any LLM API. Optional generation/ scripts are included to re-query LLMs if desired.
Computer and Software Environment
The following describes the computer hardware conditions and software environment on which the authors produce the results reported in the paper.
- Hardware (this replication package was developed and the reported numerical displays were regenerated on the following server): OS — Ubuntu 24.04.2 LTS; CPU — 2× AMD EPYC 9754 128-Core Processor; GPU — 8× NVIDIA GeForce RTX 4090 D (24 GB each; used only for optional LLM re-generation under generation/, not required for Quick Start figure/table regeneration). Figure and table regeneration (run_reproduce_figures.py) is CPU-only and takes about 5 minutes on this machine; no GPU is required for that path.
- Software: Python 3.10+ (tested on 3.10 / 3.11 / 3.12), pip, and LaTeX (pdflatex) before running any figure script. Full system packages, Python deps, environment variables, and optional GPU/API setup are documented in requirements.md (README §1). Core packages (minimums in requirements.txt): numpy≥1.24, pandas≥2.0, scipy≥1.10, matplotlib≥3.7, seaborn≥0.13, statsmodels≥0.14, scikit-learn≥1.3, openpyxl≥3.1, pillow≥10.0. Optional for generation/Bayesian search: openai≥1.30, transformers≥4.40, safetensors≥0.4, huggingface-hub≥0.23, tqdm≥4.66, torch≥2.1, gpytorch≥1.11, botorch≥0.9.
Installation
Step-by-step installation and file structure:
- Unzip the archive and change to the package root. Run all commands from this directory.
- Install Python packages: pip install -r requirements.txt
- Install LaTeX (pdflatex) via your OS package manager (see requirements.md).
- File structure:
- README.md, LICENSE, requirements.txt, requirements.md (docs only)
- run_reproduce_figures.py — Quick Start (~5 min CPU; prints SUCCESS; logs under output/logs/regeneration/)
- run_reproduce_figures_from_raw.py — reproduce the figures and tables from raw LLM CSVs, then plot (logs under output/logs/from_raw/; no LLM API)
- analysis/ — config.py; figures/ (Code_Fig_*.py, Code_Table_*.py); wasserstein/; cot/; distribution/ (EC.5–EC.6 plotters); lib/
- data/ — human_data/; different_model_results/; with_probs/; figure_ec1/; tables/; semantic/; cot/; bo_results/; grid_search_results/; llm/; paper_figures/
- generation/ — optional LLM re-query (normal_generation/, sampling/, probability/, cot/, bayesian_experiments/, model_rescale/, shared/, env.example); requires GPU/API
- output/ — empty placeholder in the public release; regenerated figures go to output/figures/; optional new LLM CSVs to output/llm/
- Data layers (README): L1 raw LLM CSVs → L2 rollup tables → L3 plotting. Quick Start uses L2 where available; from-raw rebuilds L2 from L1 then runs L3.
- Quick Start: python run_reproduce_figures.py
Reproducibility Workflow
To reproduce the results in All main figures/tables (Quick Start)
- Data File: Bundled data under data/ (L2 rollups in tables/, semantic/, bo_results/, …; staged L1 as needed; paper_figures/ for archived PDFs)
- Code File:
run_reproduce_figures.py - Output: PDF/PNG/CSV/TeX under output/figures/ (Figs. 2–12, EC.1–4, Tables 1); logs in output/logs/regeneration/; prints SUCCESS
- Run Time at the Above-Specified Computer Conditions: ~5 minutes on a typical CPU
To reproduce the results in Figure 2
- Data File: data/tables/Data_Purchase_Rate_Models.csv
- Code File:
analysis/figures/Code_Fig_Purchase_Rate_Bootstrap.py - Output: Figure 2
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 3
- Data File: data/tables/Data_Wasserstein_Norm_Model_Detail.csv
- Code File:
analysis/figures/Code_Fig_Wasserstein_by_LLM.py - Output: Figure 3
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 4
- Data File: data/human_data/r8_cachon/; data/with_probs/r8_cachon/{deepseek_chat_1_1,gpt4_1_1,llama_1.0,qwen72_qwen32_1.0_1}.csv
- Code File:
analysis/figures/Code_Fig_LLM_vs_Human_Distribution_HighProfit.py - Output: Figure 4
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 5
- Data Files: data/tables/Data_Wasserstein_CoT_Normalized.csv; data/semantic/cot_gaussian_bias_variance_long.csv
- Code File:
analysis/figures/Code_Fig_CoT_Improvement_BiasVariance.py - Output: Figure 5
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 6
- Data Files: data/cot/normal_cot/r1_chen/with_cot/{O,C}_llama_1.0_with_cot.csv; data/cot/normal_cot/r1_chen/without_cot/{O,C}_llama_1.0_without_cot.csv
- Code File:
analysis/figures/Code_Fig_CoT_Chen_Order_Quantity.py - Output: Figure 6
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 7
- Data Files: data/tables/Data_CoT_Stage_Influence_Plot.csv (fallback: data/cot/Data_CoT_Stage_Influence_Summary.csv)
- Code File:
analysis/figures/Code_Fig_CoT_Stage_Influence.py - Output: Figure 7
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 8
- Data Files: data/semantic/llm_semantics_vs_wasserstein_and_mismatch/*.csv; data/semantic/distributional_mismatch_vs_language/entity_level_all_conditions.csv
- Code File:
analysis/figures/Code_Fig_CoT_Semantic_Correlation.py - Output: Figure 8
- Run Time at the Above-Specified Computer Conditions: ~1–2 minutes
To reproduce the results in Figure 9
- Data Files: data/tables/Data_Hypothesis_Plot_Input.csv (if missing, aggregates from data/grid_search_results/{study}/{top_p,min_p,top_k}/*.csv)
- Code File:
analysis/figures/Code_Fig_Temperature_Success_Rates.py - Output: Figure 9
- Run Time at the Above-Specified Computer Conditions: ~2–5 minutes
To reproduce the results in Figure 10
- Data Files: data/human_data/r8_cachon/; data/with_probs/r8_cachon/
- Code File:
analysis/figures/Code_Fig_Temperature_Distribution_HighProfit.py - Output: Figure 10
- Run Time at the Above-Specified Computer Conditions: ~1-2 minutes
To reproduce the results in Figure 11
- Data Files: data/tables/Data_Wasserstein_Qwen32_Normalized.csv; data/tables/Data_Wasserstein_Norm_Model_Detail.csv; data/bo_results/qwen32/all_results/Data_Tuning_qwen32_*.json
- Code File:
analysis/figures/Code_Fig_Qwen32_Tuned_Improvement.py - Output: Figure 11
- Run Time at the Above-Specified Computer Conditions: ~1-3 minutes
To reproduce the results in Figure 12
- Data Files: data/bo_results/qwen32/all_results/optimization_history_*.csv; data/tables/Data_Wasserstein_Qwen32_Normalized.csv (fallback if histories missing: data/tables/Data_Temperature_Sampling_Plot.csv)
- Code File:
analysis/figures/Code_Fig_Temperature_Sampling_Wasserstein.py - Output: Figure 12
- Run Time at the Above-Specified Computer Conditions: ~1-3 minutes
To reproduce the results in Figure EC.1
- Data Files: data/figure_ec1/base_gpt4_1_1.csv; data/figure_ec1/share_gpt4_1_1.csv
- Code File:
analysis/figures/Code_Fig_Croson_GPT4_Role_Variance.py - Output: Figure EC.1
- Run Time at the Above-Specified Computer Conditions: ~1-2 minutes
To reproduce the results in Figure EC.2
- Data Files: data/different_model_results/{model}/r5_ho_{qd,tpt}_*.csv
- Code File:
analysis/figures/Code_Fig_Ho_Zhang_Analysis.py - Output: Figure EC.2
- Run Time at the Above-Specified Computer Conditions: ~1-3 minutes
To reproduce the results in Figure EC.3
- Data Files: data/different_model_results/{model}/r9_ozer_*.csv; data/human_data/r9_ozer/OzerEtAl2011_{Cornell,Michigan}_Data.csv
- Code File:
analysis/figures/Code_Fig_Ozer_Supplier_Analysis.py - Output: Figure EC.3
- Run Time at the Above-Specified Computer Conditions: ~1-3 minutes
To reproduce the results in Figure EC.4
- Data Files: Same as EC.3
- Code File:
analysis/figures/Code_Fig_Ozer_Qwen72_Llama3_Scatter.py - Output: Figure EC.4
- Run Time at the Above-Specified Computer Conditions: ~1-2 minutes
To reproduce the results in Figures EC.5–EC.6 (24 Llama-70B distribution panels)
- Data Files: data/with_probs/{study}/ (*possibility*.csv + human refs)
- Code File:
analysis/distribution/{study}/prob_result_analysis_with_reference.py (r1–r9) - Output: Figures EC.5–EC.6 (24 Llama-70B distribution panels)
- Run Time at the Above-Specified Computer Conditions: ~3–4 minutes
To reproduce the results in Table 1
- Data Files: data/different_model_results/; data/tables/success_model.csv
- Code File:
analysis/figures/Code_Table_Hypothesis_Replication.py - Output: Table 1
- Run Time at the Above-Specified Computer Conditions: ~1-3 minutes
Cite
To cite the contents of this repository, please cite both the paper and this repository using their respective DOIs.
Article: https://doi.org/10.1287/ijds.2025.0124
Software and Data Repository: https://doi.org/10.1287/ijds.2025.0124.cd
License
Copyright (c) (Zhang, Zhang, Zhao)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

