{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Foundations of Computational Economics #17\n", "\n", "by Fedor Iskhakov, ANU\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "## Linear regression using Pandas and Numpy\n", "\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "[https://youtu.be/LafDXp28IRE](https://youtu.be/LafDXp28IRE)\n", "\n", "Description: Using Numpy and Pandas to estimate simple regression." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Linear regression\n", "\n", "Recall the classic linear regression model with data in columns of\n", "$ (X,y) $, where $ X $ are independent variables and $ y $ is\n", "the dependent variable.\n", "Parameter vector to be estimated is $ \\beta $, and we assume that\n", "errors follow $ \\varepsilon \\sim N(0, \\sigma) $\n", "\n", "$$\n", "y = X \\beta + \\varepsilon \\quad \\quad \\varepsilon \\sim N(0, \\sigma)\n", "$$\n", "\n", "Let $ \\hat{\\beta} $ denote the estimate of the parameters $ \\beta $.\n", "To find it, we minimize the sum of squares of the residuals\n", "$ e = y - X \\hat{\\beta} $, i.e. $ e'e \\longrightarrow_{\\hat{\\beta}} \\min $,\n", "which leads to the well known OLS formula\n", "\n", "$$\n", "\\hat{\\beta} = (X'X)^{-1} X' y\n", "$$\n", "\n", "The mean standard error (MSE) of the regression is calculated as $ s = \\sqrt{\\frac{1}{n-k} e'e} $,\n", "where $ n $ is the number of observations and $ k $ is the number of parameters (elements in $ \\beta $).\n", "\n", "The variance-covariance matrix of the estimates is given by $ \\hat{\\Sigma} = s^2 (X'X)^{-1} $.\n", "The square root of the diagonal elements of this matrix are them standard deviations of the estimates, and give us the measure of the accuracy of the estimated parameters.\n", "\n", "[William Greene “Econometric Analysis”](https://books.google.com.au/books?id=LWQuAAAAQBAJ&dq=greene%20econometric%20analysis)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "import numpy as np\n", "def ols(X,y,addConstant=True,verbose=True):\n", " '''Return the OLS estimates and their variance-covariance matrix for the given data X,y\n", " When addConstant is True, constant is added to X\n", " When verbose is True, a report is printed\n", " '''\n", " pass" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of observations: 10\n", "Number of parameters: 3\n", "Parameter estimates (std in brackets)\n", " 2.18817 ( 0.18051)\n", " 1.28565 ( 0.04215)\n", " -0.34394 ( 0.02592)\n", "MSE = 0.18440\n", "\n", "Number of observations: 10\n", "Number of parameters: 2\n", "Parameter estimates (std in brackets)\n", " 1.67610 ( 0.11924)\n", " -0.12370 ( 0.08107)\n", "MSE = 0.80889\n", "\n" ] } ], "source": [ "# test on small dataset\n", "X = np.array([[5, 3],\n", " [2, 3],\n", " [3, 1],\n", " [2, 8],\n", " [4.5, 2.5],\n", " [2.5, 1.5],\n", " [4.3, 4.2],\n", " [0.5, 3.5],\n", " [1, 5],\n", " [3, 8]])\n", "truebeta = np.array([1.234,-0.345])[:,np.newaxis] # column vector\n", "y = X @ truebeta + 2.5 + np.random.normal(size=(X.shape[0],1),scale=0.2)\n", "\n", "beta,S=ols(X,y)\n", "beta,S=ols(X,y,addConstant=False)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of observations: 10\n", "Number of parameters: 2\n", "Parameter estimates (std in brackets)\n", " 10.38000 ( 0.21096)\n", " -1.00364 ( 0.03400)\n", "MSE = 0.30881\n", "\n", "Number of observations: 10\n", "Number of parameters: 1\n", "Parameter estimates (std in brackets)\n", " 0.47922 ( 0.25856)\n", "MSE = 5.07328\n", "\n" ] } ], "source": [ "# test with one dimensional arrays\n", "X = np.array([1,2,3,4,5,6,7,8,9,10])\n", "y = np.array([9.4,8.1,7.7,6.3,5.7,4.4,3.0,2.1,1.1,0.8])\n", "\n", "beta,S=ols(X,y)\n", "beta,S=ols(X,y,addConstant=False)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "import numpy as np\n", "def ols(X,y,addConstant=True,verbose=True):\n", " '''Return the OLS estimates and their variance-covariance matrix for the given data X,y\n", " When addConstant is True, constant is added to X\n", " When verbose is True, a report is printed\n", " '''\n", " y = y.squeeze() # we are better off if y is one-dimensional\n", " if addConstant and X.ndim==1:\n", " X = np.hstack((np.ones(X.shape[0])[:,np.newaxis],X[:,np.newaxis]))\n", " k = 2\n", " elif addConstant and X.ndim>1:\n", " X = np.hstack((np.ones(X.shape[0])[:,np.newaxis],X))\n", " k = X.shape[1]+1\n", " elif X.ndim==1:\n", " X = X[:,np.newaxis]\n", " xxinv = np.linalg.inv(X.T@X) # inv(X'X)\n", " beta = xxinv @ X.T@y # OLS estimates\n", " e = y - X@beta # residuals\n", " n,k = X.shape # number of observations and parameters\n", " s2 = e.T@e / (n-k)\n", " Sigma = s2*xxinv\n", " if verbose:\n", " # report the estimates\n", " print('Number of observations: {:d}\\nNumber of parameters: {:d}'.format(n,k))\n", " print('Parameter estimates (std in brackets)')\n", " for b,s in zip(beta,np.sqrt(np.diag(Sigma))):\n", " print('{:10.5f} ({:10.5f})'.format(b,s))\n", " print('MSE = {:1.5f}\\n'.format(np.sqrt(s2)))\n", " return beta,Sigma" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Data on median wages\n", "\n", "**The Economic Guide To Picking A College Major**\n", "\n", "Data dictionary available at\n", "\n", "[https://github.com/fivethirtyeight/data/tree/master/college-majors](https://github.com/fivethirtyeight/data/tree/master/college-majors)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "hide-output": false, "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "import pandas as pd\n", "# same data as in video 15\n", "data = pd.read_csv('./_static/data/recent-grads.csv')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 173 entries, 0 to 172\n", "Data columns (total 21 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Rank 173 non-null int64 \n", " 1 Major_code 173 non-null int64 \n", " 2 Major 173 non-null object \n", " 3 Total 172 non-null float64\n", " 4 Men 172 non-null float64\n", " 5 Women 172 non-null float64\n", " 6 Major_category 173 non-null object \n", " 7 ShareWomen 172 non-null float64\n", " 8 Sample_size 173 non-null int64 \n", " 9 Employed 173 non-null int64 \n", " 10 Full_time 173 non-null int64 \n", " 11 Part_time 173 non-null int64 \n", " 12 Full_time_year_round 173 non-null int64 \n", " 13 Unemployed 173 non-null int64 \n", " 14 Unemployment_rate 173 non-null float64\n", " 15 Median 173 non-null int64 \n", " 16 P25th 173 non-null int64 \n", " 17 P75th 173 non-null int64 \n", " 18 College_jobs 173 non-null int64 \n", " 19 Non_college_jobs 173 non-null int64 \n", " 20 Low_wage_jobs 173 non-null int64 \n", "dtypes: float64(5), int64(14), object(2)\n", "memory usage: 28.5+ KB\n" ] } ], "source": [ "data.info()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
RankMajor_codeMajorTotalMenWomenMajor_categoryShareWomenSample_sizeEmployed...Part_timeFull_time_year_roundUnemployedUnemployment_rateMedianP25thP75thCollege_jobsNon_college_jobsLow_wage_jobs
012419PETROLEUM ENGINEERING2339.02057.0282.0Engineering0.120564361976...2701207370.018381110000950001250001534364193
122416MINING AND MINERAL ENGINEERING756.0679.077.0Engineering0.1018527640...170388850.11724175000550009000035025750
232415METALLURGICAL ENGINEERING856.0725.0131.0Engineering0.1530373648...133340160.02409673000500001050004561760
342417NAVAL ARCHITECTURE AND MARINE ENGINEERING1258.01123.0135.0Engineering0.10731316758...150692400.0501257000043000800005291020
452405CHEMICAL ENGINEERING32260.021239.011021.0Engineering0.34163128925694...51801669716720.061098650005000075000183144440972
562418NUCLEAR ENGINEERING2573.02200.0373.0Engineering0.144967171857...26414494000.17722665000500001020001142657244
676202ACTUARIAL SCIENCE3777.02110.01667.0Business0.441356512912...29624823080.0956526200053000720001768314259
785001ASTRONOMY AND ASTROPHYSICS1792.0832.0960.0Physical Sciences0.535714101526...553827330.0211676200031500109000972500220
892414MECHANICAL ENGINEERING91227.080320.010907.0Engineering0.119559102976442...131015463946500.05734260000480007000052844163843253
9102408ELECTRICAL ENGINEERING81527.065511.016016.0Engineering0.19645063161928...126954141338950.05917460000450007200045829108743170
10112407COMPUTER ENGINEERING41542.033258.08284.0Engineering0.19941339932506...51462362122750.065409600004500075000236945721980
11122401AEROSPACE ENGINEERING15058.012953.02105.0Engineering0.13979314711391...272487907940.06516260000420007000081842425372
12132404BIOMEDICAL ENGINEERING14955.08407.06548.0Engineering0.4378477910047...2694598610190.09208460000360007000064392471789
13145008MATERIALS SCIENCE4279.02949.01330.0Engineering0.310820223307...8781967780.023043600003900065000262639181
14152409ENGINEERING MECHANICS PHYSICS AND SCIENCE4321.03526.0795.0Engineering0.183985303608...8112004230.0063345800025000740002439947263
\n", "

15 rows × 21 columns

\n", "
" ], "text/plain": [ " Rank Major_code Major Total \\\n", "0 1 2419 PETROLEUM ENGINEERING 2339.0 \n", "1 2 2416 MINING AND MINERAL ENGINEERING 756.0 \n", "2 3 2415 METALLURGICAL ENGINEERING 856.0 \n", "3 4 2417 NAVAL ARCHITECTURE AND MARINE ENGINEERING 1258.0 \n", "4 5 2405 CHEMICAL ENGINEERING 32260.0 \n", "5 6 2418 NUCLEAR ENGINEERING 2573.0 \n", "6 7 6202 ACTUARIAL SCIENCE 3777.0 \n", "7 8 5001 ASTRONOMY AND ASTROPHYSICS 1792.0 \n", "8 9 2414 MECHANICAL ENGINEERING 91227.0 \n", "9 10 2408 ELECTRICAL ENGINEERING 81527.0 \n", "10 11 2407 COMPUTER ENGINEERING 41542.0 \n", "11 12 2401 AEROSPACE ENGINEERING 15058.0 \n", "12 13 2404 BIOMEDICAL ENGINEERING 14955.0 \n", "13 14 5008 MATERIALS SCIENCE 4279.0 \n", "14 15 2409 ENGINEERING MECHANICS PHYSICS AND SCIENCE 4321.0 \n", "\n", " Men Women Major_category ShareWomen Sample_size Employed \\\n", "0 2057.0 282.0 Engineering 0.120564 36 1976 \n", "1 679.0 77.0 Engineering 0.101852 7 640 \n", "2 725.0 131.0 Engineering 0.153037 3 648 \n", "3 1123.0 135.0 Engineering 0.107313 16 758 \n", "4 21239.0 11021.0 Engineering 0.341631 289 25694 \n", "5 2200.0 373.0 Engineering 0.144967 17 1857 \n", "6 2110.0 1667.0 Business 0.441356 51 2912 \n", "7 832.0 960.0 Physical Sciences 0.535714 10 1526 \n", "8 80320.0 10907.0 Engineering 0.119559 1029 76442 \n", "9 65511.0 16016.0 Engineering 0.196450 631 61928 \n", "10 33258.0 8284.0 Engineering 0.199413 399 32506 \n", "11 12953.0 2105.0 Engineering 0.139793 147 11391 \n", "12 8407.0 6548.0 Engineering 0.437847 79 10047 \n", "13 2949.0 1330.0 Engineering 0.310820 22 3307 \n", "14 3526.0 795.0 Engineering 0.183985 30 3608 \n", "\n", " ... Part_time Full_time_year_round Unemployed Unemployment_rate \\\n", "0 ... 270 1207 37 0.018381 \n", "1 ... 170 388 85 0.117241 \n", "2 ... 133 340 16 0.024096 \n", "3 ... 150 692 40 0.050125 \n", "4 ... 5180 16697 1672 0.061098 \n", "5 ... 264 1449 400 0.177226 \n", "6 ... 296 2482 308 0.095652 \n", "7 ... 553 827 33 0.021167 \n", "8 ... 13101 54639 4650 0.057342 \n", "9 ... 12695 41413 3895 0.059174 \n", "10 ... 5146 23621 2275 0.065409 \n", "11 ... 2724 8790 794 0.065162 \n", "12 ... 2694 5986 1019 0.092084 \n", "13 ... 878 1967 78 0.023043 \n", "14 ... 811 2004 23 0.006334 \n", "\n", " Median P25th P75th College_jobs Non_college_jobs Low_wage_jobs \n", "0 110000 95000 125000 1534 364 193 \n", "1 75000 55000 90000 350 257 50 \n", "2 73000 50000 105000 456 176 0 \n", "3 70000 43000 80000 529 102 0 \n", "4 65000 50000 75000 18314 4440 972 \n", "5 65000 50000 102000 1142 657 244 \n", "6 62000 53000 72000 1768 314 259 \n", "7 62000 31500 109000 972 500 220 \n", "8 60000 48000 70000 52844 16384 3253 \n", "9 60000 45000 72000 45829 10874 3170 \n", "10 60000 45000 75000 23694 5721 980 \n", "11 60000 42000 70000 8184 2425 372 \n", "12 60000 36000 70000 6439 2471 789 \n", "13 60000 39000 65000 2626 391 81 \n", "14 58000 25000 74000 2439 947 263 \n", "\n", "[15 rows x 21 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data.head(n=15)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Median salary')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline\n", "data.plot(x='ShareWomen', y='Median', kind='scatter', figsize=(10, 8), color='red')\n", "plt.xlabel('Share of women')\n", "plt.ylabel('Median salary')\n", "# add a linear regression line to the plot" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Median 0\n", "ShareWomen 1\n", "dtype: int64\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "print(data[['Median','ShareWomen']].isnull().sum()) # check if there are NaNs in the data!\n", "data1 = data[['Median','ShareWomen']].dropna() # drop NaNs\n", "data1.plot(x='ShareWomen', y='Median', kind='scatter', figsize=(10, 8), color='red')\n", "plt.xlabel('Share of women')\n", "plt.ylabel('Median salary')\n", "# add a linear regression line to the plot\n", "b,_ = ols(X=data['ShareWomen'],y=data['Median'],verbose=False)\n", "fn = lambda x: b[0]+b[1]*x\n", "xx = np.linspace(0,1,100)\n", "plt.plot(xx,fn(xx),color='navy',linewidth=3)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# create fraction variables\n", "data.drop(index=data[data['Total']==0].index,inplace=True) # drop zero Totals\n", "data.drop(index=data[data['Employed']==0].index,inplace=True) # drop zero Employed\n", "data['Employment rate'] = data['Employed'] / data['Total']\n", "data['Fulltime rate'] = data['Full_time'] / data['Employed']\n", "data2 = data[['Median','ShareWomen','Employment rate','Fulltime rate']].dropna() # drop NaNs\n", "y = data2['Median']/1000 # rescale salary" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "hide-output": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of observations: 171\n", "Number of parameters: 4\n", "Parameter estimates (std in brackets)\n", " 47.78925 ( 10.54264)\n", " -27.86576 ( 3.38424)\n", " -10.81362 ( 9.80911)\n", " 18.51797 ( 7.52103)\n", "MSE = 8.83857\n", "\n" ] } ], "source": [ "# run the full model\n", "ols(data2[['ShareWomen','Employment rate','Fulltime rate']],y);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### Further learning resources\n", "\n", "- Regression analysis using `sklearn` library\n", " [https://datascience.quantecon.org/applications/regression.html](https://datascience.quantecon.org/applications/regression.html) " ] } ], "metadata": { "celltoolbar": "Slideshow", "date": 1612589584.997209, "download_nb": false, "filename": "17_linear_reg.rst", "filename_with_path": "17_linear_reg", "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.7.6" }, "title": "Foundations of Computational Economics #17" }, "nbformat": 4, "nbformat_minor": 4 }