Apply logistic regression to categorize whether a county had high mortality rate due to contamination

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


In [2]:
import pandas as pd
%matplotlib inline
import numpy as np
from sklearn.linear_model import LogisticRegression

2. Read in the hanford.csv file in the data/ folder


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

3. Calculate the basic descriptive statistics on the data


In [4]:
df.describe()


Out[4]:
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. Find a reasonable threshold to say exposure is high and recode the data


In [13]:
df


Out[13]:
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 [20]:
df['Mort_High']=df['Mortality'].apply(lambda x:1 if x>=147.1 else 0)
df['Expo_High']=df['Exposure'].apply(lambda x:1 if x>=3.41 else 0)

In [21]:
df


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

5. Create a logistic regression model


In [22]:
lm = LogisticRegression()

In [23]:
x = np.asarray(df[['Expo_High']])
y = np.asarray(df['Mort_High'])

In [24]:
lm = lm.fit(x,y)

6. Predict whether the mortality rate (Cancer per 100,000 man years) will be high at an exposure level of 50


In [ ]:
lm

In [ ]: