{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "04004fa1",
   "metadata": {},
   "source": [
    "# Cleaning & EDA — full PRCA cohort (File A/B/C)\n",
    "\n",
    "This notebook loads the **private** Prolific + Qualtrics exports from the sibling data folder (never committed):\n",
    "\n",
    "```text\n",
    "../sibling_data/PRCAProlificExport_FileA.csv\n",
    "../sibling_data/PRCAProlificExport_FileB.csv\n",
    "../sibling_data/PRCAQualtricsExport_FileC.csv\n",
    "```\n",
    "\n",
    "It cleans to an analytic sample, scores ground-truth PRCA subscales, and produces EDA tables that map onto the research questions:\n",
    "\n",
    "1. **RQ1 — Employment:** does employment status improve CA prediction over demographics alone?\n",
    "2. **RQ2 — Transit:** does transportation-use data improve prediction / get used sensibly?\n",
    "3. **RQ3 — Combined:** does employment + transit help beyond either alone, or are cues redundant?\n",
    "4. **Main RQ — Stereotyping:** does LLM prediction error cluster by demographic group?\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "60b6a724",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:04.340191Z",
     "iopub.status.busy": "2026-07-25T15:43:04.340067Z",
     "iopub.status.idle": "2026-07-25T15:43:04.702370Z",
     "shell.execute_reply": "2026-07-25T15:43:04.701634Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sibling_data available: True\n",
      "Data source: /tmp/sibling_data File A/B/C\n",
      "Prolific: ['/tmp/sibling_data/PRCAProlificExport_FileA.csv', '/tmp/sibling_data/PRCAProlificExport_FileB.csv']\n",
      "Qualtrics: /tmp/sibling_data/PRCAQualtricsExport_FileC.csv\n"
     ]
    }
   ],
   "source": [
    "from __future__ import annotations\n",
    "\n",
    "import json\n",
    "import sys\n",
    "from pathlib import Path\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "\n",
    "ROOT = Path.cwd()\n",
    "if not (ROOT / \"src\").exists() and (ROOT.parent / \"src\").exists():\n",
    "    ROOT = ROOT.parent\n",
    "sys.path.insert(0, str(ROOT / \"src\"))\n",
    "\n",
    "from ca_personas.eda import run_eda\n",
    "from ca_personas.load import load_full_cohort\n",
    "from ca_personas.paths import (\n",
    "    cohort_source_label,\n",
    "    full_cohort_paths,\n",
    "    sibling_data_available,\n",
    ")\n",
    "\n",
    "assert sibling_data_available(), (\n",
    "    \"Place File A/B/C under ../sibling_data/ (or /tmp/sibling_data) before running.\"\n",
    ")\n",
    "PROLIFIC, QUALTRICS = full_cohort_paths()\n",
    "print(\"sibling_data available:\", sibling_data_available())\n",
    "print(\"Data source:\", cohort_source_label())\n",
    "print(\"Prolific:\", [str(p) for p in PROLIFIC])\n",
    "print(\"Qualtrics:\", QUALTRICS)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37ecdb16",
   "metadata": {},
   "source": [
    "## Load → join → clean → score\n",
    "\n",
    "- Stack Prolific File A + File B (two recruitment waves, same schema)\n",
    "- Join to Qualtrics File C on `Q0` ↔ `Participant id`\n",
    "- Keep inner-join rows with complete PRCA group (`Q1–Q6`) + interpersonal (`Q13–Q18`) items\n",
    "- Flag employment / transit coverage for the tiered research contrasts\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "33e235c3",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:04.704315Z",
     "iopub.status.busy": "2026-07-25T15:43:04.704167Z",
     "iopub.status.idle": "2026-07-25T15:43:05.027726Z",
     "shell.execute_reply": "2026-07-25T15:43:05.027257Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\n",
      "  \"n_prolific_raw\": 262,\n",
      "  \"n_prolific_unique\": 262,\n",
      "  \"n_qualtrics_raw\": 273,\n",
      "  \"n_qualtrics_with_pid\": 255,\n",
      "  \"n_qualtrics_complete_ca\": 260,\n",
      "  \"n_joined\": 252,\n",
      "  \"n_matched_both\": 252,\n",
      "  \"n_analytic\": 241,\n",
      "  \"n_dropped_missing_pid\": 0,\n",
      "  \"n_dropped_incomplete_ca\": 11,\n",
      "  \"n_dropped_unscorable_ca\": 0,\n",
      "  \"n_dropped_unjoined\": 31,\n",
      "  \"n_prolific_only\": 10,\n",
      "  \"n_qualtrics_only\": 21,\n",
      "  \"n_qualtrics_missing_pid\": 18,\n",
      "  \"waves\": {\n",
      "    \"B\": 153,\n",
      "    \"A\": 99\n",
      "  },\n",
      "  \"notes\": [\n",
      "    \"Normalized 19 DATA_EXPIRED Student status values to missing.\",\n",
      "    \"Full Prolific waves (File A/B) omit Ethnicity / Nationality / Language; demos tier uses Age, Sex, Country of residence, and Student status.\",\n",
      "    \"Analytic sample = Prolific\\u2229Qualtrics with complete scorable PRCA group + interpersonal items.\",\n",
      "    \"Merge coverage (pre-CA filter): 252 matched Prolific\\u2229Qualtrics; 21 Qualtrics-only (incl. 18 blank Q0 test rows; disregard); 10 Prolific-only (disregard).\"\n",
      "  ]\n",
      "}\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>participant_id</th>\n",
       "      <th>Age</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Country of residence</th>\n",
       "      <th>Student status</th>\n",
       "      <th>Employment status</th>\n",
       "      <th>Submission id</th>\n",
       "      <th>Started at</th>\n",
       "      <th>Completed at</th>\n",
       "      <th>Time taken</th>\n",
       "      <th>...</th>\n",
       "      <th>Q18_advice</th>\n",
       "      <th>Q19</th>\n",
       "      <th>has_employment_info</th>\n",
       "      <th>has_transit_info</th>\n",
       "      <th>has_employment_and_transit</th>\n",
       "      <th>has_core_demos</th>\n",
       "      <th>gt_group_ca</th>\n",
       "      <th>gt_interpersonal_ca</th>\n",
       "      <th>gt_group_band</th>\n",
       "      <th>gt_interpersonal_band</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>ebab12e9878344fdc93a8c1cad27ff2f709e12b90f0496...</td>\n",
       "      <td>36.0</td>\n",
       "      <td>Male</td>\n",
       "      <td>United States</td>\n",
       "      <td>Yes</td>\n",
       "      <td>Part-Time</td>\n",
       "      <td>c4ab54135f26292de9faf6a1043ba0817e8c2fb29cd050...</td>\n",
       "      <td>2025</td>\n",
       "      <td>2025</td>\n",
       "      <td>188.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>14</td>\n",
       "      <td>16</td>\n",
       "      <td>moderate</td>\n",
       "      <td>moderate</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>b6954799ca47bc836ac02ab86e4710c3b0e096d7ace449...</td>\n",
       "      <td>41.0</td>\n",
       "      <td>Male</td>\n",
       "      <td>United States</td>\n",
       "      <td>No</td>\n",
       "      <td>Other</td>\n",
       "      <td>91d238c88316a444585278049cc9bdedb871414ebdb0dd...</td>\n",
       "      <td>2025</td>\n",
       "      <td>2025</td>\n",
       "      <td>110.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>17</td>\n",
       "      <td>17</td>\n",
       "      <td>moderate</td>\n",
       "      <td>moderate</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6ac07c3845b0ce5cac4ab3569ea70236b7cfa8fd51576e...</td>\n",
       "      <td>39.0</td>\n",
       "      <td>Male</td>\n",
       "      <td>United States</td>\n",
       "      <td>No</td>\n",
       "      <td>Full-Time</td>\n",
       "      <td>f3943bf594d541b81fbde88288600739a47ee97b0524c1...</td>\n",
       "      <td>2025</td>\n",
       "      <td>2025</td>\n",
       "      <td>63.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>11</td>\n",
       "      <td>12</td>\n",
       "      <td>low</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>c67b3266ecd4af12979c1f67d1efffd0d3e9bfbc567d21...</td>\n",
       "      <td>61.0</td>\n",
       "      <td>Male</td>\n",
       "      <td>United Kingdom</td>\n",
       "      <td>No</td>\n",
       "      <td>Other</td>\n",
       "      <td>0799215a062ddef149fa49bfe069e3ff2b4b79f08f5b01...</td>\n",
       "      <td>2025</td>\n",
       "      <td>2025</td>\n",
       "      <td>85.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>10</td>\n",
       "      <td>6</td>\n",
       "      <td>low</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1cefb8d34b92489e8ffd9cf34c469964f0527b1cae33e0...</td>\n",
       "      <td>45.0</td>\n",
       "      <td>Male</td>\n",
       "      <td>United States</td>\n",
       "      <td>No</td>\n",
       "      <td>Full-Time</td>\n",
       "      <td>f49783f27606316e1e3a590e7403eab417b5612c2faeaf...</td>\n",
       "      <td>2025</td>\n",
       "      <td>2025</td>\n",
       "      <td>142.0</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>True</td>\n",
       "      <td>8</td>\n",
       "      <td>12</td>\n",
       "      <td>low</td>\n",
       "      <td>low</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 47 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                      participant_id   Age   Sex  \\\n",
       "0  ebab12e9878344fdc93a8c1cad27ff2f709e12b90f0496...  36.0  Male   \n",
       "1  b6954799ca47bc836ac02ab86e4710c3b0e096d7ace449...  41.0  Male   \n",
       "2  6ac07c3845b0ce5cac4ab3569ea70236b7cfa8fd51576e...  39.0  Male   \n",
       "3  c67b3266ecd4af12979c1f67d1efffd0d3e9bfbc567d21...  61.0  Male   \n",
       "4  1cefb8d34b92489e8ffd9cf34c469964f0527b1cae33e0...  45.0  Male   \n",
       "\n",
       "  Country of residence Student status Employment status  \\\n",
       "0        United States            Yes         Part-Time   \n",
       "1        United States             No             Other   \n",
       "2        United States             No         Full-Time   \n",
       "3       United Kingdom             No             Other   \n",
       "4        United States             No         Full-Time   \n",
       "\n",
       "                                       Submission id  Started at  \\\n",
       "0  c4ab54135f26292de9faf6a1043ba0817e8c2fb29cd050...        2025   \n",
       "1  91d238c88316a444585278049cc9bdedb871414ebdb0dd...        2025   \n",
       "2  f3943bf594d541b81fbde88288600739a47ee97b0524c1...        2025   \n",
       "3  0799215a062ddef149fa49bfe069e3ff2b4b79f08f5b01...        2025   \n",
       "4  f49783f27606316e1e3a590e7403eab417b5612c2faeaf...        2025   \n",
       "\n",
       "   Completed at  Time taken  ... Q18_advice  Q19 has_employment_info  \\\n",
       "0          2025       188.0  ...        NaN  NaN                True   \n",
       "1          2025       110.0  ...        NaN  NaN                True   \n",
       "2          2025        63.0  ...        NaN  NaN                True   \n",
       "3          2025        85.0  ...        NaN  NaN                True   \n",
       "4          2025       142.0  ...        NaN  NaN                True   \n",
       "\n",
       "   has_transit_info  has_employment_and_transit  has_core_demos gt_group_ca  \\\n",
       "0              True                        True            True          14   \n",
       "1              True                        True            True          17   \n",
       "2              True                        True            True          11   \n",
       "3              True                        True            True          10   \n",
       "4              True                        True            True           8   \n",
       "\n",
       "  gt_interpersonal_ca gt_group_band gt_interpersonal_band  \n",
       "0                  16      moderate              moderate  \n",
       "1                  17      moderate              moderate  \n",
       "2                  12           low                   low  \n",
       "3                   6           low                   low  \n",
       "4                  12           low                   low  \n",
       "\n",
       "[5 rows x 47 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "participants, cleaning_report = load_full_cohort(join_how=\"inner\")\n",
    "print(json.dumps(cleaning_report, indent=2))\n",
    "participants.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "30d6c35e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.029039Z",
     "iopub.status.busy": "2026-07-25T15:43:05.028901Z",
     "iopub.status.idle": "2026-07-25T15:43:05.034104Z",
     "shell.execute_reply": "2026-07-25T15:43:05.033245Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>share</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>has_core_demos</th>\n",
       "      <td>0.929461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>has_employment_info</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>has_transit_info</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>has_employment_and_transit</th>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                               share\n",
       "has_core_demos              0.929461\n",
       "has_employment_info         1.000000\n",
       "has_transit_info            1.000000\n",
       "has_employment_and_transit  1.000000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Research-covariate coverage (supports RQ1–RQ3 sample support)\n",
    "coverage = participants[\n",
    "    [\"has_core_demos\", \"has_employment_info\", \"has_transit_info\", \"has_employment_and_transit\"]\n",
    "].mean().rename(\"share\").to_frame()\n",
    "coverage\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ac042439",
   "metadata": {},
   "source": [
    "## Ground-truth CA distributions\n",
    "\n",
    "Targets for every persona tier and ML baseline: group + interpersonal PRCA subscales (6–30).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "03fb7620",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.035445Z",
     "iopub.status.busy": "2026-07-25T15:43:05.035334Z",
     "iopub.status.idle": "2026-07-25T15:43:05.043348Z",
     "shell.execute_reply": "2026-07-25T15:43:05.042832Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>count</th>\n",
       "      <th>mean</th>\n",
       "      <th>std</th>\n",
       "      <th>min</th>\n",
       "      <th>25%</th>\n",
       "      <th>50%</th>\n",
       "      <th>75%</th>\n",
       "      <th>max</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>gt_group_ca</th>\n",
       "      <td>241.0</td>\n",
       "      <td>14.622407</td>\n",
       "      <td>6.032771</td>\n",
       "      <td>6.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>gt_interpersonal_ca</th>\n",
       "      <td>241.0</td>\n",
       "      <td>14.311203</td>\n",
       "      <td>5.817953</td>\n",
       "      <td>6.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>30.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     count       mean       std  min   25%   50%   75%   max\n",
       "gt_group_ca          241.0  14.622407  6.032771  6.0  10.0  13.0  18.0  30.0\n",
       "gt_interpersonal_ca  241.0  14.311203  5.817953  6.0  10.0  13.0  18.0  30.0"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gt_summary = participants[[\"gt_group_ca\", \"gt_interpersonal_ca\"]].describe().T\n",
    "gt_summary\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "68ca02fd",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.044447Z",
     "iopub.status.busy": "2026-07-25T15:43:05.044335Z",
     "iopub.status.idle": "2026-07-25T15:43:05.232370Z",
     "shell.execute_reply": "2026-07-25T15:43:05.231508Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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rrju9+nTp4iLi8Pnn3+OAwcOACj9/lMSe3t7LFq0COHh4Zg8eTJu3LiB3NxcXL9+HWFhYcWuQ36Rk5MTJk6ciBUrVmD58uXIyMjAtWvXMHLkSPj5+b0272FhYZgwYQLOnTuHrKwsZGZmYvny5cjJyUGHDh0Uy/n4+ODatWu4fv26Vh6N1aJFC3z66ae4dOkSsrKy8Oeff2LhwoUYMWKE0rXfH330Ea5du4YffvgBWVlZuHLlCj7++GO0adOmWJ/qxOjk5ISpU6fijz/+wA8//ID09HTcuHEDoaGhePz4MebPn6/2ayptLomISMvK6SZuRERvrNzcXLF06VLRvn17YW9vL6RSqXBychJNmzYVEyZMEGfOnFEsW3RX859++kllXxcuXBDdunUTtra2wtTUVHh7e4slS5YIuVyutNyJEydE8+bNhampqahbt65YuXLlK+9qnpqaqrR+RESEACA2bdqk1H706FHRqlUrYWZmJlxcXMT3338v9uzZU+q7mgshxIwZM0TNmjWFkZGRACAOHDjwyljUfU2abKOk11uSmzdvivHjxwsPDw9hbm4ubGxshK+vrxg7dqyIiooSQgjx3nvvCWNjY/H48eMS+1mxYoUAIP75558Slzl8+LDo06ePqFWrlrCwsBD169cXU6dOFRkZGUrL3b17VwwfPlw4OzsLMzMz4e3tLRYuXCjy8vIUy5Rm/3nd+3D48GERHBws7O3thZmZmfD09BSjR49WebfwFxUWFoq5c+eK2rVrCzMzM9GyZUtx+vRpMXjw4Nfe1fzp06di6dKlonXr1sLGxkZUrVpVtGnTRvzxxx9K6yUnJ4suXbqIKlWqCADC0dFRMa9x48YiKChIZWwl3dU8KChIXL58WbRr106Ym5uLmjVriunTp6u8G/3cuXNFzZo1hbm5uXj33XfF1atXVd7V/FUxqopDCCGWL18uGjVqJExNTYWNjY3o0qWLOHfunMp4X/byEwFKm0siItIuiRBa+EmYiIiIiIiIiFTiqeZEREREREREOsTCm4iIiIiIiEiHWHgTERERERER6RALbyIiIiIiIiIdYuFNREREREREpEMsvImIiIiIiIh0iIU3ERERERERkQ6x8CYiIiIiIiLSIRbeRERERERERDrEwpuIiIiIiIhIh1h4ExEREREREekQC28iIiIiIiIiHWLhTURERERERKRD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iuVmz56Nnj17olGjRmjTpg1+/PFHmJubKy1DREREREREZKj09jgxS0tL/PXXXzh+/DhGjx6Nb7/9Fi4uLrhy5QoaNmyoWC44OBjbtm3Dvn37MHbsWJibm+PkyZOKG7ARERERERERGTK93tXc09MTK1aseO1y3bt3R/fu3cshIiIiIiIiIiLt0tsRbyIiIiIiIqI3AQtvIiIiIiIiIh1i4U1ERERERESkQyy8iYiIiIiIiHSIhTcRERERERGRDrHwJiIiIiIiItIhFt5EREREREREOsTCm4iIiIiIiEiHWHgTERERERER6RALbyIiIiIiIiIdYuFNREREREREpEMsvImIiIiIiIh0iIU3ERERERERkQ6x8CYiIiIiIiLSIRbeRERERERERDrEwpuIiIiIiIhIh1h4ExEREREREekQC28iIiIiIiIiHWLhTURERERERKRDLLyJiIiIiIiIdIiFNxEREREREZEOsfAmIiIiIiIi0iEW3kREREREREQ6xMKbiIiIiIiISIf0WngfO3YMPXr0QLVq1eDo6Ii+ffvi+vXrSsuMGTMGEolE6c/Hx0dPERMRERERERGpR2+Fd2FhIWbOnIkxY8bg+vXruHDhAgoLCxEQEICnT58qLdu3b18IIRR/V69e1VPUREREREREROox0deGjY2NcfToUcW0vb09fv75Z7i5ueHMmTMICAjQV2hEREREREREWqPREe9Hjx4hLCxMMf3nn3+iSZMm6Nu3L9LS0jQOJjU1FQBga2ur1L53715YWlrC2dkZ/fv3x507dzTeBhEREREREVF50uiI9+eff4527doBAB4+fIhRo0bh008/RUREBCZPnozw8HC1+ywoKMCkSZPw9ttvo1mzZor2+vXrY926dWjfvj2SkpIwceJEtGvXDlevXi1WoBfJy8tDXl6eYjorKwsAIJPJFH9F06Q5Q8qj3NQUcgsLjdbTd/yGlMeKjHnUDuZROwwxj2WNhWNr+TCkPHJsJeZRO5hH7TDEPKoTi0QIIdTdgJOTE65duwZ7e3uEh4dj3bp12Lt3L+7du4fmzZsjOTlZrf6EEBg+fDj27t2LkydPon79+iUu+/jxYzg7O2Px4sUYNWqUymVmzZqF2bNnF2tfu3YtLC0t1YqNiIioMnj27BkGDRqEzMxM2NjYqL0+x1YiIiJl6oytGhXetra2uHnzJhwcHDBs2DA0atQIkydPRlZWFlxdXZGZmVnqvoQQGDVqFHbs2IEjR47Ay8vrteu89dZbCAkJwffff69yvqpf5V1dXZGWlgYbGxvIZDIcOHAAgYGBkEqlpY6VlBlSHq92CEL2FfVvumfl6wOfI/t0EFHpGVIeKzLmUTuYR+0wxDxmZWXBwcFB48KbY2v5MKQ8cmwl5lE7mEftMMQ8qjO2anSqeZs2bfDpp5+iU6dO2Lx5M7766isAQEREBFq2bFnqfoQQGDNmDHbs2IHDhw+Xquh+/Pgx7t27h5o1a5a4jJmZGczMzIq1S6VSpTfp5WnSjCHk0Sg/H0Y5ORqtp+/YixhCHisD5lE7mEftMKQ8ljUOjq3lyxDyyLGVijCP2sE8aoch5VGdODS6udqSJUtw//59zJkzB9999x08PT0BAD/88AOmT59e6n7GjRuHbdu24fDhw/D29i42Py8vD71798a5c+eQnZ2NmJgYhIaGokqVKhg8eLAmoRMRERERERGVK40K77179+LIkSO4desWJk2apGj/559/Sv2M7bS0NCxbtgwPHz6Ej48PJBKJ4q/ojulmZmYYOXIkpkyZAicnJwQFBcHBwQFnz55FjRo1NAmdiIiIiIiIqFxpdKr5hAkTMH78eLXnvcjBwQGluby8W7du6Natm9oxEhERERERERkCjY54l+Tu3buwt7fXZpdEREREREREFZpaR7x9fHxU/hsA5HI5EhIS0Lt3b+1ERkRERERERFQJqFV4jxw5EgDw2WefKf5dRCqVok6dOujSpYv2oiMiIiIiIiKq4NQqvCdOnAjg+fXZQ4YM0UU8RERERERERJWKRtd4s+gmIiIiIiIiKh2NCu+kpCQMHDgQtWvXhrW1dbE/IiIiIiIiInpOo8eJjRgxApmZmZg9ezaqVq2q7ZiIiIiIiIiIKg2NCu9///0XcXFxqFmzprbjISIiIiIiIqpUNDrVvEaNGpBKpdqOhYiIiIiIiKjS0ajw/uCDDzBr1iwUFBRoOx4iIiIiIiKiSkWjU823bNmCS5cuYcOGDXBzc4NEIlGaf/78ea0ER0RERERERFTRaVR4h4aGIjQ0VNuxEBEREREREVU6GhXe06ZN03YcRERERERERJWSRtd4ExEREREREVHpaHTEGwBu3LiBHTt2ICEhodhN1pYsWVLmwIiIiIiIiIgqA40K7z179qBv375o2bIljh07hqCgIERFRSE5ORkBAQHajpGIiIjeAKKwEBJjY733QUREpG0aFd5ff/01fv31V3zwwQeQSCTYu3cv8vLyMGrUKJibm2s7RiIiInoDSIyNET9sBHJi4jRa36KhJzzCV2k5KiIiorLTqPCOiYlBv379AADGxsbIycmBhYUF5s+fj8aNG+O3337TapBERET0ZsiJiUP2pSh9h0FERKRVGt1cLScnB9bW1gAAZ2dn3Lx583lnRkbIzs7WXnREREREREREFZzGN1crEhwcjFGjRmHo0KHYtGkT/Pz8tBEXERERERERUaWg0RHvTZs2Kf69YMECeHp6YtGiRahSpQrCwsK0FhwRERERERFRRafREe+i67sBwM7ODmvWrNFaQERERERERESVSZlONY+JiUFMTAwAoGHDhmjYsKFWgiIiIiKiiknq6MhHwxERvUSjwjslJQXDhg3Dvn37YGpqCgDIz89H165dER4ejurVq2s1SCIiIiKqGEzsbPloOCKil2hUeH/00UfIzMxEZGQkGjduDACIiorC2LFj8dFHH2Hbtm2l6icxMRE///wzTp06BRMTE7zzzjuYOnUq7OzslJbbvXs3fv75Z6SkpMDX1xezZ89GvXr1NAmdiIiIiMoBHw1HRPR/NLq52oEDB/DXX3+hSZMmkEgkkEgkaNKkCf766y/s37+/VH0UFhaiY8eOcHJywvfff49vvvkG+/fvR6dOnZCfn69Y7p9//kFISAgCAwOxdOlS5OTkoF27dsjIyNAkdCIiIiIiIqJypdERbycnJ1hYWBRrt7CwgJOTU6n6MDY2xrVr1yCVShVtLi4uaNiwIc6ePYt27doBAGbNmoVBgwZhypQpAIAWLVrAyckJy5cvx5dffqlJ+ERERERERETlRqMj3oMHD8a4ceOQlpamaEtLS8O4ceMwePDgUvfzYtENAEZGyuE8ffoU58+fR5cuXRRtpqamCAgIwJEjRzQJnYiIiIiIiKhcaXTEe9euXYiKisLu3btRp04dCCFw9+5d5Ofn4/bt29izZ49i2fPnz5e63xkzZsDNzQ0tW7YEANy7dw9CCDg7Oyst5+TkhKtXr5bYT15eHvLy8hTTWVlZAACZTKb4K5omzRlSHuWmppCrOAujNOvpO35DymNFxjxqB/OoHYaYx7LGUl5jq6af50XrGlLONWFI+46m70Wh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",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, figsize=(10, 4), sharey=True)\n",
    "for ax, col, title in zip(\n",
    "    axes,\n",
    "    [\"gt_group_ca\", \"gt_interpersonal_ca\"],\n",
    "    [\"Group CA\", \"Interpersonal CA\"],\n",
    "):\n",
    "    participants[col].hist(ax=ax, bins=range(6, 32), color=\"#C5050C\", edgecolor=\"white\")\n",
    "    ax.set_title(title)\n",
    "    ax.set_xlabel(\"PRCA subscale (6–30)\")\n",
    "axes[0].set_ylabel(\"Participants\")\n",
    "fig.suptitle(\"Ground-truth CA score distributions\")\n",
    "fig.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a9ca698",
   "metadata": {},
   "source": [
    "## RQ1 lens — CA by employment status\n",
    "\n",
    "If an LLM stereotypes “unemployed → higher CA,” residual error should later be checked against these empirical means.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b70c2cf9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.233951Z",
     "iopub.status.busy": "2026-07-25T15:43:05.233810Z",
     "iopub.status.idle": "2026-07-25T15:43:05.242681Z",
     "shell.execute_reply": "2026-07-25T15:43:05.242230Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Employment status</th>\n",
       "      <th>n</th>\n",
       "      <th>mean_group</th>\n",
       "      <th>mean_interpersonal</th>\n",
       "      <th>pct_high_group</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Full-Time</td>\n",
       "      <td>148</td>\n",
       "      <td>13.324324</td>\n",
       "      <td>12.993243</td>\n",
       "      <td>0.128378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Other</td>\n",
       "      <td>62</td>\n",
       "      <td>16.951613</td>\n",
       "      <td>16.564516</td>\n",
       "      <td>0.370968</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Part-Time</td>\n",
       "      <td>31</td>\n",
       "      <td>16.161290</td>\n",
       "      <td>16.096774</td>\n",
       "      <td>0.258065</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Employment status    n  mean_group  mean_interpersonal  pct_high_group\n",
       "0         Full-Time  148   13.324324           12.993243        0.128378\n",
       "1             Other   62   16.951613           16.564516        0.370968\n",
       "2         Part-Time   31   16.161290           16.096774        0.258065"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "by_emp = (\n",
    "    participants.groupby(\"Employment status\", dropna=False)\n",
    "    .agg(\n",
    "        n=(\"participant_id\", \"count\"),\n",
    "        mean_group=(\"gt_group_ca\", \"mean\"),\n",
    "        mean_interpersonal=(\"gt_interpersonal_ca\", \"mean\"),\n",
    "        pct_high_group=(\"gt_group_band\", lambda s: (s == \"high\").mean()),\n",
    "    )\n",
    "    .reset_index()\n",
    ")\n",
    "by_emp\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "35485044",
   "metadata": {},
   "source": [
    "## RQ2 lens — CA by public-transit use (Q26)\n",
    "\n",
    "Transit items feed the `transit` persona tier. Sparse `Q20`/`Q21` (license/car) is expected in File C; frequency items `Q26–Q29` are the primary signal.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "fff71feb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.244095Z",
     "iopub.status.busy": "2026-07-25T15:43:05.243985Z",
     "iopub.status.idle": "2026-07-25T15:43:05.251492Z",
     "shell.execute_reply": "2026-07-25T15:43:05.250991Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Q26</th>\n",
       "      <th>n</th>\n",
       "      <th>mean_group</th>\n",
       "      <th>mean_interpersonal</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>8 or more days a month</td>\n",
       "      <td>55</td>\n",
       "      <td>12.836364</td>\n",
       "      <td>13.163636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2-4 days a month</td>\n",
       "      <td>53</td>\n",
       "      <td>14.509434</td>\n",
       "      <td>13.716981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Never</td>\n",
       "      <td>50</td>\n",
       "      <td>17.380000</td>\n",
       "      <td>16.340000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4-8 days a month</td>\n",
       "      <td>46</td>\n",
       "      <td>13.282609</td>\n",
       "      <td>13.478261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0-1 days a month</td>\n",
       "      <td>37</td>\n",
       "      <td>15.378378</td>\n",
       "      <td>15.162162</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      Q26   n  mean_group  mean_interpersonal\n",
       "3  8 or more days a month  55   12.836364           13.163636\n",
       "1        2-4 days a month  53   14.509434           13.716981\n",
       "4                   Never  50   17.380000           16.340000\n",
       "2        4-8 days a month  46   13.282609           13.478261\n",
       "0        0-1 days a month  37   15.378378           15.162162"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "by_transit = (\n",
    "    participants.groupby(\"Q26\", dropna=False)\n",
    "    .agg(\n",
    "        n=(\"participant_id\", \"count\"),\n",
    "        mean_group=(\"gt_group_ca\", \"mean\"),\n",
    "        mean_interpersonal=(\"gt_interpersonal_ca\", \"mean\"),\n",
    "    )\n",
    "    .reset_index()\n",
    "    .sort_values(\"n\", ascending=False)\n",
    ")\n",
    "by_transit\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5f7ea80",
   "metadata": {},
   "source": [
    "## RQ3 lens — employment × transit contingency\n",
    "\n",
    "If employment and transit use are strongly associated in this sample, Tier 3 may not beat Tier 1 or 2 alone.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "3addbb87",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.252489Z",
     "iopub.status.busy": "2026-07-25T15:43:05.252384Z",
     "iopub.status.idle": "2026-07-25T15:43:05.267221Z",
     "shell.execute_reply": "2026-07-25T15:43:05.266805Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>Q26</th>\n",
       "      <th>0-1 days a month</th>\n",
       "      <th>2-4 days a month</th>\n",
       "      <th>4-8 days a month</th>\n",
       "      <th>8 or more days a month</th>\n",
       "      <th>Never</th>\n",
       "      <th>All</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Employment status</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Full-Time</th>\n",
       "      <td>26</td>\n",
       "      <td>33</td>\n",
       "      <td>32</td>\n",
       "      <td>35</td>\n",
       "      <td>22</td>\n",
       "      <td>148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Other</th>\n",
       "      <td>6</td>\n",
       "      <td>16</td>\n",
       "      <td>7</td>\n",
       "      <td>12</td>\n",
       "      <td>21</td>\n",
       "      <td>62</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Part-Time</th>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>7</td>\n",
       "      <td>8</td>\n",
       "      <td>7</td>\n",
       "      <td>31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>All</th>\n",
       "      <td>37</td>\n",
       "      <td>53</td>\n",
       "      <td>46</td>\n",
       "      <td>55</td>\n",
       "      <td>50</td>\n",
       "      <td>241</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Q26                0-1 days a month  2-4 days a month  4-8 days a month  \\\n",
       "Employment status                                                         \n",
       "Full-Time                        26                33                32   \n",
       "Other                             6                16                 7   \n",
       "Part-Time                         5                 4                 7   \n",
       "All                              37                53                46   \n",
       "\n",
       "Q26                8 or more days a month  Never  All  \n",
       "Employment status                                      \n",
       "Full-Time                              35     22  148  \n",
       "Other                                  12     21   62  \n",
       "Part-Time                               8      7   31  \n",
       "All                                    55     50  241  "
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xtab = pd.crosstab(\n",
    "    participants[\"Employment status\"].fillna(\"(missing)\"),\n",
    "    participants[\"Q26\"].fillna(\"(missing)\"),\n",
    "    margins=True,\n",
    ")\n",
    "xtab\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d37d71e0",
   "metadata": {},
   "source": [
    "## Stereotyping lens — CA by sex and country\n",
    "\n",
    "Demographic slices used later when correlating LLM absolute error with group membership.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6eaff75b",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.268494Z",
     "iopub.status.busy": "2026-07-25T15:43:05.268388Z",
     "iopub.status.idle": "2026-07-25T15:43:05.286013Z",
     "shell.execute_reply": "2026-07-25T15:43:05.285427Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== Sex ===\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Sex</th>\n",
       "      <th>n</th>\n",
       "      <th>mean_group</th>\n",
       "      <th>mean_interpersonal</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Female</td>\n",
       "      <td>120</td>\n",
       "      <td>14.875000</td>\n",
       "      <td>14.750000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Male</td>\n",
       "      <td>121</td>\n",
       "      <td>14.371901</td>\n",
       "      <td>13.876033</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      Sex    n  mean_group  mean_interpersonal\n",
       "0  Female  120   14.875000           14.750000\n",
       "1    Male  121   14.371901           13.876033"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== Country of residence ===\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Country of residence</th>\n",
       "      <th>n</th>\n",
       "      <th>mean_group</th>\n",
       "      <th>mean_interpersonal</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Canada</td>\n",
       "      <td>20</td>\n",
       "      <td>14.650000</td>\n",
       "      <td>15.150000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>France</td>\n",
       "      <td>1</td>\n",
       "      <td>30.000000</td>\n",
       "      <td>26.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Hungary</td>\n",
       "      <td>1</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>9.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>India</td>\n",
       "      <td>1</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Ireland</td>\n",
       "      <td>2</td>\n",
       "      <td>11.500000</td>\n",
       "      <td>8.500000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>New Zealand</td>\n",
       "      <td>1</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>13.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Spain</td>\n",
       "      <td>1</td>\n",
       "      <td>16.000000</td>\n",
       "      <td>9.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>United Kingdom</td>\n",
       "      <td>56</td>\n",
       "      <td>16.339286</td>\n",
       "      <td>15.535714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>United States</td>\n",
       "      <td>158</td>\n",
       "      <td>14.037975</td>\n",
       "      <td>13.898734</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Country of residence    n  mean_group  mean_interpersonal\n",
       "0               Canada   20   14.650000           15.150000\n",
       "1               France    1   30.000000           26.000000\n",
       "2              Hungary    1    6.000000            9.000000\n",
       "3                India    1    8.000000            6.000000\n",
       "4              Ireland    2   11.500000            8.500000\n",
       "5          New Zealand    1   15.000000           13.000000\n",
       "6                Spain    1   16.000000            9.000000\n",
       "7       United Kingdom   56   16.339286           15.535714\n",
       "8        United States  158   14.037975           13.898734"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "=== Student status ===\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Student status</th>\n",
       "      <th>n</th>\n",
       "      <th>mean_group</th>\n",
       "      <th>mean_interpersonal</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>No</td>\n",
       "      <td>190</td>\n",
       "      <td>14.257895</td>\n",
       "      <td>13.773684</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Yes</td>\n",
       "      <td>34</td>\n",
       "      <td>16.352941</td>\n",
       "      <td>17.029412</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>NaN</td>\n",
       "      <td>17</td>\n",
       "      <td>15.235294</td>\n",
       "      <td>14.882353</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Student status    n  mean_group  mean_interpersonal\n",
       "0             No  190   14.257895           13.773684\n",
       "1            Yes   34   16.352941           17.029412\n",
       "2            NaN   17   15.235294           14.882353"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for col in (\"Sex\", \"Country of residence\", \"Student status\"):\n",
    "    print(\"\\n===\", col, \"===\")\n",
    "    display(\n",
    "        participants.groupby(col, dropna=False)\n",
    "        .agg(\n",
    "            n=(\"participant_id\", \"count\"),\n",
    "            mean_group=(\"gt_group_ca\", \"mean\"),\n",
    "            mean_interpersonal=(\"gt_interpersonal_ca\", \"mean\"),\n",
    "        )\n",
    "        .reset_index()\n",
    "    )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "546659c5",
   "metadata": {},
   "source": [
    "## Write EDA artifacts\n",
    "\n",
    "Artifacts land in `outputs/eda/` (gitignored) and `data/processed/` for the prediction pipeline.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2bb5a36c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-07-25T15:43:05.287414Z",
     "iopub.status.busy": "2026-07-25T15:43:05.287291Z",
     "iopub.status.idle": "2026-07-25T15:43:05.335737Z",
     "shell.execute_reply": "2026-07-25T15:43:05.335206Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'ca_score_summary': PosixPath('/workspace/outputs/eda/ca_score_summary.csv'),\n",
       " 'ca_by_group': PosixPath('/workspace/outputs/eda/ca_by_group.csv'),\n",
       " 'employment_by_transit': PosixPath('/workspace/outputs/eda/employment_by_transit_q26.csv'),\n",
       " 'missingness': PosixPath('/workspace/outputs/eda/missingness.csv'),\n",
       " 'research_alignment': PosixPath('/workspace/outputs/eda/research_alignment.json')}"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out = ROOT / \"outputs\" / \"eda\"\n",
    "processed = ROOT / \"data\" / \"processed\"\n",
    "processed.mkdir(parents=True, exist_ok=True)\n",
    "participants.to_csv(processed / \"participants_scored.csv\", index=False)\n",
    "(processed / \"cleaning_report.json\").write_text(json.dumps(cleaning_report, indent=2))\n",
    "artifacts = run_eda(participants, out, cleaning_report=cleaning_report)\n",
    "artifacts\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": ".venv",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
