Skip to content

Commit

Permalink
Merge pull request #9216 from bashtage/doc-interactions
Browse files Browse the repository at this point in the history
DOC: Fix interactions notebook
  • Loading branch information
bashtage committed Apr 18, 2024
2 parents 633b1f3 + 530b20f commit 2329992
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 49 deletions.
83 changes: 41 additions & 42 deletions examples/notebooks/interactions_anova.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@
"metadata": {},
"outputs": [],
"source": [
"from urllib.request import urlopen\n",
"import os\n",
"import shutil\n",
"import requests\n",
"import numpy as np\n",
"\n",
"np.set_printoptions(precision=4, suppress=True)\n",
Expand All @@ -44,13 +46,19 @@
"from statsmodels.graphics.api import interaction_plot, abline_plot\n",
"from statsmodels.stats.anova import anova_lm\n",
"\n",
"try:\n",
" salary_table = pd.read_csv(\"salary.table\")\n",
"except: # recent pandas can read URL without urlopen\n",
" url = \"http://stats191.stanford.edu/data/salary.table\"\n",
" fh = urlopen(url)\n",
" salary_table = pd.read_table(fh)\n",
" salary_table.to_csv(\"salary.table\")\n",
"\n",
"def download_file(url, mode=\"t\"):\n",
" local_filename = url.split(\"/\")[-1]\n",
" if os.path.exists(local_filename):\n",
" return local_filename\n",
" with requests.get(url, stream=True) as r:\n",
" with open(local_filename, f\"w{mode}\") as f:\n",
" f.write(r.text)\n",
" return local_filename\n",
"\n",
"\n",
"url = \"https://raw.githubusercontent.com/statsmodels/smdatasets/main/data/anova/salary/salary.table\"\n",
"salary_table = pd.read_csv(download_file(url), sep=\"\\t\")\n",
"\n",
"E = salary_table.E\n",
"M = salary_table.M\n",
Expand Down Expand Up @@ -454,7 +462,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Minority Employment Data"
"## Ethnic Employment Data"
]
},
{
Expand All @@ -463,13 +471,10 @@
"metadata": {},
"outputs": [],
"source": [
"try:\n",
" jobtest_table = pd.read_table(\"jobtest.table\")\n",
"except: # do not have data already\n",
" url = \"http://stats191.stanford.edu/data/jobtest.table\"\n",
" jobtest_table = pd.read_table(url)\n",
"url = \"https://raw.githubusercontent.com/statsmodels/smdatasets/main/data/anova/jobtest/jobtest.table\"\n",
"jobtest_table = pd.read_csv(download_file(url), sep=\"\\t\")\n",
"\n",
"factor_group = jobtest_table.groupby([\"MINORITY\"])\n",
"factor_group = jobtest_table.groupby([\"ETHN\"])\n",
"\n",
"fig, ax = plt.subplots(figsize=(6, 6))\n",
"colors = [\"purple\", \"green\"]\n",
Expand All @@ -481,7 +486,7 @@
" group[\"JPERF\"],\n",
" color=colors[factor_id],\n",
" marker=markers[factor_id],\n",
" s=12 ** 2,\n",
" s=12**2,\n",
" )\n",
"ax.set_xlabel(\"TEST\")\n",
"ax.set_ylabel(\"JPERF\")"
Expand Down Expand Up @@ -511,7 +516,7 @@
" group[\"JPERF\"],\n",
" color=colors[factor_id],\n",
" marker=markers[factor_id],\n",
" s=12 ** 2,\n",
" s=12**2,\n",
" )\n",
"\n",
"ax.set_xlabel(\"TEST\")\n",
Expand All @@ -525,7 +530,7 @@
"metadata": {},
"outputs": [],
"source": [
"min_lm2 = ols(\"JPERF ~ TEST + TEST:MINORITY\", data=jobtest_table).fit()\n",
"min_lm2 = ols(\"JPERF ~ TEST + TEST:ETHN\", data=jobtest_table).fit()\n",
"\n",
"print(min_lm2.summary())"
]
Expand All @@ -544,7 +549,7 @@
" group[\"JPERF\"],\n",
" color=colors[factor_id],\n",
" marker=markers[factor_id],\n",
" s=12 ** 2,\n",
" s=12**2,\n",
" )\n",
"\n",
"fig = abline_plot(\n",
Expand All @@ -555,7 +560,7 @@
")\n",
"fig = abline_plot(\n",
" intercept=min_lm2.params[\"Intercept\"],\n",
" slope=min_lm2.params[\"TEST\"] + min_lm2.params[\"TEST:MINORITY\"],\n",
" slope=min_lm2.params[\"TEST\"] + min_lm2.params[\"TEST:ETHN\"],\n",
" ax=ax,\n",
" color=\"green\",\n",
")"
Expand All @@ -567,7 +572,7 @@
"metadata": {},
"outputs": [],
"source": [
"min_lm3 = ols(\"JPERF ~ TEST + MINORITY\", data=jobtest_table).fit()\n",
"min_lm3 = ols(\"JPERF ~ TEST + ETHN\", data=jobtest_table).fit()\n",
"print(min_lm3.summary())"
]
},
Expand All @@ -585,7 +590,7 @@
" group[\"JPERF\"],\n",
" color=colors[factor_id],\n",
" marker=markers[factor_id],\n",
" s=12 ** 2,\n",
" s=12**2,\n",
" )\n",
"\n",
"fig = abline_plot(\n",
Expand All @@ -595,7 +600,7 @@
" color=\"purple\",\n",
")\n",
"fig = abline_plot(\n",
" intercept=min_lm3.params[\"Intercept\"] + min_lm3.params[\"MINORITY\"],\n",
" intercept=min_lm3.params[\"Intercept\"] + min_lm3.params[\"ETHN\"],\n",
" slope=min_lm3.params[\"TEST\"],\n",
" ax=ax,\n",
" color=\"green\",\n",
Expand All @@ -608,7 +613,7 @@
"metadata": {},
"outputs": [],
"source": [
"min_lm4 = ols(\"JPERF ~ TEST * MINORITY\", data=jobtest_table).fit()\n",
"min_lm4 = ols(\"JPERF ~ TEST * ETHN\", data=jobtest_table).fit()\n",
"print(min_lm4.summary())"
]
},
Expand All @@ -626,7 +631,7 @@
" group[\"JPERF\"],\n",
" color=colors[factor_id],\n",
" marker=markers[factor_id],\n",
" s=12 ** 2,\n",
" s=12**2,\n",
" )\n",
"\n",
"fig = abline_plot(\n",
Expand All @@ -636,8 +641,8 @@
" color=\"purple\",\n",
")\n",
"fig = abline_plot(\n",
" intercept=min_lm4.params[\"Intercept\"] + min_lm4.params[\"MINORITY\"],\n",
" slope=min_lm4.params[\"TEST\"] + min_lm4.params[\"TEST:MINORITY\"],\n",
" intercept=min_lm4.params[\"Intercept\"] + min_lm4.params[\"ETHN\"],\n",
" slope=min_lm4.params[\"TEST\"] + min_lm4.params[\"TEST:ETHN\"],\n",
" ax=ax,\n",
" color=\"green\",\n",
")"
Expand All @@ -649,7 +654,7 @@
"metadata": {},
"outputs": [],
"source": [
"# is there any effect of MINORITY on slope or intercept?\n",
"# is there any effect of ETHN on slope or intercept?\n",
"table5 = anova_lm(min_lm, min_lm4)\n",
"print(table5)"
]
Expand All @@ -660,7 +665,7 @@
"metadata": {},
"outputs": [],
"source": [
"# is there any effect of MINORITY on intercept\n",
"# is there any effect of ETHN on intercept\n",
"table6 = anova_lm(min_lm, min_lm3)\n",
"print(table6)"
]
Expand All @@ -671,7 +676,7 @@
"metadata": {},
"outputs": [],
"source": [
"# is there any effect of MINORITY on slope\n",
"# is there any effect of ETHN on slope\n",
"table7 = anova_lm(min_lm, min_lm2)\n",
"print(table7)"
]
Expand Down Expand Up @@ -700,12 +705,9 @@
"metadata": {},
"outputs": [],
"source": [
"try:\n",
" rehab_table = pd.read_csv(\"rehab.table\")\n",
"except:\n",
" url = \"http://stats191.stanford.edu/data/rehab.csv\"\n",
" rehab_table = pd.read_table(url, delimiter=\",\")\n",
" rehab_table.to_csv(\"rehab.table\")\n",
"url = \"https://raw.githubusercontent.com/statsmodels/smdatasets/main/data/anova/rehab/rehab.csv\"\n",
"rehab_table = pd.read_csv(download_file(url))\n",
"\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 6))\n",
"fig = rehab_table.boxplot(\"Time\", \"Fitness\", ax=ax, grid=False)"
Expand Down Expand Up @@ -746,11 +748,8 @@
"metadata": {},
"outputs": [],
"source": [
"try:\n",
" kidney_table = pd.read_table(\"./kidney.table\")\n",
"except:\n",
" url = \"http://stats191.stanford.edu/data/kidney.table\"\n",
" kidney_table = pd.read_csv(url, delim_whitespace=True)"
"url = \"https://raw.githubusercontent.com/statsmodels/smdatasets/main/data/anova/kidney/kidney.table\"\n",
"kidney_table = pd.read_csv(download_file(url), sep=\"\\s+\", engine=\"python\")"
]
},
{
Expand Down Expand Up @@ -888,7 +887,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.11"
"version": "3.11.0"
}
},
"nbformat": 4,
Expand Down
2 changes: 1 addition & 1 deletion examples/notebooks/recursive_ls.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
"version": "3.11.0"
}
},
"nbformat": 4,
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/statespace_arma_0.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -407,7 +407,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -421,7 +421,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
"version": "3.11.0"
}
},
"nbformat": 4,
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/statespace_local_linear_trend.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -289,7 +289,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
"version": "3.11.0"
}
},
"nbformat": 4,
Expand Down
4 changes: 2 additions & 2 deletions examples/notebooks/statespace_news.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -707,7 +707,7 @@
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
Expand All @@ -721,7 +721,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
"version": "3.11.0"
}
},
"nbformat": 4,
Expand Down

0 comments on commit 2329992

Please sign in to comment.