1. Import the necessary packages to read in the data, plot, and create a linear regression model


In [1]:
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import statsmodels.formula.api as smf


/usr/lib/python2.7/dist-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')

2. Read in the hanford.csv file


In [2]:
df=pd.read_csv('/home/sean/git/algorithms/class6/data/hanford.csv')

3. Calculate the basic descriptive statistics on the data


In [15]:
df


Out[15]:
County Exposure Mortality
0 Umatilla 2.49 147.1
1 Morrow 2.57 130.1
2 Gilliam 3.41 129.9
3 Sherman 1.25 113.5
4 Wasco 1.62 137.5
5 HoodRiver 3.83 162.3
6 Portland 11.64 207.5
7 Columbia 6.41 177.9
8 Clatsop 8.34 210.3

In [3]:
df.describe()


Out[3]:
Exposure Mortality
count 9.000000 9.000000
mean 4.617778 157.344444
std 3.491192 34.791346
min 1.250000 113.500000
25% 2.490000 130.100000
50% 3.410000 147.100000
75% 6.410000 177.900000
max 11.640000 210.300000

4. Calculate the coefficient of correlation (r) and generate the scatter plot. Does there seem to be a correlation worthy of investigation?


In [22]:
lm = smf.ols(formula="Mortality~Exposure",data=df).fit()

5. Create a linear regression model based on the available data to predict the mortality rate given a level of exposure


In [23]:
lm.params


Out[23]:
Intercept    114.715631
Exposure       9.231456
dtype: float64

In [28]:
intercept, slope = lm.params

6. Plot the linear regression line on the scatter plot of values. Calculate the r^2 (coefficient of determination)


In [30]:
df.plot(kind="scatter",x="Exposure",y="Mortality", linewidths=0)
plt.plot(df["Exposure"],slope*df["Exposure"]+intercept,"-",color="red")


Out[30]:
[<matplotlib.lines.Line2D at 0x7f8b3c634590>]

In [31]:
r_squared=slope**2

7. Predict the mortality rate (Cancer per 100,000 man years) given an index of exposure = 10


In [32]:
exposure=input("Enter county exposure:")
print("Expected mortality rate:", (slope*exposure)+intercept)


Enter county exposure:10
('Expected mortality rate:', 207.03019352841989)

In [ ]: