From a684819e73dfcca4fb030e35a7e0ff903cca44d2 Mon Sep 17 00:00:00 2001 From: dadams Date: Wed, 25 Feb 2026 13:20:33 -0800 Subject: [PATCH] Update all markdown cells with actual notebook outputs - Cell 0: Fix analysis period (130 panel obs / 104 regression obs) - Cell 13: Fix to 10-year panel (2016-2025), 8-year regression sample - Cell 14: Add H1 finding preview noting bootstrap caveat - Cell 17: Update H2 to reflect actual negative interaction direction - Cell 19: Add H3 finding (slopes -0.34 to +1.36 pp/$1M) - Cell 21: Add H4 findings (+7.6 pp offshore, +6.0 pp border, Moran's I=-0.051) - Cell 24: Replace robustness placeholder with actual results (Tables 7-8): bootstrap p~0.49-0.51 for all H1 outcomes (asymptotic inference unreliable); distributed lag: contemporaneous effects persist, lag not significant - Cell 25: Update robustness header with actual findings summary - Cell 28: Update hypotheses table with bootstrap p-values and expanded footnotes Co-Authored-By: Claude Sonnet 4.6 --- texas_inspection_expenses.ipynb | 678 ++++++++++++-------------------- 1 file changed, 251 insertions(+), 427 deletions(-) diff --git a/texas_inspection_expenses.ipynb b/texas_inspection_expenses.ipynb index 5dde850..0aecb0d 100644 --- a/texas_inspection_expenses.ipynb +++ b/texas_inspection_expenses.ipynb @@ -4,26 +4,11 @@ "cell_type": "markdown", "id": "dc6818b8", "metadata": {}, - "source": [ - "# Texas RRC Inspection Expenses Analysis\n", - "\n", - "**Research question:** Does organizational capacity (budget, staffing) predict better regulatory outputs (inspections, compliance, enforcement), and how is that relationship moderated by goal ambiguity, district-level heterogeneity, and spatial/geographic factors?\n", - "\n", - "## Hypotheses\n", - "- **H1 \u2014 Capacity \u2192 Outputs:** Higher OGI budget and FTE predict more inspections, higher compliance rates, and faster violation resolution.\n", - "- **H2 \u2014 Goal Ambiguity:** When a larger share of RRC budget goes to the more ambiguous \"Energy Resource Development\" goal, the capacity \u2192 output relationship weakens.\n", - "- **H3 \u2014 Multilevel / District Effects:** The capacity \u2192 output relationship varies across RRC districts (budget slope heterogeneity).\n", - "- **H4 \u2014 Spatial & Geographic:** Offshore-jurisdiction and border districts moderate the capacity \u2192 output relationship; spatial autocorrelation in residuals is tested via Moran's I.\n", - "\n", - "**Data:**\n", - "- PostgreSQL warehouse (`texas_data`): `inspections`, `violations`, `well_shape_tract`\n", - "- `RRC Budget Data.xlsx`: statewide RRC budget by strategy, 2016\u20132024\n", - "- Analysis period: 2016\u20132023 (2024 is budget estimate, excluded from regressions)\n" - ] + "source": "# Texas RRC Inspection Expenses Analysis\n\n**Research question:** Does organizational capacity (budget, staffing) predict better regulatory outputs (inspections, compliance, enforcement), and how is that relationship moderated by goal ambiguity, district-level heterogeneity, and spatial/geographic factors?\n\n## Hypotheses\n- **H1 \u2014 Capacity \u2192 Outputs:** Higher OGI budget and FTE predict more inspections, higher compliance rates, and faster violation resolution.\n- **H2 \u2014 Goal Ambiguity:** When a larger share of RRC budget goes to the more ambiguous \"Energy Resource Development\" goal, the capacity \u2192 output relationship weakens.\n- **H3 \u2014 Multilevel / District Effects:** The capacity \u2192 output relationship varies across RRC districts (budget slope heterogeneity).\n- **H4 \u2014 Spatial & Geographic:** Offshore-jurisdiction and border districts moderate the capacity \u2192 output relationship; spatial autocorrelation in residuals is tested via Moran's I.\n\n**Data:**\n- PostgreSQL warehouse (`texas_data`): `inspections`, `violations`, `well_shape_tract`\n- `RRC Budget Data.xlsx`: statewide RRC budget by strategy, 2016\u20132024\n- Analysis panel: 2016\u20132025 (N = 130 district-years); regression sample: 2016\u20132023 (N = 104)\n" }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 1, "id": "3ed415f0", "metadata": {}, "outputs": [ @@ -43,22 +28,22 @@ "Requirement already satisfied: scipy in ./.venv/lib/python3.9/site-packages (from -r requirements.txt (line 10)) (1.13.1)\n", "Requirement already satisfied: matplotlib in ./.venv/lib/python3.9/site-packages (from -r requirements.txt (line 11)) (3.9.4)\n", "Requirement already satisfied: seaborn in ./.venv/lib/python3.9/site-packages (from -r requirements.txt (line 12)) (0.13.2)\n", - "Requirement already satisfied: jupyter-console in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (6.6.3)\n", "Requirement already satisfied: jupyterlab in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (4.5.5)\n", - "Requirement already satisfied: notebook in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (7.5.4)\n", + "Requirement already satisfied: jupyter-console in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (6.6.3)\n", "Requirement already satisfied: nbconvert in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (7.17.0)\n", "Requirement already satisfied: ipywidgets in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (8.1.8)\n", - "Requirement already satisfied: psutil>=5.7 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (7.2.2)\n", - "Requirement already satisfied: appnope>=0.1.2 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (0.1.4)\n", - "Requirement already satisfied: debugpy>=1.6.5 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (1.8.20)\n", - "Requirement already satisfied: nest-asyncio>=1.4 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (1.6.0)\n", - "Requirement already satisfied: ipython>=7.23.1 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (8.18.1)\n", + "Requirement already satisfied: notebook in ./.venv/lib/python3.9/site-packages (from jupyter->-r requirements.txt (line 1)) (7.5.4)\n", "Requirement already satisfied: jupyter-client>=8.0.0 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (8.6.3)\n", - "Requirement already satisfied: comm>=0.1.1 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (0.2.3)\n", - "Requirement already satisfied: tornado>=6.2 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (6.5.4)\n", + "Requirement already satisfied: psutil>=5.7 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (7.2.2)\n", "Requirement already satisfied: matplotlib-inline>=0.1 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (0.2.1)\n", - "Requirement already satisfied: pyzmq>=25 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (27.1.0)\n", + "Requirement already satisfied: tornado>=6.2 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (6.5.4)\n", + "Requirement already satisfied: ipython>=7.23.1 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (8.18.1)\n", + "Requirement already satisfied: debugpy>=1.6.5 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (1.8.20)\n", + "Requirement already satisfied: appnope>=0.1.2 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (0.1.4)\n", + "Requirement already satisfied: nest-asyncio>=1.4 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (1.6.0)\n", "Requirement already satisfied: packaging>=22 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (26.0)\n", + "Requirement already satisfied: pyzmq>=25 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (27.1.0)\n", + "Requirement already satisfied: comm>=0.1.1 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (0.2.3)\n", "Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (5.8.1)\n", "Requirement already satisfied: traitlets>=5.4.0 in ./.venv/lib/python3.9/site-packages (from ipykernel->-r requirements.txt (line 2)) (5.14.3)\n", "Requirement already satisfied: tzdata>=2022.7 in ./.venv/lib/python3.9/site-packages (from pandas->-r requirements.txt (line 3)) (2025.3)\n", @@ -67,21 +52,21 @@ "Requirement already satisfied: typing-extensions>=4.6.0 in ./.venv/lib/python3.9/site-packages (from sqlalchemy->-r requirements.txt (line 5)) (4.15.0)\n", "Requirement already satisfied: et-xmlfile in ./.venv/lib/python3.9/site-packages (from openpyxl->-r requirements.txt (line 8)) (2.0.0)\n", "Requirement already satisfied: patsy>=0.5.6 in ./.venv/lib/python3.9/site-packages (from statsmodels->-r requirements.txt (line 9)) (1.0.2)\n", + "Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (1.3.0)\n", + "Requirement already satisfied: cycler>=0.10 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (4.60.2)\n", "Requirement already satisfied: pillow>=8 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (11.3.0)\n", "Requirement already satisfied: pyparsing>=2.3.1 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (3.3.2)\n", - "Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (1.3.0)\n", "Requirement already satisfied: kiwisolver>=1.3.1 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (1.4.7)\n", - "Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (4.60.2)\n", "Requirement already satisfied: importlib-resources>=3.2.0 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (6.5.2)\n", - "Requirement already satisfied: cycler>=0.10 in ./.venv/lib/python3.9/site-packages (from matplotlib->-r requirements.txt (line 11)) (0.12.1)\n", "Requirement already satisfied: zipp>=3.1.0 in ./.venv/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib->-r requirements.txt (line 11)) (3.23.0)\n", - "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (3.0.52)\n", "Requirement already satisfied: decorator in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (5.2.1)\n", "Requirement already satisfied: pexpect>4.3 in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (4.9.0)\n", "Requirement already satisfied: exceptiongroup in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (1.3.1)\n", - "Requirement already satisfied: stack-data in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (0.6.3)\n", - "Requirement already satisfied: pygments>=2.4.0 in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (2.19.2)\n", "Requirement already satisfied: jedi>=0.16 in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (0.19.2)\n", + "Requirement already satisfied: prompt-toolkit<3.1.0,>=3.0.41 in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (3.0.52)\n", + "Requirement already satisfied: pygments>=2.4.0 in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (2.19.2)\n", + "Requirement already satisfied: stack-data in ./.venv/lib/python3.9/site-packages (from ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (0.6.3)\n", "Requirement already satisfied: parso<0.9.0,>=0.8.4 in ./.venv/lib/python3.9/site-packages (from jedi>=0.16->ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (0.8.6)\n", "Requirement already satisfied: importlib-metadata>=4.8.3 in ./.venv/lib/python3.9/site-packages (from jupyter-client>=8.0.0->ipykernel->-r requirements.txt (line 2)) (8.7.1)\n", "Requirement already satisfied: platformdirs>=2.5 in ./.venv/lib/python3.9/site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel->-r requirements.txt (line 2)) (4.4.0)\n", @@ -90,56 +75,56 @@ "Requirement already satisfied: six>=1.5 in ./.venv/lib/python3.9/site-packages (from python-dateutil>=2.8.2->pandas->-r requirements.txt (line 3)) (1.17.0)\n", "Requirement already satisfied: jupyterlab_widgets~=3.0.15 in ./.venv/lib/python3.9/site-packages (from ipywidgets->jupyter->-r requirements.txt (line 1)) (3.0.16)\n", "Requirement already satisfied: widgetsnbextension~=4.0.14 in ./.venv/lib/python3.9/site-packages (from ipywidgets->jupyter->-r requirements.txt (line 1)) (4.0.15)\n", + "Requirement already satisfied: jupyterlab-server<3,>=2.28.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.28.0)\n", + "Requirement already satisfied: tomli>=1.2.2 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.4.0)\n", + "Requirement already satisfied: jupyter-lsp>=2.0.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.3.0)\n", "Requirement already satisfied: jupyter-server<3,>=2.4.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.17.0)\n", + "Requirement already satisfied: notebook-shim>=0.2 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (0.2.4)\n", "Requirement already satisfied: setuptools>=41.1.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (58.0.4)\n", + "Requirement already satisfied: async-lru>=1.0.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.0.5)\n", "Requirement already satisfied: httpx<1,>=0.25.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (0.28.1)\n", "Requirement already satisfied: jinja2>=3.0.3 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (3.1.6)\n", - "Requirement already satisfied: tomli>=1.2.2 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.4.0)\n", - "Requirement already satisfied: notebook-shim>=0.2 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (0.2.4)\n", - "Requirement already satisfied: jupyter-lsp>=2.0.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.3.0)\n", - "Requirement already satisfied: async-lru>=1.0.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.0.5)\n", - "Requirement already satisfied: jupyterlab-server<3,>=2.28.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab->jupyter->-r requirements.txt (line 1)) (2.28.0)\n", "Requirement already satisfied: httpcore==1.* in ./.venv/lib/python3.9/site-packages (from httpx<1,>=0.25.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.0.9)\n", - "Requirement already satisfied: certifi in ./.venv/lib/python3.9/site-packages (from httpx<1,>=0.25.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2026.2.25)\n", "Requirement already satisfied: idna in ./.venv/lib/python3.9/site-packages (from httpx<1,>=0.25.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (3.11)\n", "Requirement already satisfied: anyio in ./.venv/lib/python3.9/site-packages (from httpx<1,>=0.25.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (4.12.1)\n", + "Requirement already satisfied: certifi in ./.venv/lib/python3.9/site-packages (from httpx<1,>=0.25.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2026.2.25)\n", "Requirement already satisfied: h11>=0.16 in ./.venv/lib/python3.9/site-packages (from httpcore==1.*->httpx<1,>=0.25.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.16.0)\n", "Requirement already satisfied: MarkupSafe>=2.0 in ./.venv/lib/python3.9/site-packages (from jinja2>=3.0.3->jupyterlab->jupyter->-r requirements.txt (line 1)) (3.0.3)\n", - "Requirement already satisfied: overrides>=5.0 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (7.7.0)\n", - "Requirement already satisfied: send2trash>=1.8.2 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2.1.0)\n", - "Requirement already satisfied: argon2-cffi>=21.1 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (25.1.0)\n", "Requirement already satisfied: jupyter-server-terminals>=0.4.4 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.5.4)\n", - "Requirement already satisfied: prometheus-client>=0.9 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.24.1)\n", "Requirement already satisfied: websocket-client>=1.7 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.9.0)\n", + "Requirement already satisfied: overrides>=5.0 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (7.7.0)\n", + "Requirement already satisfied: prometheus-client>=0.9 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.24.1)\n", + "Requirement already satisfied: argon2-cffi>=21.1 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (25.1.0)\n", "Requirement already satisfied: nbformat>=5.3.0 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (5.10.4)\n", + "Requirement already satisfied: send2trash>=1.8.2 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2.1.0)\n", "Requirement already satisfied: terminado>=0.8.3 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.18.1)\n", "Requirement already satisfied: jupyter-events>=0.11.0 in ./.venv/lib/python3.9/site-packages (from jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.12.0)\n", "Requirement already satisfied: argon2-cffi-bindings in ./.venv/lib/python3.9/site-packages (from argon2-cffi>=21.1->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (25.1.0)\n", - "Requirement already satisfied: python-json-logger>=2.0.4 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (4.0.0)\n", "Requirement already satisfied: rfc3339-validator in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.1.4)\n", - "Requirement already satisfied: jsonschema[format-nongpl]>=4.18.0 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (4.25.1)\n", "Requirement already satisfied: referencing in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.36.2)\n", - "Requirement already satisfied: rfc3986-validator>=0.1.1 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.1.1)\n", "Requirement already satisfied: pyyaml>=5.3 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (6.0.3)\n", + "Requirement already satisfied: python-json-logger>=2.0.4 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (4.0.0)\n", + "Requirement already satisfied: jsonschema[format-nongpl]>=4.18.0 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (4.25.1)\n", + "Requirement already satisfied: rfc3986-validator>=0.1.1 in ./.venv/lib/python3.9/site-packages (from jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.1.1)\n", "Requirement already satisfied: attrs>=22.2.0 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (25.4.0)\n", "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2025.9.1)\n", "Requirement already satisfied: rpds-py>=0.7.1 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.27.1)\n", - "Requirement already satisfied: uri-template in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.3.0)\n", - "Requirement already satisfied: rfc3987-syntax>=1.1.0 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.1.0)\n", - "Requirement already satisfied: isoduration in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (20.11.0)\n", - "Requirement already satisfied: webcolors>=24.6.0 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (24.11.1)\n", - "Requirement already satisfied: jsonpointer>1.13 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (3.0.0)\n", "Requirement already satisfied: fqdn in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.5.1)\n", + "Requirement already satisfied: rfc3987-syntax>=1.1.0 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.1.0)\n", + "Requirement already satisfied: uri-template in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.3.0)\n", + "Requirement already satisfied: webcolors>=24.6.0 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (24.11.1)\n", + "Requirement already satisfied: isoduration in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (20.11.0)\n", + "Requirement already satisfied: jsonpointer>1.13 in ./.venv/lib/python3.9/site-packages (from jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (3.0.0)\n", "Requirement already satisfied: requests>=2.31 in ./.venv/lib/python3.9/site-packages (from jupyterlab-server<3,>=2.28.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2.32.5)\n", "Requirement already satisfied: babel>=2.10 in ./.venv/lib/python3.9/site-packages (from jupyterlab-server<3,>=2.28.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2.18.0)\n", "Requirement already satisfied: json5>=0.9.0 in ./.venv/lib/python3.9/site-packages (from jupyterlab-server<3,>=2.28.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (0.13.0)\n", "Requirement already satisfied: defusedxml in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (0.7.1)\n", - "Requirement already satisfied: bleach[css]!=5.0.0 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (6.2.0)\n", - "Requirement already satisfied: jupyterlab-pygments in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (0.3.0)\n", - "Requirement already satisfied: beautifulsoup4 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (4.14.3)\n", "Requirement already satisfied: nbclient>=0.5.0 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (0.10.2)\n", + "Requirement already satisfied: bleach[css]!=5.0.0 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (6.2.0)\n", + "Requirement already satisfied: beautifulsoup4 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (4.14.3)\n", "Requirement already satisfied: pandocfilters>=1.4.1 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (1.5.1)\n", "Requirement already satisfied: mistune<4,>=2.0.3 in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (3.2.0)\n", + "Requirement already satisfied: jupyterlab-pygments in ./.venv/lib/python3.9/site-packages (from nbconvert->jupyter->-r requirements.txt (line 1)) (0.3.0)\n", "Requirement already satisfied: webencodings in ./.venv/lib/python3.9/site-packages (from bleach[css]!=5.0.0->nbconvert->jupyter->-r requirements.txt (line 1)) (0.5.1)\n", "Requirement already satisfied: tinycss2<1.5,>=1.1.0 in ./.venv/lib/python3.9/site-packages (from bleach[css]!=5.0.0->nbconvert->jupyter->-r requirements.txt (line 1)) (1.4.0)\n", "Requirement already satisfied: fastjsonschema>=2.15 in ./.venv/lib/python3.9/site-packages (from nbformat>=5.3.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (2.21.2)\n", @@ -151,8 +136,8 @@ "Requirement already satisfied: soupsieve>=1.6.1 in ./.venv/lib/python3.9/site-packages (from beautifulsoup4->nbconvert->jupyter->-r requirements.txt (line 1)) (2.8.3)\n", "Requirement already satisfied: arrow>=0.15.0 in ./.venv/lib/python3.9/site-packages (from isoduration->jsonschema[format-nongpl]>=4.18.0->jupyter-events>=0.11.0->jupyter-server<3,>=2.4.0->jupyterlab->jupyter->-r requirements.txt (line 1)) (1.4.0)\n", "Requirement already satisfied: executing>=1.2.0 in ./.venv/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (2.2.1)\n", - "Requirement already satisfied: pure-eval in ./.venv/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (0.2.3)\n", "Requirement already satisfied: asttokens>=2.1.0 in ./.venv/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (3.0.1)\n", + "Requirement already satisfied: pure-eval in ./.venv/lib/python3.9/site-packages (from stack-data->ipython>=7.23.1->ipykernel->-r requirements.txt (line 2)) (0.2.3)\n", "\u001b[33mWARNING: You are using pip version 21.2.4; however, version 26.0.1 is available.\n", "You should consider upgrading via the '/Users/dpadams/Repos/texas-inspection-expenses/.venv/bin/python -m pip install --upgrade pip' command.\u001b[0m\n", "Note: you may need to restart the kernel to use updated packages.\n" @@ -165,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 2, "id": "49de2b5c", "metadata": {}, "outputs": [], @@ -190,7 +175,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 3, "id": "08420da3", "metadata": {}, "outputs": [ @@ -227,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 4, "id": "43886f13", "metadata": {}, "outputs": [ @@ -278,7 +263,7 @@ "type": "float" } ], - "ref": "0436dff9-664a-46ac-95c2-865a2d24d0e6", + "ref": "637f5ccb-e9b5-40ab-af3d-ef5c68a29f10", "rows": [ [ "0", @@ -424,7 +409,7 @@ "4 122.90 " ] }, - "execution_count": 34, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -468,7 +453,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 5, "id": "3841e2f5", "metadata": {}, "outputs": [ @@ -529,7 +514,7 @@ "type": "float" } ], - "ref": "e87db138-c28f-4061-a904-1284759db0d2", + "ref": "213f1423-1974-46cf-86bc-55d9dfbf2ad0", "rows": [ [ "0", @@ -704,7 +689,7 @@ "4 402.90 " ] }, - "execution_count": 35, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -742,7 +727,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 6, "id": "9e196cac", "metadata": {}, "outputs": [ @@ -813,7 +798,7 @@ "type": "float" } ], - "ref": "199877e2-8343-4812-85c6-50c066a92f26", + "ref": "2726f2b4-dcd5-4244-a70e-f16867645142", "rows": [ [ "0", @@ -1387,7 +1372,7 @@ "17 2,659,208.00 280.80 " ] }, - "execution_count": 36, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -1433,7 +1418,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 7, "id": "896d152b", "metadata": {}, "outputs": [ @@ -1624,7 +1609,7 @@ "type": "float" } ], - "ref": "12bd4b8a-6b40-4525-b255-c31938fae03d", + "ref": "45f5cffb-c101-4f41-8a44-a007030136c0", "rows": [ [ "0", @@ -2031,7 +2016,7 @@ "[5 rows x 34 columns]" ] }, - "execution_count": 37, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -2093,7 +2078,7 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 8, "id": "92921756", "metadata": {}, "outputs": [ @@ -2166,7 +2151,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 9, "id": "5d2671c9", "metadata": {}, "outputs": [ @@ -2208,90 +2193,150 @@ "cell_type": "markdown", "id": "2084d5fe", "metadata": {}, - "source": "## Data and Methods\n\n### Data Sources\n\nThis study draws on two primary data sources. The first is the Texas Railroad Commission\n(RRC) Oil and Gas Division administrative database. Inspection records span fiscal years 2016\u20132025 and encompass approximately\n1.9 million inspection events distributed across 13 RRC administrative districts;\nviolation records include approximately 193,000 enforcement actions. From the inspections\ntable, district-year aggregates are constructed for three regulatory output measures:\n(1) *compliance rate* \u2014 the share of annual inspections in a district that did not result\nin a compliance failure; (2) *total inspections* \u2014 the count of field inspection events;\nand (3) average days between successive inspections of the same well, computed via a\nSQL window function (`LAG`) over ordered inspection timestamps. From the violations table,\ndistrict-year aggregates include the *violation resolution rate* (share of violations\nfor which the operator was found compliant on re-inspection), enforcement rate, and average\ndays from violation discovery to enforcement action.\n\nThe second source is RRC budget data drawn from Legislative Appropriations Requests,\ncovering fiscal years 2016\u20132024. Budget appropriations are reported at the statewide level\ndisaggregated by goal and strategy. Two strategies are central to this analysis:\n(1) *Oil and Gas Monitoring and Inspections* (OGI), which directly funds field inspection\noperations; and (2) *Energy Resource Development* (ERD), encompassing the broader mandate\nto promote oil and gas resource opportunities. For each strategy, the data include total\nappropriations, salaries, professional fees, travel, other operating expenditures, capital\noutlays, and authorized full-time equivalent (FTE) positions. Fiscal year 2024 represents\na budget estimate rather than expenditure actuals and is excluded from all regression\nmodels.\n\n### Sample and Panel Construction\n\nThe unit of analysis is the **district-year**. The analytic panel contains\n**N = 130 observations** (13 districts \u00d7 10 years, 2016\u20132025), of which\n**104 observations** (2016\u20132023) constitute the regression sample. Fiscal years\n2024 (budget estimate) and 2025 (no budget data available) are retained in\ndescriptive analyses but excluded from all regression models. Because inspection\nand enforcement activity in 2025 represents a partial year as of the data\nextract, enforcement-timing metrics for that year are subject to right-censoring:\nviolations discovered in late 2024 and 2025 may not yet have received a recorded\nenforcement action, compressing observed days-to-enforcement.. Because RRC budget\nappropriations are reported at the statewide level, budget and FTE variables enter the\npanel as year-varying but district-invariant covariates. Identification of budget effects\ntherefore relies on year-to-year variation in statewide appropriations rather than\ncross-district budget contrasts.\n\n### Measures\n\n**Dependent variables.** Three measures capture distinct dimensions of regulatory output:\n*total inspections* (inspection volume), *compliance rate* (%), and *violation resolution\nrate* (%). Compliance rate and resolution rate capture quality of enforcement rather than\nquantity and represent different points in the regulatory pipeline: compliance is measured\nat the point of inspection while resolution is measured after a violation has been\ndiscovered and acted upon.\n\n**Organizational capacity.** The primary capacity measure is OGI total appropriations in\nmillions of dollars ($\\text{Budget}_t$), reflecting the statewide resource envelope\navailable for inspection activities in year $t$. An auxiliary measure \u2014 OGI authorized\nFTE positions \u2014 is included in descriptive analyses.\n\n**Goal ambiguity.** Following Chun and Rainey (2005), goal ambiguity is operationalized\nvia the relative concentration of resources across missions. The *inspection budget share*\n($\\text{Share}_t$) captures the fraction of combined OGI and ERD appropriations directed\ntoward the inspection mandate:\n\n$$\\text{Share}_t = \\frac{\\text{OGI Budget}_t}{\\text{OGI Budget}_t + \\text{ERD Budget}_t}$$\n\nHigher values indicate greater mission clarity (resources more concentrated on inspections);\nlower values indicate greater goal ambiguity (resources spread across competing mandates).\nOver the study period $\\text{Share}_t$ ranged from 0.59 (2022) to 0.67 (2018), reflecting\nmeaningful year-to-year variation in budgetary prioritization.\n\n**Geographic moderators.** Two binary district-level indicators capture geographic\ncontext: $\\text{Offshore}_d = 1$ for districts 02, 03, and 04, which hold dual onshore\nand offshore oversight jurisdiction, and $\\text{Border}_d = 1$ for districts 01\u201304,\nwhich are proximate to the Texas Gulf Coast and the US\u2013Mexico border corridor.\n\n### Estimation Strategy\n\nAll models are estimated via ordinary least squares (OLS) with standard errors clustered\nat the district level ($G = 13$) to account for within-district serial correlation.\nDistrict fixed effects absorb time-invariant heterogeneity across offices \u2014 including\ndifferences in geographic complexity, historical enforcement culture, and staffing\ncomposition \u2014 and ensure that budget effects are identified from within-district,\nyear-to-year variation.\n\n**H1 \u2014 Baseline capacity model:**\n\n$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\sum_{d} \\gamma_d \\, \\mathbf{1}[\\text{district} = d] + \\varepsilon_{dt}$$\n\nwhere $Y_{dt}$ is the regulatory output for district $d$ in year $t$, $\\gamma_d$ are\ndistrict fixed effects, and $\\varepsilon_{dt}$ is the idiosyncratic error.\n\n**H2 \u2014 Goal ambiguity moderation:**\n\n$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\beta_2 \\, \\text{Share}_t + \\beta_3 \\left( \\text{Budget}_t \\times \\text{Share}_t \\right) + \\sum_{d} \\gamma_d + \\varepsilon_{dt}$$\n\nThe coefficient $\\beta_3$ tests whether goal clarity conditions the capacity\u2013output\nrelationship. A positive $\\hat{\\beta}_3$ would indicate that clearer mission focus\namplifies budget effects; a negative value would suggest diminishing returns or\ncross-strategy resource substitution.\n\n**H3 \u2014 District slope heterogeneity:**\n\n$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\sum_{d=2}^{D} \\delta_d \\left( \\text{Budget}_t \\times \\mathbf{1}[d] \\right) + \\sum_{d} \\gamma_d + \\varepsilon_{dt}$$\n\nDistrict-specific budget slopes are recovered as $\\hat{\\beta}_1 + \\hat{\\delta}_d$.\nBecause budget varies only along the time dimension and district fixed effects are\nincluded, interaction term standard errors are inflated by near-perfect multicollinearity;\nthese estimates are treated as descriptive indicators of heterogeneity only.\n\n**H4 \u2014 Geographic moderation and spatial autocorrelation:**\n\n$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\beta_2 \\, \\text{Offshore}_d + \\beta_3 \\, \\text{Border}_d + \\beta_4 \\left( \\text{Budget}_t \\times \\text{Offshore}_d \\right) + \\beta_5 \\left( \\text{Budget}_t \\times \\text{Border}_d \\right) + \\sum_{d} \\gamma_d + \\varepsilon_{dt}$$\n\n**Robustness checks.** Two supplementary tests address limitations of the\nbaseline models. First, wild cluster bootstrap inference (Rademacher weights,\n$B = 999$ draws; Cameron, Gelbach & Miller 2008) is used to re-test H1\ncoefficients, providing valid p-values with the small number of clusters\n($G = 13$). Second, a distributed lag specification replaces the\ncontemporaneous budget measure with its one-year lag ($\\text{Budget}_{t-1}$),\nand also estimates a model including both, to test whether budget effects\noperate with a delay consistent with a hiring-and-deployment mechanism.\nThe distributed lag regression sample covers 2017\u20132023 ($N = 91$).\n\nSpatial autocorrelation in H1 model residuals is assessed via Moran's $I$ computed on a\nrow-normalized inverse-distance spatial weights matrix constructed from district centroids\nderived by averaging well-level geographic coordinates within each district." + "source": [ + "## Data and Methods\n", + "\n", + "### Data Sources\n", + "\n", + "This study draws on two primary data sources. The first is the Texas Railroad Commission\n", + "(RRC) Oil and Gas Division administrative database. Inspection records span fiscal years 2016\u20132025 and encompass approximately\n", + "1.9 million inspection events distributed across 13 RRC administrative districts;\n", + "violation records include approximately 193,000 enforcement actions. From the inspections\n", + "table, district-year aggregates are constructed for three regulatory output measures:\n", + "(1) *compliance rate* \u2014 the share of annual inspections in a district that did not result\n", + "in a compliance failure; (2) *total inspections* \u2014 the count of field inspection events;\n", + "and (3) average days between successive inspections of the same well, computed via a\n", + "SQL window function (`LAG`) over ordered inspection timestamps. From the violations table,\n", + "district-year aggregates include the *violation resolution rate* (share of violations\n", + "for which the operator was found compliant on re-inspection), enforcement rate, and average\n", + "days from violation discovery to enforcement action.\n", + "\n", + "The second source is RRC budget data drawn from Legislative Appropriations Requests,\n", + "covering fiscal years 2016\u20132024. Budget appropriations are reported at the statewide level\n", + "disaggregated by goal and strategy. Two strategies are central to this analysis:\n", + "(1) *Oil and Gas Monitoring and Inspections* (OGI), which directly funds field inspection\n", + "operations; and (2) *Energy Resource Development* (ERD), encompassing the broader mandate\n", + "to promote oil and gas resource opportunities. For each strategy, the data include total\n", + "appropriations, salaries, professional fees, travel, other operating expenditures, capital\n", + "outlays, and authorized full-time equivalent (FTE) positions. Fiscal year 2024 represents\n", + "a budget estimate rather than expenditure actuals and is excluded from all regression\n", + "models.\n", + "\n", + "### Sample and Panel Construction\n", + "\n", + "The unit of analysis is the **district-year**. The analytic panel contains\n", + "**N = 130 observations** (13 districts \u00d7 10 years, 2016\u20132025), of which\n", + "**104 observations** (2016\u20132023) constitute the regression sample. Fiscal years\n", + "2024 (budget estimate) and 2025 (no budget data available) are retained in\n", + "descriptive analyses but excluded from all regression models. Because inspection\n", + "and enforcement activity in 2025 represents a partial year as of the data\n", + "extract, enforcement-timing metrics for that year are subject to right-censoring:\n", + "violations discovered in late 2024 and 2025 may not yet have received a recorded\n", + "enforcement action, compressing observed days-to-enforcement.. Because RRC budget\n", + "appropriations are reported at the statewide level, budget and FTE variables enter the\n", + "panel as year-varying but district-invariant covariates. Identification of budget effects\n", + "therefore relies on year-to-year variation in statewide appropriations rather than\n", + "cross-district budget contrasts.\n", + "\n", + "### Measures\n", + "\n", + "**Dependent variables.** Three measures capture distinct dimensions of regulatory output:\n", + "*total inspections* (inspection volume), *compliance rate* (%), and *violation resolution\n", + "rate* (%). Compliance rate and resolution rate capture quality of enforcement rather than\n", + "quantity and represent different points in the regulatory pipeline: compliance is measured\n", + "at the point of inspection while resolution is measured after a violation has been\n", + "discovered and acted upon.\n", + "\n", + "**Organizational capacity.** The primary capacity measure is OGI total appropriations in\n", + "millions of dollars ($\\text{Budget}_t$), reflecting the statewide resource envelope\n", + "available for inspection activities in year $t$. An auxiliary measure \u2014 OGI authorized\n", + "FTE positions \u2014 is included in descriptive analyses.\n", + "\n", + "**Goal ambiguity.** Following Chun and Rainey (2005), goal ambiguity is operationalized\n", + "via the relative concentration of resources across missions. The *inspection budget share*\n", + "($\\text{Share}_t$) captures the fraction of combined OGI and ERD appropriations directed\n", + "toward the inspection mandate:\n", + "\n", + "$$\\text{Share}_t = \\frac{\\text{OGI Budget}_t}{\\text{OGI Budget}_t + \\text{ERD Budget}_t}$$\n", + "\n", + "Higher values indicate greater mission clarity (resources more concentrated on inspections);\n", + "lower values indicate greater goal ambiguity (resources spread across competing mandates).\n", + "Over the study period $\\text{Share}_t$ ranged from 0.59 (2022) to 0.67 (2018), reflecting\n", + "meaningful year-to-year variation in budgetary prioritization.\n", + "\n", + "**Geographic moderators.** Two binary district-level indicators capture geographic\n", + "context: $\\text{Offshore}_d = 1$ for districts 02, 03, and 04, which hold dual onshore\n", + "and offshore oversight jurisdiction, and $\\text{Border}_d = 1$ for districts 01\u201304,\n", + "which are proximate to the Texas Gulf Coast and the US\u2013Mexico border corridor.\n", + "\n", + "### Estimation Strategy\n", + "\n", + "All models are estimated via ordinary least squares (OLS) with standard errors clustered\n", + "at the district level ($G = 13$) to account for within-district serial correlation.\n", + "District fixed effects absorb time-invariant heterogeneity across offices \u2014 including\n", + "differences in geographic complexity, historical enforcement culture, and staffing\n", + "composition \u2014 and ensure that budget effects are identified from within-district,\n", + "year-to-year variation.\n", + "\n", + "**H1 \u2014 Baseline capacity model:**\n", + "\n", + "$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\sum_{d} \\gamma_d \\, \\mathbf{1}[\\text{district} = d] + \\varepsilon_{dt}$$\n", + "\n", + "where $Y_{dt}$ is the regulatory output for district $d$ in year $t$, $\\gamma_d$ are\n", + "district fixed effects, and $\\varepsilon_{dt}$ is the idiosyncratic error.\n", + "\n", + "**H2 \u2014 Goal ambiguity moderation:**\n", + "\n", + "$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\beta_2 \\, \\text{Share}_t + \\beta_3 \\left( \\text{Budget}_t \\times \\text{Share}_t \\right) + \\sum_{d} \\gamma_d + \\varepsilon_{dt}$$\n", + "\n", + "The coefficient $\\beta_3$ tests whether goal clarity conditions the capacity\u2013output\n", + "relationship. A positive $\\hat{\\beta}_3$ would indicate that clearer mission focus\n", + "amplifies budget effects; a negative value would suggest diminishing returns or\n", + "cross-strategy resource substitution.\n", + "\n", + "**H3 \u2014 District slope heterogeneity:**\n", + "\n", + "$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\sum_{d=2}^{D} \\delta_d \\left( \\text{Budget}_t \\times \\mathbf{1}[d] \\right) + \\sum_{d} \\gamma_d + \\varepsilon_{dt}$$\n", + "\n", + "District-specific budget slopes are recovered as $\\hat{\\beta}_1 + \\hat{\\delta}_d$.\n", + "Because budget varies only along the time dimension and district fixed effects are\n", + "included, interaction term standard errors are inflated by near-perfect multicollinearity;\n", + "these estimates are treated as descriptive indicators of heterogeneity only.\n", + "\n", + "**H4 \u2014 Geographic moderation and spatial autocorrelation:**\n", + "\n", + "$$Y_{dt} = \\alpha + \\beta_1 \\, \\text{Budget}_t + \\beta_2 \\, \\text{Offshore}_d + \\beta_3 \\, \\text{Border}_d + \\beta_4 \\left( \\text{Budget}_t \\times \\text{Offshore}_d \\right) + \\beta_5 \\left( \\text{Budget}_t \\times \\text{Border}_d \\right) + \\sum_{d} \\gamma_d + \\varepsilon_{dt}$$\n", + "\n", + "**Robustness checks.** Two supplementary tests address limitations of the\n", + "baseline models. First, wild cluster bootstrap inference (Rademacher weights,\n", + "$B = 999$ draws; Cameron, Gelbach & Miller 2008) is used to re-test H1\n", + "coefficients, providing valid p-values with the small number of clusters\n", + "($G = 13$). Second, a distributed lag specification replaces the\n", + "contemporaneous budget measure with its one-year lag ($\\text{Budget}_{t-1}$),\n", + "and also estimates a model including both, to test whether budget effects\n", + "operate with a delay consistent with a hiring-and-deployment mechanism.\n", + "The distributed lag regression sample covers 2017\u20132023 ($N = 91$).\n", + "\n", + "Spatial autocorrelation in H1 model residuals is assessed via Moran's $I$ computed on a\n", + "row-normalized inverse-distance spatial weights matrix constructed from district centroids\n", + "derived by averaging well-level geographic coordinates within each district." + ] }, { "cell_type": "markdown", "id": "95f794b2", "metadata": {}, - "source": [ - "## Analysis\n", - "\n", - "This study employs a fixed-effects panel regression framework to examine whether\n", - "year-to-year changes in RRC organizational capacity \u2014 as measured by statewide budget\n", - "appropriations \u2014 translate into improvements in regulatory outputs across Texas oil and\n", - "gas inspection districts. The analytic panel spans 13 RRC districts over eight fiscal\n", - "years (2016\u20132023), yielding 104 district-year observations. The identification strategy\n", - "leverages within-district variation in outcomes as a function of year-to-year shifts in\n", - "statewide OGI appropriations, net of persistent inter-district differences absorbed by\n", - "district fixed effects.\n", - "\n", - "The choice of a district-year panel rather than a well-level panel is motivated by the\n", - "structure of the budget data, which is available only at the statewide level. Because the\n", - "key independent variable \u2014 OGI appropriations \u2014 varies along the time dimension only, it\n", - "functions as a common, year-specific exposure applied uniformly to all districts. District\n", - "fixed effects then absorb unobservable office-level characteristics that remain stable over\n", - "the study period, such as geographic complexity, historical enforcement intensity, and\n", - "local administrative capacity. Causal identification is thus predicated on the assumption\n", - "that, absent changes in budget, within-district outcome trajectories would have followed\n", - "parallel trends across years \u2014 an assumption that cannot be directly tested but is\n", - "partially supported by the pre-period stability visible in the descriptive trends.\n", - "\n", - "**H1** tests the core capacity hypothesis using the baseline specification. Each of the\n", - "three dependent variables \u2014 total inspections, compliance rate, and violation resolution\n", - "rate \u2014 is regressed separately on OGI budget (in millions of dollars) and district fixed\n", - "effects. Cluster-robust standard errors are used throughout given the modest number of\n", - "clusters ($G = 13$).\n", - "\n", - "**H2** extends the baseline by interacting OGI budget with the inspection budget share,\n", - "operationalizing goal ambiguity as the degree to which RRC appropriations are concentrated\n", - "on the inspection mandate versus the broader energy development mission. The sign and\n", - "significance of the interaction term $\\beta_3$ determines whether goal clarity amplifies\n", - "or attenuates the capacity\u2013output relationship.\n", - "\n", - "**H3** tests for heterogeneity in budget\u2013outcome slopes across districts by including\n", - "budget $\\times$ district interaction terms. Given only eight years of data per district,\n", - "the saturated interaction model is estimated with approximately zero residual degrees of\n", - "freedom for the fixed-effects component; as a result, interaction-term standard errors\n", - "are unreliable and these estimates are reported as exploratory indicators of cross-district\n", - "variation rather than inferential tests. The accompanying bar chart (below) summarizes\n", - "district-specific slopes as point estimates.\n", - "\n", - "**H4** assesses whether offshore-jurisdiction and border-proximate districts \u2014 which face\n", - "distinct operational environments \u2014 exhibit different budget sensitivity. The model adds\n", - "geographic level effects and budget $\\times$ geography interaction terms to the baseline\n", - "specification. A complementary spatial diagnostic \u2014 Moran's $I$ applied to the residuals\n", - "from the H1 compliance model \u2014 tests for geographic clustering of unexplained outcome\n", - "variation that could indicate omitted spatial processes or spillovers across district\n", - "boundaries.\n", - "\n", - "All regressions exclude fiscal years 2024 (budget estimate) and 2025 (no\n", - "budget data), retaining 2016\u20132023 as the regression sample (N = 104). The\n", - "extended panel through 2025 is used for descriptive trend analysis only.\n", - "Enforcement-timing metrics for 2025 should be interpreted cautiously: because\n", - "the data extract covers a partial year, violations discovered in late 2024 and\n", - "2025 may not yet have a recorded enforcement action, artificially compressing\n", - "observed days-to-enforcement and resolution rates for that year. Fiscal year 2017 recorded the\n", - "lowest OGI budget over the study period ($17.20M) and is retained as a within-sample\n", - "data point; the 2017 dip in budget coincides with slightly lower average inspections per\n", - "district, consistent with the capacity hypothesis.\n" - ] + "source": "## Analysis\n\nThis study employs a fixed-effects panel regression framework to examine whether\nyear-to-year changes in RRC organizational capacity \u2014 as measured by statewide budget\nappropriations \u2014 translate into improvements in regulatory outputs across Texas oil and\ngas inspection districts. The analytic panel spans 13 RRC districts over ten fiscal\nyears (2016\u20132025), yielding 130 district-year observations. Regression analyses are\nrestricted to 2016\u20132023 (N = 104), excluding FY2024 (budget estimate only) and FY2025\n(no budget data available). The identification strategy leverages within-district\nvariation in outcomes as a function of year-to-year shifts in statewide OGI\nappropriations, net of persistent inter-district differences absorbed by district fixed\neffects.\n\nThe choice of a district-year panel rather than a well-level panel is motivated by the\nstructure of the budget data, which is available only at the statewide level. Because the\nkey independent variable \u2014 OGI appropriations \u2014 varies along the time dimension only, it\nfunctions as a common, year-specific exposure applied uniformly to all districts. District\nfixed effects then absorb unobservable office-level characteristics that remain stable over\nthe study period, such as geographic complexity, historical enforcement intensity, and\nlocal administrative capacity. Causal identification is thus predicated on the assumption\nthat, absent changes in budget, within-district outcome trajectories would have followed\nparallel trends across years \u2014 an assumption that cannot be directly tested but is\npartially supported by the pre-period stability visible in the descriptive trends.\n\n**H1** tests the core capacity hypothesis using the baseline specification. Each of the\nthree dependent variables \u2014 total inspections, compliance rate, and violation resolution\nrate \u2014 is regressed separately on OGI budget (in millions of dollars) and district fixed\neffects. Cluster-robust standard errors are used throughout given the modest number of\nclusters ($G = 13$).\n\n**H2** extends the baseline by interacting OGI budget with the inspection budget share,\noperationalizing goal ambiguity as the degree to which RRC appropriations are concentrated\non the inspection mandate versus the broader energy development mission. The sign and\nsignificance of the interaction term $\\beta_3$ determines whether goal clarity amplifies\nor attenuates the capacity\u2013output relationship.\n\n**H3** tests for heterogeneity in budget\u2013outcome slopes across districts by including\nbudget $\\times$ district interaction terms. Given only eight years of data per district,\nthe saturated interaction model is estimated with approximately zero residual degrees of\nfreedom for the fixed-effects component; as a result, interaction-term standard errors\nare unreliable and these estimates are reported as exploratory indicators of cross-district\nvariation rather than inferential tests. The accompanying bar chart (below) summarizes\ndistrict-specific slopes as point estimates.\n\n**H4** assesses whether offshore-jurisdiction and border-proximate districts \u2014 which face\ndistinct operational environments \u2014 exhibit different budget sensitivity. The model adds\ngeographic level effects and budget $\\times$ geography interaction terms to the baseline\nspecification. A complementary spatial diagnostic \u2014 Moran's $I$ applied to the residuals\nfrom the H1 compliance model \u2014 tests for geographic clustering of unexplained outcome\nvariation that could indicate omitted spatial processes or spillovers across district\nboundaries.\n\nAll regressions exclude fiscal years 2024 (budget estimate) and 2025 (no budget data),\nretaining 2016\u20132023 as the regression sample (N = 104). The extended panel through 2025\nis used for descriptive trend analysis only. Enforcement-timing metrics for 2025 should\nbe interpreted cautiously: because the data extract covers a partial year, violations\ndiscovered in late 2024 and 2025 may not yet have a recorded enforcement action,\nartificially compressing observed days-to-enforcement and resolution rates for that year.\n\nTwo supplementary robustness checks address key inferential limitations. First, wild\ncluster bootstrap inference (Rademacher, B = 999) re-tests H1 with valid small-sample\np-values given G = 13 clusters. Second, a distributed lag specification tests whether\nbudget effects operate with a one-year delay, consistent with a hiring-and-deployment\nimplementation timeline. Results from both checks are reported following the main\nhypothesis tests.\n" }, { "cell_type": "markdown", "id": "3ca1410a", "metadata": {}, - "source": [ - "## H1: Organizational Capacity \u2192 Policy Outputs\n", - "\n", - "**Prediction:** Higher OGI budget and FTE predict more inspections, higher compliance rates, and faster violation resolution.\n", - "\n", - "**Model:** OLS with district fixed effects and year 2016\u20132023 (excluding 2024 budget estimate). Budget varies only over time, so it identifies via year-to-year changes in statewide RRC allocations; district FE absorbs persistent cross-district differences.\n" - ] + "source": "## H1: Organizational Capacity \u2192 Policy Outputs\n\n**Prediction:** Higher OGI budget predicts more inspections, higher compliance rates,\nand faster violation resolution.\n\n**Model:** OLS with district fixed effects, 2016\u20132023 (N = 104). Budget varies only over\ntime, identifying effects via year-to-year changes in statewide OGI appropriations;\ndistrict fixed effects absorb persistent cross-district differences. Standard errors\nclustered at the district level (G = 13).\n\n**Finding (preview):** All three outcomes show positive, statistically significant budget\ncoefficients under asymptotic inference. Wild cluster bootstrap results (reported in the\nRobustness Checks section) indicate these asymptotic p-values overstate precision; results\nshould be interpreted as suggestive rather than definitive.\n" }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 10, "id": "463387d3", "metadata": {}, "outputs": [ @@ -2327,7 +2372,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 11, "id": "535fc4eb", "metadata": {}, "outputs": [ @@ -2391,20 +2436,11 @@ "cell_type": "markdown", "id": "56add68a", "metadata": {}, - "source": [ - "## H2: Goal Ambiguity Moderates Capacity Effects\n", - "\n", - "**Prediction:** When a larger share of the combined RRC budget flows to the broader \"Energy Resource Development\" goal (lower `inspection_budget_share`), the capacity \u2192 output link weakens.\n", - "\n", - "**Operationalization:**\n", - "`inspection_budget_share = ogi_budget / (ogi_budget + erd_budget)`\n", - "\n", - "A negative interaction coefficient `ogi_budget_m \u00d7 inspection_budget_share` would be unexpected (higher share \u2192 weaker effect). A positive coefficient supports H2 \u2014 clearer mission focus amplifies the budget \u2192 compliance relationship.\n" - ] + "source": "## H2: Goal Ambiguity Moderates Capacity Effects\n\n**Prediction:** When a larger share of combined RRC budget flows to the broader\n\"Energy Resource Development\" goal (lower `inspection_budget_share`), the capacity \u2192\noutput link weakens. A positive interaction coefficient would support H2 \u2014 clearer\nmission focus amplifying budget effects.\n\n**Operationalization:**\n`inspection_budget_share = ogi_budget / (ogi_budget + erd_budget)`\n\n**Finding (preview):** The interaction is statistically significant but *negative*\n($\\hat{\\beta}_3 = -6.53$, $p < .01$ for compliance rate), indicating diminishing\nmarginal returns rather than amplification as the inspection mandate absorbs a larger\nbudget share. The moderation is not significant for resolution rate ($p > .15$).\nResults are discussed in the Results section.\n" }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 12, "id": "24187ce8", "metadata": {}, "outputs": [ @@ -2456,17 +2492,11 @@ "cell_type": "markdown", "id": "b6583857", "metadata": {}, - "source": [ - "## H3: District Multilevel Effects\n", - "\n", - "**Prediction:** The budget \u2192 output slope varies across RRC districts \u2014 some districts translate budget increases into better outputs more effectively than others.\n", - "\n", - "**Model:** Interaction `ogi_budget_m \u00d7 C(district)` \u2014 the reference district captures the baseline budget slope; interaction terms show how each other district's slope differs.\n" - ] + "source": "## H3: District Multilevel Effects\n\n**Prediction:** The budget \u2192 output slope varies across RRC districts \u2014 some districts\ntranslate budget increases into better outputs more effectively than others.\n\n**Model:** Interaction `ogi_budget_m \u00d7 C(district)` \u2014 the reference district captures\nthe baseline budget slope; interaction terms show how each other district's slope\ndiffers. Standard errors are unreliable due to near-perfect multicollinearity in the\nsaturated model (budget varies only over time while district FE absorb cross-sectional\nvariation); results are treated as descriptive point estimates only.\n\n**Finding (preview):** District slopes for compliance rate range from \u22120.34 pp per \\$1M\n(District 03, Houston/Coastal) to +1.36 pp per \\$1M (District 6E, East Texas Piney\nWoods), with most districts showing small positive slopes. The bar chart below plots\ndistrict-specific slope estimates.\n" }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 13, "id": "151faefd", "metadata": {}, "outputs": [ @@ -2551,18 +2581,11 @@ "cell_type": "markdown", "id": "5bb27b3e", "metadata": {}, - "source": [ - "## H4: Spatial and Geographic Factors\n", - "\n", - "**Predictions:**\n", - "- Offshore-jurisdiction districts (02, 03, 04) show a different budget \u2192 output relationship due to dual onshore/offshore oversight burden.\n", - "- Border-proximate districts show a different relationship due to cross-jurisdiction enforcement complexity.\n", - "- Spatial autocorrelation in H1 residuals (Moran's I) would indicate unmodeled geographic spillovers.\n" - ] + "source": "## H4: Spatial and Geographic Factors\n\n**Predictions:**\n- Offshore-jurisdiction districts (02, 03, 04) show a different budget \u2192 output\n relationship due to dual onshore/offshore oversight burden.\n- Border-proximate districts show a different relationship due to cross-jurisdiction\n enforcement complexity.\n- Spatial autocorrelation in H1 residuals (Moran's I) would indicate unmodeled\n geographic spillovers.\n\n**Finding (preview):** Offshore and border districts show significantly *higher* baseline\ncompliance rates (+7.6 pp and +6.0 pp respectively, both $p < .05$) but not different\nbudget sensitivity. Moran's $I = -0.051$ indicates slight spatial dispersion and no\nsignificant geographic clustering of residuals. Results are discussed in the Results\nsection.\n" }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 14, "id": "d6e56f00", "metadata": {}, "outputs": [ @@ -2609,7 +2632,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 15, "id": "74686bfe", "metadata": {}, "outputs": [ @@ -2720,245 +2743,35 @@ "cell_type": "markdown", "id": "02c42877", "metadata": {}, - "source": [ - "## Results\n", - "\n", - "### Descriptive Trends\n", - "\n", - "Table 1 summarizes year-level means for the key variables across 2016\u20132025, with\n", - "regression analyses restricted to 2016\u20132023. OGI appropriations grew from $18.47 million\n", - "in 2016 to $34.33 million in 2023 \u2014 an 86 percent nominal increase \u2014 with the FY2024\n", - "budget estimate reaching $38.51 million. Authorized FTE positions rose modestly from\n", - "256.7 to 271.2 over the same period. Inspection volume per district increased from a\n", - "mean of 18,278 in 2016 to a peak of 36,553 in 2024, with a partial-year figure of 34,082\n", - "recorded for 2025. Mean district compliance rate improved from 83.1 percent in 2016 to\n", - "a peak of 92.6 percent in 2024, with a slight moderation to 90.5 percent in the 2025\n", - "partial-year extract. Violation resolution rate rose from 36.8 percent in 2016 to 69.7\n", - "percent in 2023 before declining to 52.1 percent in 2025; this decline almost certainly\n", - "reflects right-censoring rather than a genuine deterioration in enforcement outcomes, as\n", - "recently discovered violations will not yet have received a recorded resolution on\n", - "re-inspection. Similarly, the 2025 days-to-enforcement figure of 36.6 days should be\n", - "interpreted as a lower bound on the true enforcement timeline for that cohort of\n", - "violations. These trends are broadly consistent with the organizational capacity\n", - "hypothesis, though they are also consistent with secular improvements in industry\n", - "compliance independent of budget growth.\n", - "\n", - "**Table 1. Year-Level Panel Means, 2016\u20132025**\n", - "\n", - "| Year | OGI Budget ($M) | OGI FTE | Inspections/District | Compliance Rate (%) | Resolution Rate (%) | Days to Enforcement |\n", - "|:----:|:---------------:|:-------:|:--------------------:|:-------------------:|:-------------------:|:-------------------:|\n", - "| 2016 | 18.47 | 256.7 | 18,278 | 83.1 | 36.8 | 131.9 |\n", - "| 2017 | 17.20 | 249.5 | 20,139 | 86.5 | 59.0 | 185.0 |\n", - "| 2018 | 17.56 | 229.9 | 25,704 | 90.2 | 59.5 | 207.3 |\n", - "| 2019 | 21.95 | 255.6 | 25,058 | 89.9 | 61.4 | 170.4 |\n", - "| 2020 | 26.06 | 284.0 | 27,669 | 89.6 | 56.8 | 154.7 |\n", - "| 2021 | 28.76 | 277.8 | 24,116 | 88.8 | 66.2 | 118.8 |\n", - "| 2022 | 25.91 | 264.0 | 32,024 | 89.8 | 67.9 | 91.5 |\n", - "| 2023 | 34.33 | 271.2 | 33,806 | 91.6 | 69.7 | 105.2 |\n", - "| 2024\u2020 | 38.51 | 280.8 | 36,553 | 92.6 | 65.1 | 76.9 |\n", - "| 2025\u2021 | \u2014 | \u2014 | 34,082 | 90.5 | 52.1 | 36.6\u2021 |\n", - "\n", - "*Note: Budget figures are nominal. FTE = authorized full-time equivalent positions.\n", - "Inspections/District = mean district-level annual inspection count.*\n", - "*\u2020 2024 budget is an appropriations estimate, not expenditure actuals; excluded from\n", - "regression models.*\n", - "*\u2021 2025 data is partial-year as of the data extract. Resolution rate and days-to-enforcement\n", - "are right-censored: violations discovered in late 2024\u20132025 may not yet have a recorded\n", - "enforcement action, compressing these metrics.*\n", - "\n", - "---\n", - "\n", - "### H1: Organizational Capacity and Regulatory Outputs\n", - "\n", - "The baseline fixed-effects models provide consistent support for H1 across all three\n", - "dependent variables (Table 2). Each additional million dollars in OGI appropriations is\n", - "associated with approximately **666 additional district-level inspections** per year\n", - "($\\hat{\\beta} = 666.30$, SE = 212.98, $z = 3.13$, $p < .01$; $R^2 = .769$). The budget\n", - "coefficient is also positive and significant for compliance rate ($\\hat{\\beta} = 0.26$\n", - "percentage points per \\$1M, SE = 0.11, $z = 2.31$, $p = .02$; $R^2 = .538$) and\n", - "violation resolution rate ($\\hat{\\beta} = 1.05$ percentage points per \\$1M, SE = 0.32,\n", - "$z = 3.28$, $p < .01$; $R^2 = .624$). These associations are estimated net of district\n", - "fixed effects and therefore reflect within-district covariation between annual budget\n", - "changes and outcome changes rather than cross-sectional differences between\n", - "better- and worse-funded districts.\n", - "\n", - "**Table 2. H1 Regression Results: OGI Budget \u2192 Regulatory Outputs**\n", - "\n", - "| Dependent Variable | $\\hat{\\beta}$ (Budget \\$M) | SE | $z$ | $p$ | $R^2$ | Adj. $R^2$ |\n", - "|---|:---:|:---:|:---:|:---:|:---:|:---:|\n", - "| Total inspections | 666.30 | 212.98 | 3.13 | <.01 | .769 | .736 |\n", - "| Compliance rate (%) | 0.26 | 0.11 | 2.31 | .02 | .538 | .471 |\n", - "| Resolution rate (%) | 1.05 | 0.32 | 3.28 | <.01 | .624 | .569 |\n", - "\n", - "*Note: All models include district fixed effects ($D = 13$). Standard errors clustered\n", - "at the district level. $N = 104$.*\n", - "\n", - "---\n", - "\n", - "### H2: Goal Ambiguity as a Moderator\n", - "\n", - "The goal ambiguity moderation model for compliance rate (Table 3) yields a statistically\n", - "significant and negative interaction between OGI budget and inspection budget share\n", - "($\\hat{\\beta}_3 = -6.53$, SE = 1.84, $z = -3.55$, $p < .01$). The negative sign is\n", - "substantively noteworthy: rather than amplifying the budget\u2013compliance relationship,\n", - "higher concentration of resources on the inspection mandate is associated with diminishing\n", - "marginal returns to additional appropriations. Evaluated at the mean inspection budget\n", - "share ($\\bar{s} \\approx 0.62$), the implied marginal effect of a \\$1 million budget\n", - "increase on compliance rate is approximately $4.20 - 6.53(0.62) \\approx 0.15$ percentage\n", - "points \u2014 consistent with, though slightly smaller than, the H1 estimate. This pattern\n", - "suggests that as the inspection program becomes better resourced relative to other RRC\n", - "mandates, the incremental compliance gain from further investment contracts, consistent\n", - "with a resource saturation or ceiling effect.\n", - "\n", - "For violation resolution rate, neither the main effect of inspection budget share nor\n", - "the interaction term attains conventional significance levels (all $p > .15$), indicating\n", - "that the goal ambiguity moderation finding is specific to inspection compliance performance\n", - "rather than enforcement resolution.\n", - "\n", - "**Table 3. H2 Regression Results: Goal Ambiguity Moderation (DV: Compliance Rate)**\n", - "\n", - "| Term | $\\hat{\\beta}$ | SE | $z$ | $p$ |\n", - "|---|:---:|:---:|:---:|:---:|\n", - "| Budget (\\$M) | 4.20 | 1.09 | 3.86 | <.01 |\n", - "| Inspection budget share | 170.18 | 44.79 | 3.80 | <.01 |\n", - "| Budget \u00d7 Share | \u22126.53 | 1.84 | \u22123.55 | <.01 |\n", - "\n", - "*Note: District fixed effects included. SE clustered at district. $R^2 = .567$,\n", - "Adj. $R^2 = .493$. $N = 104$.*\n", - "\n", - "---\n", - "\n", - "### H3: District-Level Heterogeneity\n", - "\n", - "District-specific budget slopes for compliance rate range from $-0.34$ percentage points\n", - "per \\$1 million (District 03, Coastal/Greater Houston) to $+1.36$ percentage points\n", - "(District 6E, East Texas Piney Woods), with most districts showing small positive slopes\n", - "(Table 4). The reference district (District 01, San Antonio) slope is 0.09 pp per \\$1M.\n", - "Positive slopes are most pronounced in District 6E (+1.36), District 06 (+0.43), and\n", - "District 7C (+0.40); District 03 is the only district with a substantially negative slope.\n", - "The model $R^2$ of .662 modestly exceeds the baseline H1 value (.538), consistent with\n", - "meaningful cross-district slope heterogeneity. Standard errors for the interaction terms\n", - "are not reported, as they are unreliable due to near-perfect multicollinearity in the\n", - "saturated model (see Data and Methods); point estimates are presented as descriptive\n", - "indicators only.\n", - "\n", - "**Table 4. H3 District-Specific Budget \u2192 Compliance Slopes (pp per \\$1M)**\n", - "\n", - "| District | Estimated Slope |\n", - "|:---:|:---:|\n", - "| 01 (San Antonio) | 0.09 |\n", - "| 02 (Corpus Christi) | 0.24 |\n", - "| 03 (Houston) | \u22120.34 |\n", - "| 04 (Laredo) | 0.28 |\n", - "| 05 (Midland/Abilene) | 0.05 |\n", - "| 06 (Kilgore) | 0.43 |\n", - "| 08 (Midland) | 0.28 |\n", - "| 09 (Wichita Falls) | 0.00 |\n", - "| 10 (Amarillo) | 0.13 |\n", - "| 6E (Kilgore East) | 1.36 |\n", - "| 7B (Abilene) | 0.27 |\n", - "| 7C (Big Spring) | 0.40 |\n", - "| 8A (Lubbock) | 0.19 |\n", - "\n", - "*Note: Slopes are $\\hat{\\beta}_1 + \\hat{\\delta}_d$ from the H3 interaction model.*\n", - "\n", - "---\n", - "\n", - "### H4: Spatial and Geographic Factors\n", - "\n", - "The geographic moderation model (Table 5) reveals that offshore-jurisdiction districts\n", - "(02, 03, 04) exhibit compliance rates approximately **7.6 percentage points higher** than\n", - "non-offshore districts on average, net of budget ($\\hat{\\beta} = 7.61$, SE = 3.29,\n", - "$z = 2.31$, $p = .02$). Border-proximate districts similarly show elevated baseline\n", - "compliance rates (+6.03 pp, SE = 2.84, $z = 2.12$, $p = .03$). These level effects may\n", - "reflect the heightened external scrutiny \u2014 from federal regulators, environmental\n", - "organizations, and media \u2014 that offshore and border districts attract, which could\n", - "independently drive compliance investments by operators regardless of RRC budget levels.\n", - "\n", - "The budget\u2013compliance slope, however, does not differ significantly between offshore\n", - "and non-offshore districts ($\\hat{\\beta}_4 = -0.03$, $p = .87$), nor between border\n", - "and non-border districts at conventional thresholds ($\\hat{\\beta}_5 = -0.25$, $p = .08$),\n", - "suggesting that geographic classification affects the *level* of compliance performance\n", - "but not the degree to which additional budget translates into compliance gains.\n", - "\n", - "Moran's $I$ computed on district-level residuals from the H1 compliance model is\n", - "$I = -0.051$, indicating slight spatial dispersion but no statistically significant\n", - "spatial autocorrelation. This finding is consistent with prior district-level analysis\n", - "of this regulatory system and suggests that unmodeled geographic spillovers are not a\n", - "material source of omitted variable bias in the panel models.\n", - "\n", - "**Table 5. H4 Regression Results: Geographic Moderation (DV: Compliance Rate)**\n", - "\n", - "| Term | $\\hat{\\beta}$ | SE | $z$ | $p$ |\n", - "|---|:---:|:---:|:---:|:---:|\n", - "| Budget (\\$M) | 0.35 | 0.15 | 2.39 | .02 |\n", - "| Offshore (= 1) | 7.61 | 3.29 | 2.31 | .02 |\n", - "| Border (= 1) | 6.03 | 2.84 | 2.12 | .03 |\n", - "| Budget \u00d7 Offshore | \u22120.03 | 0.18 | \u22120.16 | .87 |\n", - "| Budget \u00d7 Border | \u22120.25 | 0.15 | \u22121.74 | .08 |\n", - "\n", - "*Note: District fixed effects included. SE clustered at district. $R^2 = .553$,\n", - "Adj. $R^2 = .476$. $N = 104$. Moran's $I$ on H1 compliance residuals = \u22120.051 (no\n", - "significant spatial autocorrelation).*\n", - "\n", - "---\n", - "\n", - "### Summary\n", - "\n", - "Taken together, the results offer moderate support for a resource-capacity model of\n", - "regulatory performance. Higher OGI appropriations are reliably associated with greater\n", - "inspection volume, higher compliance rates, and faster violation resolution \u2014 though\n", - "identification rests on temporal variation in statewide appropriations rather than\n", - "quasi-experimental assignment, and the modest panel length limits statistical precision.\n", - "Goal ambiguity moderation operates through a diminishing-returns mechanism: compliance\n", - "gains from additional budget are smaller in years when the inspection mandate receives\n", - "a larger share of combined appropriations, consistent with resource saturation rather\n", - "than amplification. District heterogeneity in budget\u2013outcome slopes is substantial in\n", - "descriptive terms but cannot be precisely estimated with the available data. Finally,\n", - "geographic context \u2014 offshore jurisdiction and border proximity \u2014 predicts compliance\n", - "levels but not budget sensitivity, and spatial autocorrelation diagnostics provide no\n", - "evidence of unmodeled geographic spillover processes.\n", - "\n", - "### Robustness Checks\n", - "\n", - "Wild cluster bootstrap p-values and distributed lag results are reported in the\n", - "Robustness Checks section below. Conclusions regarding H1 significance should\n", - "be read alongside those results once the bootstrap has been run; if bootstrap\n", - "p-values align with asymptotic results, the H1 findings are robust to the\n", - "small-cluster concern. The distributed lag models assess whether the budget\n", - "effect is more consistent with an instantaneous or a lagged implementation\n", - "mechanism, with implications for causal interpretation.\n" - ] + "source": "## Results\n\n### Descriptive Trends\n\nTable 1 summarizes year-level means for the key variables across 2016\u20132025, with\nregression analyses restricted to 2016\u20132023. OGI appropriations grew from $18.47 million\nin 2016 to $34.33 million in 2023 \u2014 an 86 percent nominal increase \u2014 with the FY2024\nbudget estimate reaching $38.51 million. Authorized FTE positions rose modestly from\n256.7 to 271.2 over the same period. Inspection volume per district increased from a\nmean of 18,278 in 2016 to a peak of 36,553 in 2024, with a partial-year figure of 34,082\nrecorded for 2025. Mean district compliance rate improved from 83.1 percent in 2016 to\na peak of 92.6 percent in 2024, with a slight moderation to 90.5 percent in the 2025\npartial-year extract. Violation resolution rate rose from 36.8 percent in 2016 to 69.7\npercent in 2023 before declining to 52.1 percent in 2025; this decline almost certainly\nreflects right-censoring rather than a genuine deterioration in enforcement outcomes, as\nrecently discovered violations will not yet have received a recorded resolution on\nre-inspection. Similarly, the 2025 days-to-enforcement figure of 36.6 days should be\ninterpreted as a lower bound on the true enforcement timeline for that cohort of\nviolations. These trends are broadly consistent with the organizational capacity\nhypothesis, though they are also consistent with secular improvements in industry\ncompliance independent of budget growth.\n\n**Table 1. Year-Level Panel Means, 2016\u20132025**\n\n| Year | OGI Budget ($M) | OGI FTE | Inspections/District | Compliance Rate (%) | Resolution Rate (%) | Days to Enforcement |\n|:----:|:---------------:|:-------:|:--------------------:|:-------------------:|:-------------------:|:-------------------:|\n| 2016 | 18.47 | 256.7 | 18,278 | 83.1 | 36.8 | 131.9 |\n| 2017 | 17.20 | 249.5 | 20,139 | 86.5 | 59.0 | 185.0 |\n| 2018 | 17.56 | 229.9 | 25,704 | 90.2 | 59.5 | 207.3 |\n| 2019 | 21.95 | 255.6 | 25,058 | 89.9 | 61.4 | 170.4 |\n| 2020 | 26.06 | 284.0 | 27,669 | 89.6 | 56.8 | 154.7 |\n| 2021 | 28.76 | 277.8 | 24,116 | 88.8 | 66.2 | 118.8 |\n| 2022 | 25.91 | 264.0 | 32,024 | 89.8 | 67.9 | 91.5 |\n| 2023 | 34.33 | 271.2 | 33,806 | 91.6 | 69.7 | 105.2 |\n| 2024\u2020 | 38.51 | 280.8 | 36,553 | 92.6 | 65.1 | 76.9 |\n| 2025\u2021 | \u2014 | \u2014 | 34,082 | 90.5 | 52.1 | 36.6\u2021 |\n\n*Note: Budget figures are nominal. FTE = authorized full-time equivalent positions.\nInspections/District = mean district-level annual inspection count.*\n*\u2020 2024 budget is an appropriations estimate, not expenditure actuals; excluded from\nregression models.*\n*\u2021 2025 data is partial-year as of the data extract. Resolution rate and days-to-enforcement\nare right-censored: violations discovered in late 2024\u20132025 may not yet have a recorded\nenforcement action, compressing these metrics.*\n\n---\n\n### H1: Organizational Capacity and Regulatory Outputs\n\nThe baseline fixed-effects models provide consistent support for H1 across all three\ndependent variables (Table 2). Each additional million dollars in OGI appropriations is\nassociated with approximately **666 additional district-level inspections** per year\n($\\hat{\\beta} = 666.30$, SE = 212.98, $z = 3.13$, $p < .01$; $R^2 = .769$). The budget\ncoefficient is also positive and significant for compliance rate ($\\hat{\\beta} = 0.26$\npercentage points per \\$1M, SE = 0.11, $z = 2.31$, $p = .02$; $R^2 = .538$) and\nviolation resolution rate ($\\hat{\\beta} = 1.05$ percentage points per \\$1M, SE = 0.32,\n$z = 3.28$, $p < .01$; $R^2 = .624$). These associations are estimated net of district\nfixed effects and therefore reflect within-district covariation between annual budget\nchanges and outcome changes rather than cross-sectional differences between\nbetter- and worse-funded districts.\n\n**Table 2. H1 Regression Results: OGI Budget \u2192 Regulatory Outputs**\n\n| Dependent Variable | $\\hat{\\beta}$ (Budget \\$M) | SE | $z$ | $p$ | $R^2$ | Adj. $R^2$ |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|\n| Total inspections | 666.30 | 212.98 | 3.13 | <.01 | .769 | .736 |\n| Compliance rate (%) | 0.26 | 0.11 | 2.31 | .02 | .538 | .471 |\n| Resolution rate (%) | 1.05 | 0.32 | 3.28 | <.01 | .624 | .569 |\n\n*Note: All models include district fixed effects ($D = 13$). Standard errors clustered\nat the district level. $N = 104$.*\n\n---\n\n### H2: Goal Ambiguity as a Moderator\n\nThe goal ambiguity moderation model for compliance rate (Table 3) yields a statistically\nsignificant and negative interaction between OGI budget and inspection budget share\n($\\hat{\\beta}_3 = -6.53$, SE = 1.84, $z = -3.55$, $p < .01$). The negative sign is\nsubstantively noteworthy: rather than amplifying the budget\u2013compliance relationship,\nhigher concentration of resources on the inspection mandate is associated with diminishing\nmarginal returns to additional appropriations. Evaluated at the mean inspection budget\nshare ($\\bar{s} \\approx 0.62$), the implied marginal effect of a \\$1 million budget\nincrease on compliance rate is approximately $4.20 - 6.53(0.62) \\approx 0.15$ percentage\npoints \u2014 consistent with, though slightly smaller than, the H1 estimate. This pattern\nsuggests that as the inspection program becomes better resourced relative to other RRC\nmandates, the incremental compliance gain from further investment contracts, consistent\nwith a resource saturation or ceiling effect.\n\nFor violation resolution rate, neither the main effect of inspection budget share nor\nthe interaction term attains conventional significance levels (all $p > .15$), indicating\nthat the goal ambiguity moderation finding is specific to inspection compliance performance\nrather than enforcement resolution.\n\n**Table 3. H2 Regression Results: Goal Ambiguity Moderation (DV: Compliance Rate)**\n\n| Term | $\\hat{\\beta}$ | SE | $z$ | $p$ |\n|---|:---:|:---:|:---:|:---:|\n| Budget (\\$M) | 4.20 | 1.09 | 3.86 | <.01 |\n| Inspection budget share | 170.18 | 44.79 | 3.80 | <.01 |\n| Budget \u00d7 Share | \u22126.53 | 1.84 | \u22123.55 | <.01 |\n\n*Note: District fixed effects included. SE clustered at district. $R^2 = .567$,\nAdj. $R^2 = .493$. $N = 104$.*\n\n---\n\n### H3: District-Level Heterogeneity\n\nDistrict-specific budget slopes for compliance rate range from $-0.34$ percentage points\nper \\$1 million (District 03, Coastal/Greater Houston) to $+1.36$ percentage points\n(District 6E, East Texas Piney Woods), with most districts showing small positive slopes\n(Table 4). The reference district (District 01, San Antonio) slope is 0.09 pp per \\$1M.\nPositive slopes are most pronounced in District 6E (+1.36), District 06 (+0.43), and\nDistrict 7C (+0.40); District 03 is the only district with a substantially negative slope.\nThe model $R^2$ of .662 modestly exceeds the baseline H1 value (.538), consistent with\nmeaningful cross-district slope heterogeneity. Standard errors for the interaction terms\nare not reported, as they are unreliable due to near-perfect multicollinearity in the\nsaturated model (see Data and Methods); point estimates are presented as descriptive\nindicators only.\n\n**Table 4. H3 District-Specific Budget \u2192 Compliance Slopes (pp per \\$1M)**\n\n| District | Estimated Slope |\n|:---:|:---:|\n| 01 (San Antonio) | 0.09 |\n| 02 (Corpus Christi) | 0.24 |\n| 03 (Houston) | \u22120.34 |\n| 04 (Laredo) | 0.28 |\n| 05 (Midland/Abilene) | 0.05 |\n| 06 (Kilgore) | 0.43 |\n| 08 (Midland) | 0.28 |\n| 09 (Wichita Falls) | 0.00 |\n| 10 (Amarillo) | 0.13 |\n| 6E (Kilgore East) | 1.36 |\n| 7B (Abilene) | 0.27 |\n| 7C (Big Spring) | 0.40 |\n| 8A (Lubbock) | 0.19 |\n\n*Note: Slopes are $\\hat{\\beta}_1 + \\hat{\\delta}_d$ from the H3 interaction model.*\n\n---\n\n### H4: Spatial and Geographic Factors\n\nThe geographic moderation model (Table 5) reveals that offshore-jurisdiction districts\n(02, 03, 04) exhibit compliance rates approximately **7.6 percentage points higher** than\nnon-offshore districts on average, net of budget ($\\hat{\\beta} = 7.61$, SE = 3.29,\n$z = 2.31$, $p = .02$). Border-proximate districts similarly show elevated baseline\ncompliance rates (+6.03 pp, SE = 2.84, $z = 2.12$, $p = .03$). These level effects may\nreflect the heightened external scrutiny \u2014 from federal regulators, environmental\norganizations, and media \u2014 that offshore and border districts attract, which could\nindependently drive compliance investments by operators regardless of RRC budget levels.\n\nThe budget\u2013compliance slope, however, does not differ significantly between offshore\nand non-offshore districts ($\\hat{\\beta}_4 = -0.03$, $p = .87$), nor between border\nand non-border districts at conventional thresholds ($\\hat{\\beta}_5 = -0.25$, $p = .08$),\nsuggesting that geographic classification affects the *level* of compliance performance\nbut not the degree to which additional budget translates into compliance gains.\n\nMoran's $I$ computed on district-level residuals from the H1 compliance model is\n$I = -0.051$, indicating slight spatial dispersion but no statistically significant\nspatial autocorrelation. This finding is consistent with prior district-level analysis\nof this regulatory system and suggests that unmodeled geographic spillovers are not a\nmaterial source of omitted variable bias in the panel models.\n\n**Table 5. H4 Regression Results: Geographic Moderation (DV: Compliance Rate)**\n\n| Term | $\\hat{\\beta}$ | SE | $z$ | $p$ |\n|---|:---:|:---:|:---:|:---:|\n| Budget (\\$M) | 0.35 | 0.15 | 2.39 | .02 |\n| Offshore (= 1) | 7.61 | 3.29 | 2.31 | .02 |\n| Border (= 1) | 6.03 | 2.84 | 2.12 | .03 |\n| Budget \u00d7 Offshore | \u22120.03 | 0.18 | \u22120.16 | .87 |\n| Budget \u00d7 Border | \u22120.25 | 0.15 | \u22121.74 | .08 |\n\n*Note: District fixed effects included. SE clustered at district. $R^2 = .553$,\nAdj. $R^2 = .476$. $N = 104$. Moran's $I$ on H1 compliance residuals = \u22120.051 (no\nsignificant spatial autocorrelation).*\n\n---\n\n### Summary\n\nTaken together, the results offer moderate support for a resource-capacity model of\nregulatory performance. Higher OGI appropriations are reliably associated with greater\ninspection volume, higher compliance rates, and faster violation resolution \u2014 though\nidentification rests on temporal variation in statewide appropriations rather than\nquasi-experimental assignment, and the modest panel length limits statistical precision.\nGoal ambiguity moderation operates through a diminishing-returns mechanism: compliance\ngains from additional budget are smaller in years when the inspection mandate receives\na larger share of combined appropriations, consistent with resource saturation rather\nthan amplification. District heterogeneity in budget\u2013outcome slopes is substantial in\ndescriptive terms but cannot be precisely estimated with the available data. Finally,\ngeographic context \u2014 offshore jurisdiction and border proximity \u2014 predicts compliance\nlevels but not budget sensitivity, and spatial autocorrelation diagnostics provide no\nevidence of unmodeled geographic spillover processes.\n\n### Robustness Checks\n\n**Wild cluster bootstrap.** With only $G = 13$ district clusters, asymptotic\ncluster-robust standard errors may substantially understate true uncertainty.\nWild cluster bootstrap inference (Rademacher weights, $B = 999$ draws; Cameron,\nGelbach & Miller 2008) yields bootstrap p-values near 0.49\u20130.51 for all three\nH1 outcomes: total inspections ($p_{boot} = 0.494$), compliance rate\n($p_{boot} = 0.473$), and resolution rate ($p_{boot} = 0.509$). These are far\nfrom any conventional significance threshold, in stark contrast to the asymptotic\np-values of 0.002, 0.021, and 0.001. The divergence indicates that with $G = 13$\nclusters, asymptotic inference significantly overstates precision. The H1 point\nestimates remain positive and directionally consistent, but the results do not\nsurvive bootstrap-based inference. This is the principal inferential limitation\nof the study.\n\n**Table 7. Wild Cluster Bootstrap vs. Asymptotic p-values (H1 Models, B = 999)**\n\n| Outcome | $t$-statistic | $p$ (asymptotic) | $p$ (bootstrap) |\n|---|:---:|:---:|:---:|\n| Total inspections | 3.13 | .002 | .494 |\n| Compliance rate | 2.31 | .021 | .473 |\n| Resolution rate | 3.28 | .001 | .509 |\n\n*Note: Bootstrap p-values based on 999 Rademacher wild cluster bootstrap draws.*\n*Small number of clusters (G = 13) renders asymptotic inference unreliable.*\n\n**Distributed lag model.** The distributed lag models test whether budget effects\noperate with a one-year delay consistent with a hiring-and-deployment mechanism.\nFor compliance rate, the lagged budget alone is not significant\n($\\hat{\\beta}_{t-1} = 0.10$, $p = .44$; Model A, N = 91), and in the combined\nmodel the contemporaneous term remains marginally significant\n($\\hat{\\beta}_t = 0.24$, $p = .04$) while the lagged term is negative and\nnon-significant ($\\hat{\\beta}_{t-1} = -0.14$, $p = .12$; Model B). For violation\nresolution rate, the lagged budget is marginally significant when estimated alone\n($\\hat{\\beta}_{t-1} = 0.83$, $p = .09$; Model A), but neither term reaches\nconventional significance in the combined model ($p = .22$ and $p = .14$).\n\nThese findings provide little support for a delayed implementation mechanism.\nThe persistence of contemporaneous effects alongside non-significant lagged terms\nis more consistent with an immediate budget\u2013output relationship. However, the\nN = 91 sample offers limited power to disentangle contemporaneous and lagged\neffects that are highly collinear over an eight-year window.\n\n**Table 8. Distributed Lag Results (2017\u20132023, N = 91)**\n\n| Model | DV | $\\hat{\\beta}_t$ | $p$ | $\\hat{\\beta}_{t-1}$ | $p$ | $R^2$ |\n|---|---|:---:|:---:|:---:|:---:|:---:|\n| A \u2014 Lag only | Compliance rate | \u2014 | \u2014 | 0.10 | .44 | .543 |\n| B \u2014 Both | Compliance rate | 0.24 | .04 | \u22120.14 | .12 | .569 |\n| A \u2014 Lag only | Resolution rate | \u2014 | \u2014 | 0.83 | .09 | .696 |\n| B \u2014 Both | Resolution rate | 0.24 | .22 | 0.59 | .14 | .698 |\n\n*Note: District fixed effects included; SE clustered at district.*\n" }, { "cell_type": "markdown", "id": "360e76f4", "metadata": {}, - "source": [ - "## Robustness Checks\n", - "\n", - "Two checks address limitations of the baseline H1 models.\n", - "\n", - "**Wild cluster bootstrap** re-tests H1 with bootstrap inference rather than\n", - "asymptotic cluster-robust standard errors. With only G = 13 clusters,\n", - "asymptotic results can be unreliable; Rademacher wild cluster bootstrap\n", - "(Cameron, Gelbach & Miller 2008) provides valid p-values regardless of\n", - "cluster count.\n", - "\n", - "**Distributed lag model** relaxes the assumption that budget effects are\n", - "instantaneous. A one-year lag reflects a plausible implementation timeline:\n", - "appropriations are enacted, hiring and training occur, then inspection activity\n", - "increases. If the lagged coefficient is significant while the contemporaneous\n", - "one weakens, that pattern is harder to explain with a simple confounding time\n", - "trend and strengthens the causal interpretation.\n" - ] + "source": "## Robustness Checks\n\nTwo checks address limitations of the baseline H1 models.\n\n**Wild cluster bootstrap** re-tests H1 with valid small-sample inference rather than\nasymptotic cluster-robust standard errors. With $G = 13$ clusters, asymptotic results\ncan overstate precision. Rademacher wild cluster bootstrap ($B = 999$ draws; Cameron,\nGelbach & Miller 2008) yields p-values near 0.49\u20130.51 for all three H1 outcomes \u2014\nfar from any conventional threshold \u2014 indicating that the asymptotic H1 results do\nnot survive this correction. Point estimates remain positive and substantively consistent\nin direction, but the study lacks the cluster count required to establish significance\nthrough bootstrap inference.\n\n**Distributed lag model** relaxes the assumption that budget effects are instantaneous.\nA one-year lag of OGI budget is estimated alone (Model A) and jointly with the\ncontemporaneous term (Model B), over the 2017\u20132023 sample (N = 91). The lagged budget\nis not independently significant for compliance rate ($p = .44$) and only marginally so\nfor resolution rate ($p = .09$). In the combined models, contemporaneous effects persist\nwhile lagged terms do not attain significance \u2014 providing little evidence that a delayed\nmechanism dominates an immediate one.\n" }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "id": "12b7ded8", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Wild Cluster Bootstrap \u2014 H1 Models (B = 999 Rademacher draws)\n", + "Outcome t-stat p asymptotic p bootstrap\n", + "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "total_inspections 3.128 0.002*** 0.494* \n", + "compliance_rate 2.307 0.021** 0.473* \n", + "resolution_rate 3.277 0.001*** 0.509* \n", + "\n", + "* p<.10 ** p<.05 *** p<.01\n" + ] + } + ], "source": [ "# Wild cluster bootstrap (Rademacher weights, B=999)\n", "# For each draw: multiply each cluster's residuals by \u00b11, re-fit, record t-stat.\n", @@ -3007,10 +2820,44 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "id": "1add0c69", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Distributed lag sample: 91 obs | years 2017\u20132023\n", + "\n", + "\u2500\u2500 Compliance Rate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "Model A \u2014 Lagged budget only (t\u22121):\n", + " Coef. Std.Err. z P>|z|\n", + "ogi_budget_m_lag1 0.10 0.13 0.77 0.44\n", + " R\u00b2 = 0.543 Adj. R\u00b2 = 0.466\n", + "\n", + "Model B \u2014 Contemporaneous + 1-year lag:\n", + " Coef. Std.Err. z P>|z|\n", + "ogi_budget_m 0.24 0.11 2.08 0.04\n", + "ogi_budget_m_lag1 -0.14 0.09 -1.55 0.12\n", + " R\u00b2 = 0.569 Adj. R\u00b2 = 0.490\n", + "\n", + "\u2500\u2500 Resolution Rate \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", + "\n", + "Model A \u2014 Lagged budget only (t\u22121):\n", + " Coef. Std.Err. z P>|z|\n", + "ogi_budget_m_lag1 0.83 0.49 1.69 0.09\n", + " R\u00b2 = 0.696 Adj. R\u00b2 = 0.644\n", + "\n", + "Model B \u2014 Contemporaneous + 1-year lag:\n", + " Coef. Std.Err. z P>|z|\n", + "ogi_budget_m 0.24 0.19 1.22 0.22\n", + "ogi_budget_m_lag1 0.59 0.40 1.46 0.14\n", + " R\u00b2 = 0.698 Adj. R\u00b2 = 0.642\n" + ] + } + ], "source": [ "# Distributed lag: 1-year lag of OGI budget (shift within district).\n", "# Lag is NaN for 2016 (no 2015 data), so regression sample is 2017-2023 (N=91).\n", @@ -3080,30 +2927,7 @@ "cell_type": "markdown", "id": "90c60ad1", "metadata": {}, - "source": [ - "## Hypotheses Summary\n", - "\n", - "**Table 6. Summary of Hypotheses, Predictions, Findings, and Empirical Support**\n", - "\n", - "| # | Hypothesis | Prediction | Key Result | Support |\n", - "|:---:|---|---|---|:---:|\n", - "| **H1a** | Capacity \u2192 Inspection volume | Higher OGI budget predicts more inspections per district | \u03b2 = 666.3 inspections per $1M (z = 3.13, p < .01); R\u00b2 = .769 | \u2713 |\n", - "| **H1b** | Capacity \u2192 Compliance | Higher OGI budget predicts higher district compliance rate | \u03b2 = 0.26 pp per $1M (z = 2.31, p = .02); R\u00b2 = .538 | \u2713 |\n", - "| **H1c** | Capacity \u2192 Resolution | Higher OGI budget predicts higher violation resolution rate | \u03b2 = 1.05 pp per $1M (z = 3.28, p < .01); R\u00b2 = .624 | \u2713 |\n", - "| **H2a** | Goal ambiguity moderates capacity \u2192 compliance | Clearer inspection focus amplifies budget effect | Interaction significant but **negative** (\u03b2 = \u22126.53, z = \u22123.55, p < .01): higher inspection share produces diminishing, not amplified, returns | Partial\u2020 |\n", - "| **H2b** | Goal ambiguity moderates capacity \u2192 resolution | Clearer inspection focus amplifies budget effect | Interaction not significant (p = .24) | \u2717 |\n", - "| **H3** | District heterogeneity in budget slopes | Budget \u2192 compliance slope varies across districts | Point estimates range from \u22120.34 pp/$1M (D03) to +1.36 pp/$1M (D6E); inference unreliable due to multicollinearity | Descriptive only\u2021 |\n", - "| **H4a** | Offshore jurisdiction moderates budget effect | Offshore districts show different budget \u2192 compliance slope | Level effect significant (+7.6 pp, p = .02); slope interaction not significant (\u03b2 = \u22120.03, p = .87) | Partial\u00a7 |\n", - "| **H4b** | Border proximity moderates budget effect | Border districts show different budget \u2192 compliance slope | Level effect significant (+6.0 pp, p = .03); slope interaction marginal (\u03b2 = \u22120.25, p = .08) | Partial\u00a7 |\n", - "| **H4c** | Spatial autocorrelation in residuals | Geographic spillovers produce clustered residuals | Moran's I = \u22120.051; no significant spatial autocorrelation | \u2717 |\n", - "\n", - "*Notes:*\n", - "*\u2020 H2 moderation operates through a diminishing-returns mechanism rather than amplification. At mean inspection budget share (\u2248 0.62), the implied marginal budget effect on compliance is approximately 0.15 pp per $1M.*\n", - "*\u2021 H3 interaction standard errors are unreliable (near-perfect multicollinearity in the saturated model); budget slopes are reported as descriptive point estimates only.*\n", - "*\u00a7 Geographic classification predicts compliance **levels** but not budget sensitivity. Offshore and border districts exhibit systematically higher compliance regardless of annual budget variation.*\n", - "\n", - "**Regression sample:** N = 104 (13 districts \u00d7 8 years, 2016\u20132023). All models include district fixed effects; standard errors clustered at the district level.\n" - ] + "source": "## Hypotheses Summary\n\n**Table 6. Summary of Hypotheses, Predictions, Findings, and Empirical Support**\n\n| # | Hypothesis | Prediction | Key Result | Support |\n|:---:|---|---|---|:---:|\n| **H1a** | Capacity \u2192 Inspection volume | Higher OGI budget predicts more inspections per district | \u03b2 = 666.3/\\$1M (z = 3.13, p < .01); bootstrap p = .494 | \u2713\u2020 |\n| **H1b** | Capacity \u2192 Compliance | Higher OGI budget predicts higher district compliance rate | \u03b2 = 0.26 pp/\\$1M (z = 2.31, p = .02); bootstrap p = .473 | \u2713\u2020 |\n| **H1c** | Capacity \u2192 Resolution | Higher OGI budget predicts higher violation resolution rate | \u03b2 = 1.05 pp/\\$1M (z = 3.28, p < .01); bootstrap p = .509 | \u2713\u2020 |\n| **H2a** | Goal ambiguity moderates capacity \u2192 compliance | Clearer inspection focus amplifies budget effect | Significant but **negative** (\u03b2 = \u22126.53, z = \u22123.55, p < .01): diminishing returns, not amplification | Partial\u2021 |\n| **H2b** | Goal ambiguity moderates capacity \u2192 resolution | Clearer inspection focus amplifies budget effect | Interaction not significant (p = .24) | \u2717 |\n| **H3** | District heterogeneity in budget slopes | Budget \u2192 compliance slope varies across districts | Slopes from \u22120.34 pp/\\$1M (D03) to +1.36 pp/\\$1M (D6E); inference unreliable | Descriptive\u00a7 |\n| **H4a** | Offshore jurisdiction moderates budget effect | Offshore districts show different budget \u2192 compliance slope | Level effect: +7.6 pp (p = .02); slope interaction not significant (p = .87) | Partial\u00b6 |\n| **H4b** | Border proximity moderates budget effect | Border districts show different budget \u2192 compliance slope | Level effect: +6.0 pp (p = .03); slope interaction marginal (p = .08) | Partial\u00b6 |\n| **H4c** | Spatial autocorrelation in residuals | Geographic spillovers produce clustered residuals | Moran's I = \u22120.051; no significant spatial autocorrelation | \u2717 |\n\n*Notes:*\n\n*\u2020 H1 point estimates are positive and directionally consistent across all three outcomes,\nsupporting the capacity hypothesis substantively. However, wild cluster bootstrap\ninference (B = 999 Rademacher draws) yields p-values near 0.49\u20130.51 for all outcomes,\nindicating that asymptotic cluster-robust standard errors substantially overstate precision\nwith G = 13 clusters. H1 findings should be interpreted as suggestive rather than\nstatistically definitive. Distributed lag models (2017\u20132023, N = 91) show contemporaneous\neffects persist while lagged terms do not reach significance, providing no clear evidence\nfor a delayed implementation mechanism.*\n\n*\u2021 H2 moderation operates through a diminishing-returns mechanism rather than\namplification. At mean inspection budget share (\u2248 0.62), the implied marginal\neffect of a \\$1M budget increase on compliance is approximately 0.15 pp. Moderation\nis not significant for resolution rate.*\n\n*\u00a7 H3 interaction standard errors are unreliable (near-perfect multicollinearity in\nthe saturated model); budget slopes are reported as descriptive point estimates only.*\n\n*\u00b6 Geographic classification predicts compliance **levels** but not budget sensitivity.\nOffshore and border districts exhibit systematically higher compliance regardless of\nannual budget variation.*\n\n**Regression sample:** N = 104 (13 districts \u00d7 8 years, 2016\u20132023). All models include\ndistrict fixed effects; standard errors clustered at the district level (G = 13).\nRobustness sample: N = 91 (2017\u20132023, distributed lag models).\n" } ], "metadata": {