Skip to content

Instantly share code, notes, and snippets.

@ryxcommar
Last active August 22, 2021 03:18
Show Gist options
  • Save ryxcommar/966d7e5f4d889f5a1ef0cda7a9ceb6c6 to your computer and use it in GitHub Desktop.
Save ryxcommar/966d7e5f4d889f5a1ef0cda7a9ceb6c6 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import statsmodels.api as sm\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"plt.style.use(\"ggplot\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>c</th>\n",
" <th>x1</th>\n",
" <th>x2</th>\n",
" <th>y</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.030508</td>\n",
" <td>1.966174</td>\n",
" <td>9.487650</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0.419409</td>\n",
" <td>2.923098</td>\n",
" <td>11.610776</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>0.877692</td>\n",
" <td>0.882242</td>\n",
" <td>9.856643</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>0.713503</td>\n",
" <td>1.770054</td>\n",
" <td>10.380393</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>0.323982</td>\n",
" <td>0.962531</td>\n",
" <td>7.462197</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" c x1 x2 y\n",
"0 1 0.030508 1.966174 9.487650\n",
"1 1 0.419409 2.923098 11.610776\n",
"2 1 0.877692 0.882242 9.856643\n",
"3 1 0.713503 1.770054 10.380393\n",
"4 1 0.323982 0.962531 7.462197"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def get_data(a: float, b1: float, b2: float) -> pd.DataFrame:\n",
" np.random.seed(42069)\n",
" df = pd.DataFrame(index=range(1000))\n",
" df[\"c\"] = 1\n",
" df[\"x1\"] = np.random.uniform(size=len(df))\n",
" df[\"x2\"] = 0.5 + df[\"x1\"] * a + 3 * np.random.uniform(size=len(df))\n",
" df[\"y\"] = 2 + df[\"x1\"] * b1 + df[\"x2\"] * b2 + 4 * np.random.uniform(size=len(df))\n",
" return df\n",
"\n",
"df_example = get_data(-0.3, 5.0, 2.0)\n",
"df_example.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"R squared values\n",
"===============================================================================\n",
"x1: 0.2618785366707874\n",
"x2: 0.43364660022532064\n",
"sum of parts: 0.6955251368961081\n",
"-------------------------------------------------------------------------------\n",
"x1 and x2: 0.773152077924897\n"
]
}
],
"source": [
"def rsquares(df: pd.DataFrame) -> tuple:\n",
" reg_x1 = sm.OLS(endog=df[\"y\"], exog=df[[\"c\", \"x1\"]]).fit()\n",
" reg_x2 = sm.OLS(endog=df[\"y\"], exog=df[[\"c\", \"x2\"]]).fit()\n",
" reg_combined = sm.OLS(endog=df[\"y\"], exog=df[[\"c\", \"x1\", \"x2\"]]).fit()\n",
" return tuple(map(lambda x: x.rsquared, [reg_x1, reg_x2, reg_combined]))\n",
"\n",
"rx1, rx2, rboth = rsquares(df_example)\n",
"\n",
"# Negative corrleation between x1 and x2, plus positive partial effects of both\n",
"# x1 and x2 in y, causes \"enhancement\"\n",
"\n",
"print(\"R squared values\")\n",
"print(\"=\" * 79)\n",
"print(\"x1: \", rx1)\n",
"print(\"x2: \", rx2)\n",
"print(\"sum of parts:\", rx1 + rx2)\n",
"print(\"-\" * 79)\n",
"print(\"x1 and x2: \", rboth)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f8a8227c5b0>]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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Rdx33337vDZ37lzmzp3LnXfeWWqGCal6GoBThXr16kVmZiYLFiwoacvKyiIpKYkePXqUel5k27ZtbNu2rdTxffr0ITU1ld9++63U8T///DNdunTZZwSt+NfnZ511FnfeeWepX9deey0AJ598MnfeeSexsbGB+zA1gL/f45s3b2b8+PHExsZy99136xbsXr169SpZ/apYQUEBc+bMoW3btiWPYezcuXOfqWeOO+441q5dW6qg3Lp1K8uWLdNgkIPwp88zMjJ4+OGHMcbw73//m4iIiIBmr4kq2t/HH3/8Pj+n77zzTgC6d+/OnXfeWerRMAkMXZmsQr169aJt27a88MILbN68mUaNGvHVV1/hui5Dhgwpte+4ceMA34oAxc477zx+/PFHJkyYwNlnn014eDhff/01RUVFehbnAPzp8/j4+H2WACy+jdKqVSv9T3c//Onv3NxcHn74YbKzsxkwYACLFy8utX/z5s3r7Ij6tm3b0qtXL959912ysrJo3rw53333HTt27OD6668v2e+5555jxYoVTJs2raTtzDPPZPbs2YwfP54BAwYQFBTEf//7XyIjIxkwYIAXH6dG8KfPH374YbZv387AgQNZtWpVqRVcoqKiyr08YF1Q0f6Oi4sjLi5uv+8ZGxurn9MeUTFZhRzHYdSoUUyZMoXPP/+c/Px8EhISGDlyJC1btjzk8VFRUTz44IO89dZbfPrppxQVFdGuXTtuvvnmWnur1V/+9rmUjz/9vWvXLlJTUwF455139nm9b9++dbaYBLjpppuYOnUqc+fOZffu3bRu3Zq7776bTp06HfS4sLAwxowZw5tvvsn777+PtZZOnToxbNgwXTE7hIr2+caNGwHfJNr/q1OnTiomD6Ci/S3Vj7G2ji+AKyIiIiIVpofuRERERKTCVEyKiIiISIWpmBQRERGRClMxKSIiIiIVpmJSRERERCpMxaSIiIiIVJiKSRERERGpMBWTIiIiIlJhKiZFREREpMJUTIqIiIhIhWltbhGRA/jmm29Ys2YNGzZsYNOmTeTn5zNo0CAuvvjigObYsGEDCxYsYOnSpWzfvp1du3YRERFBx44dGThwIPHx8QHNIyLydyomRUQO4D//+Q85OTk0aNCA6Ohotm/f7kmOyZMns3r1auLj4+nZsyf169dn48aNzJ8/n59++olbb72V4447zpNsIiIq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\n",
"text/plain": [
"<Figure size 720x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# We can see how negative correlation between x1 and x2 causes enhancement (but\n",
"# not for extremely negative correlations.)\n",
"\n",
"dfr = pd.DataFrame(index=range(-200, 200))\n",
"dfr[\"idx\"] = dfr.index / 100\n",
"\n",
"def get_enhancement(ser: pd.Series):\n",
" df = get_data(ser[\"idx\"], 5.0, 8.0)\n",
"\n",
" rx1, rx2, rboth = rsquares(df)\n",
"\n",
" ser[\"x1_rsq\"] = rx1\n",
" ser[\"x2_rsq\"] = rx2\n",
" ser[\"enhancement\"] = rboth - (rx1 + rx2)\n",
" ser[\"x1_x2_corr\"] = df[[\"x1\", \"x2\"]].corr().loc[\"x1\", \"x2\"]\n",
" return ser\n",
"\n",
"dfr = dfr.apply(get_enhancement, axis=1)\n",
"\n",
"fig, ax = plt.subplots(dpi=120)\n",
"sns.lineplot(x=dfr[\"x1_x2_corr\"], y=dfr[\"enhancement\"], ax=ax)\n",
"ax.plot([dfr[\"x1_x2_corr\"].min(), 0, 0], [0, 0, dfr[\"enhancement\"].min()], linestyle=\"--\")"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f8a826262e0>]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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8/nnn7NlyxaaNWtG165dGTFiBN26davf8I2Uv31errS0lDvuuIPNmzdzxRVXMHz48HpK3LjVtr9d12XevHl89913rF+/nry8POLj4xk4cCDDhg0jPDw8QO+gYSopKWH69OnMnz+fvLw8unbtyiWXXMLhhx9+wH2zsrJ4+eWXWbp0KdZaevfuzYgRI2jXrl0Akjdete3z7777jgULFrBmzRp27txJ69at6devH+effz4tW7YMUPrGx5/P+O9NmDCBZcuWMXToUK655pp6SitV0ZnJeuS6LhMnTuTrr7/m9NNP5/LLLycnJ4fx48eTnp5erdd49tlneemll0hISODqq6/mggsuoE2bNuTm5tZz+sapLvq83KeffsqOHTvqKWnT4E9/FxcXM3nyZHJzcznttNMYMWIEiYmJzJgxg0ceeYRgH7XsmWee4aOPPuL444/nqquuwnEcHnnkEVatWlXlfkVFRYwfP57U1FTOPfdcLrzwQtatW8cDDzzArl27ApS+captn0+ZMoXNmzdzwgkncNVVV3HkkUfy6aefcs8991BcXByg9I1Pbfv797777jt++eWXekwp1WKl3nzzzTf2wgsvtN9++21FW05Ojh05cqR98sknq73/d999V58xmxR/+7zczp077YgRI+zbb79tL7zwQvvBBx/UR9xGz5/+LikpsatWrdqrvbzPlyxZUud5G4u0tLS9Pne7d++2N954o/373/9e5b7vv/++vfDCC21aWlpF26ZNm+zFF19sX3/99XrL3Nj50+fLly/fq23u3Ln2wgsvtLNnz67zrE2BP/39++3HjBlT8Z3x/PPP11dcOQCdmaxHKSkpREdH079//4q2qKgoBgwYwKJFiygpKaly/48++oikpCT69++P67oUFRXVd+RGz98+L/f666/TsWNHTjzxxPqK2iT409+hoaH07Nlzr/by19q8eXPdB24kUlJScByHwYMHV7SFh4dzyimn8Msvv1R5xjwlJYXExESSkpIq2jp16kSfPn349ttv6zV3Y+ZPn/fu3XuvNn2Oq+ZPf5f773//i7VWtyA1ACom69H69etJSEjAcSp3c1JSErt3767yMmBBQQGrV68mMTGRN954g5EjR/LnP/+ZG2+8kQULFtR39EbLnz4vt3r1ar766itGjhxZTymbjrro7z/auXMnAK1ataqLiI3SunXr6NCh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bZ7kmDp1KmlpaSQkJNC/f3+aN2/Ohg0bWLBgAd999x233HILxx57rCfZRERUTIqI7Mctt9xCp06daNu2LXPnzmXy5Mme5Dj++OO56aabaN++faX2+fPn89RTTzFlyhT69etHaKi+0kUk8PTNIyJBY9KkSSxatIiRI0dy5plnVlr31ltv8e6773LyySdz/fXXA3DkkUfWeYa8vDzuvPNOsrOzeeihhypdonZdlwkTJrBixQpuvPFGTjzxRADOOOOMfb7WCSecwMyZM0lPT2fjxo21vty9e/duPvnkE1JSUtiyZQvWWtq0aUOfPn0477zziImJqdg2Ozubd955h8WLF5OVlUVERAS9evXivPPO2+v45QX4mDFjiImJ4f3332fdunUUFhYyY8aMA64XkcZBD+CISNAYM2YMbdq04fXXX2fdunUV7cuWLeO9996jc+fOXH311fWaITIykrFjx2Kt5YknnqCwsLBi3cyZM1mxYgUnnXRSRSF5ICEhIQA4Tu2+zvPy8rjnnnt44403KCoq4uSTT2bIkCF06tSJuXPnsnnz5optMzIyuOuuu5g1axbt2rVj2LBhHHHEEfz444/cc889/PDDD/s8RkpKChMnTqR58+acdtppDBw4sEbrRaRh05lJEQka5YXcAw88wJNPPsmjjz5KUVERTz31FGFhYfz1r3+lWbNm9Z6jR48eXHLJJbz++us899xz3HLLLSxfvpx33nmHTp06cc0111TrdX755Rc2bdpEXFwcXbp0qVWWF154gQ0bNnDaaadxzTXXVCpKi4qKcF23Ynnq1KlkZ2dzySWXcN5551W0Dx06lPvvv59nnnmGyZMn07x580rHWLx4MePGjdvvmd4DrReRhk3FpIgElZ49e3LxxRfzxhtvMGXKFHJzc9m5cyd/+ctfOOiggwKWY/jw4axYsYIFCxbQtWtXPv300xoVtHl5eTzzzDMAjBgxolZnJnNycliwYAGxsbFceeWVe73G74vCzMxMlixZQps2bRg+fHil7Xr27Mlxxx3H/Pnz+e677xg0aFCl9UcffXSVheKB1otIw6bL3CISdM4++2yOOOIIvv76a5YuXcpxxx3HqaeeGtAMxhhuvPFGYmNjefPNN8nOzmbkyJHVOsNYVFTEpEmTSE9PZ/jw4QwYMKBWGdasWYO1ll69eu11NvGPym8LOOSQQ/b5oM9hhx1WabvfS0pKqvK1D7ReRBo2FZMiEnSMMfTv379i+U9/+pMnOcrHigRo1apVte6TLCoqYuLEiaxatYqzzjqLK664otbHz8/PByAuLu6A2xYUFAAQGxu7z/Xl7eXb/d7vH+DZlwOtF5GGTcWkiASd9PR0XnvtNVq2bIkxhv/85z8UFxcHPMc333zDggULaNWqFbt27eLFF1+scvvCwkIeeeQRVq5cyfDhw/nzn//s1/FbtmwJQFZW1gG3jYiIAGDnzp37XJ+dnV1pu98zxlT52gdaLyINm4pJEQkqJSUlPPnkk+zevZu//vWvnHvuuWzcuJGXX345oDm2bt3KlClTiIqKYtKkSfTq1YsvvviCb775Zp/bFxQU8NBDD5Gamsp5553n1xnJcklJSRhjSE1NpaioqMptDz74YABWrVpFWVnZXutXrFhRaTsRCR4qJkUkqLz22musW7eO4cOHc/jhh3PRRRfRs2dPZs+ezbfffhuQDKWlpTz55JMUFRVxww030Lp1a8aOHUurVq2YMmUKW7durbR9Xl4eEyZMIC0tjYsuuqjOpnOMioriuOOOIzs7m9dee63Sk9vgu6Reftm6devWHH744Wzfvp2PPvqo0nZpaWl8/fXXtGzZstLtAyISHPQ0t4gEjYULF/Lpp5/SvXv3ioLMcRzGjh3L3/72N/7zn/+QkJBAu3btAJgzZw6rVq0CqCjwfvjhBzIzMwHo1KkT55xzTo1zTJs2jbVr13LWWWfRt29fwHff4pgxY3j00Ud58skneeihhyoedHn88cdZs2YN7dq1w3XdfQ7o3b9/f7p161bjLFdffTW//vorn3/+OStXruSII44gNDSUjIwMlixZwt/+9jd69+4NwOjRo7n33nuZNm0aS5cuJSEhgczMTFJSUjDGMGbMGFq0aFHjDCLSuKmYFJGgsGPHDp599lkiIiIYO3ZsxWDfAG3atOH666/nscce48knn2TChAmEhoayatUqvvrqq0qvs2HDBjZs2ADAoYceWuNictGiRXz88cckJiZy2WWXVVrXr18//vSnP/HRRx/x2muvcdVVVwG+wcIBtm3bxsyZM/f5uvHx8bUqJiMjI5kwYQIff/wxCxYsYPbs2TiOQ+vWrTn55JPp3Llzxbbt2rVj4sSJFTPgrFixgoiICI444gjOO+88PZUtEqSMtdZ6HUJEREREGifdMykiIiIitaZiUkRERERqTfdMioj4acWKFRVD41SlZcuW9T5A+ty5cyvusaxKt27d9OS1iNQJFZMiIn5asWLFfh+M+b22bdsGpJhcuXLlAbcbNGiQikkRqRN6AEdEREREak33TIqIiIhIramYFBEREZFaUzEpIiIiIrWmYlJEREREak3FpIiIiIjUmopJEREREak1FZMiIiIiUmsqJkVERESk1lRMioiIiEitqZgUERERkVr7f0IVa2O0qnzFAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 720x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# What happens if the partial effects of x1 and x2 have opposite signs in y?\n",
"# Then enhancement occurs when x1 and x2 are positively corrleated. (Again,\n",
"# though, at extreme levels of correlation, enhancement goes away.)\n",
"\n",
"dfr = pd.DataFrame(index=range(-200, 200))\n",
"dfr[\"idx\"] = dfr.index / 100\n",
"\n",
"def get_enhancement(ser: pd.Series):\n",
" df = get_data(ser[\"idx\"], -3.0, 4.0)\n",
"\n",
" rx1, rx2, rboth = rsquares(df)\n",
"\n",
" ser[\"x1_rsq\"] = rx1\n",
" ser[\"x2_rsq\"] = rx2\n",
" ser[\"enhancement\"] = rboth - (rx1 + rx2)\n",
" ser[\"x1_x2_corr\"] = df[[\"x1\", \"x2\"]].corr().loc[\"x1\", \"x2\"]\n",
" return ser\n",
"\n",
"dfr = dfr.apply(get_enhancement, axis=1)\n",
"\n",
"fig, ax = plt.subplots(dpi=120)\n",
"sns.lineplot(x=dfr[\"x1_x2_corr\"], y=dfr[\"enhancement\"], ax=ax)\n",
"ax.plot([dfr[\"x1_x2_corr\"].min(), 0, 0], [0, 0, dfr[\"enhancement\"].min()], linestyle=\"--\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment