{"cells":[{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"import csv\nimport pandas as pd\nimport numpy as np\nimport time\n\npGD = pd.read_csv('../input/game_data.csv', encoding='latin-1') \npPI = pd.read_csv('../input/play_information.csv', encoding='latin-1')\npPR = pd.read_csv('../input/play_player_role_data.csv', encoding='latin-1')\npPD = pd.read_csv('../input/player_punt_data.csv', encoding='latin-1')\npVR = pd.read_csv('../input/video_review.csv', encoding='latin-1')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c11d1b9931d0b11d99773c71a339c776f2f43b1b"},"cell_type":"code","source":"from datetime import datetime\npPI['GameDate']= pd.Series([datetime.strptime(f, '%m/%d/%Y') for f in pPI['Game_Date']], index=pPI.index)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"f9951e75978a67be329724f9801c47bd4404f1f6"},"cell_type":"code","source":"result1 = pd.merge(pGD,pPI[['GameKey','PlayID','Game_Clock','YardLine','Quarter','Play_Type','Poss_Team','Home_Team_Visit_Team','Score_Home_Visiting','PlayDescription']],\n                      on='GameKey',how='right')\nresult2 = pd.merge(pPR[['GameKey','PlayID','GSISID']],pVR,\n                      on=['GameKey', 'PlayID','GSISID'],how='left')\nresult3 = pd.merge(result2,pPD,\n                      on='GSISID',how='left')\nFinalData = pd.merge(result3,result1,\n                      on=['GameKey','PlayID'],how='left')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"c5d552386acc6dbefb7e8bcf2f736a75bbb1a9a6"},"cell_type":"code","source":"FinalData['YardLineNum'] = FinalData.YardLine.str.extract('(\\d+)').astype('float')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"scrolled":false,"_uuid":"d96cf8600d3b02b16137927fcdc479559f3ab8a3"},"cell_type":"code","source":"ConcusData = FinalData.loc[(FinalData['Season_Year_x'] == 2016) | (FinalData['Season_Year_x'] == 2017)]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"e6cbec7951152d12372ab217883ea07dc81f0714"},"cell_type":"code","source":"FinalData['Concus'] = np.where(((FinalData['Season_Year_x'] == 2016) | (FinalData['Season_Year_x'] == 2017)),1,0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"3d369d586cac2d1cdd1ced5de16edcf635c8a1b3"},"cell_type":"code","source":"import pylab as plt\nfig, axs = plt.subplots(9,2, figsize=(20, 50))\nConcusData['Season_Year_x'].value_counts().plot(ax=axs[0,0],kind='bar').set_title('Season Year')\nConcusData['Player_Activity_Derived'].value_counts().plot(ax=axs[0,1],kind='bar').set_title('Player_Activity_Derived')\nConcusData['Primary_Impact_Type'].value_counts().plot(ax=axs[1,0], kind='bar').set_title('Primary_Impact_Type')\nConcusData['Primary_Partner_Activity_Derived'].value_counts().plot(ax=axs[1,1], kind='bar').set_title('Primary_Partner_Activity_Derived')\nConcusData['Friendly_Fire'].value_counts().plot(ax=axs[2,0], kind='bar').set_title('Friendly_Fire')\nConcusData['Number'].value_counts().plot(ax=axs[2,1], kind='bar').set_title('Number')\nConcusData['Position'].value_counts().plot(ax=axs[3,0], kind='bar').set_title('Position')\nConcusData['Season_Type'].value_counts().plot(ax=axs[3,1], kind='bar').set_title('Season_Type')\nConcusData['Week'].value_counts().plot(ax=axs[4,0], kind='bar').set_title('Week')\nConcusData['Game_Day'].value_counts().plot(ax=axs[4,1], kind='bar').set_title('Game_Day')\nConcusData['Game_Site'].value_counts().plot(ax=axs[5,0], kind='bar').set_title('Game_Site')\nConcusData['Start_Time'].value_counts().plot(ax=axs[5,1], kind='bar').set_title('Start_Time')\nConcusData['Home_Team'].value_counts().plot(ax=axs[6,0], kind='bar').set_title('Home_Team')\nConcusData['Visit_Team'].value_counts().plot(ax=axs[6,1], kind='bar').set_title('Visit_Team')\nConcusData['Stadium'].value_counts().plot(ax=axs[7,0], kind='bar').set_title('Stadium')\nConcusData['Temperature'].value_counts().plot(ax=axs[7,1], kind='bar').set_title('Temperature')\nConcusData['Game_Clock'].value_counts().plot(ax=axs[8,0], kind='bar').set_title('Game_Clock')\nConcusData['Quarter'].value_counts().plot(ax=axs[8,1], kind='bar').set_title('Quarter')\n\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"7647347df00db819a4b23c073f179a39be897059"},"cell_type":"code","source":"FinalData.dropna(how='all', inplace = True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"adec6cc7a14876239a9221debc62c082d5dae8cc"},"cell_type":"code","source":"import statsmodels.api as sm\n\nfor i in ['GameKey', 'PlayID', 'GSISID', 'Season_Year_x', 'Player_Activity_Derived', 'Turnover_Related', 'Primary_Impact_Type', 'Primary_Partner_GSISID', 'Primary_Partner_Activity_Derived', 'Friendly_Fire', 'Position', 'Season_Type', 'Week', 'Game_Date', 'Game_Day', 'Game_Site', 'HomeTeamCode', 'VisitTeamCode', 'Stadium', 'StadiumType', 'Turf', 'GameWeather', 'Poss_Team']:\n    cat_name = i + '_cat'\n    FinalData[i].fillna(0, inplace=True)\n    FinalData[i] = FinalData[i].astype('category')\n    FinalData[cat_name] = FinalData[i].cat.codes","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"2bd887bb0e240abbb3bd3f0e4a62a00fe1a90b0c"},"cell_type":"code","source":"mean_temp = FinalData['Temperature'].mean()\nFinalData['Temperature'].fillna(mean_temp, inplace=True)\nFinalData['YardLineNum'].fillna(0,inplace=True)\nFinalData['Quarter'].fillna(0,inplace=True)\nFinalData['Season_Year_y'].fillna(0,inplace=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"77aa463b1d4da9a1f3f982e7fd30a07bc3825696","scrolled":false},"cell_type":"code","source":"logit = sm.Logit(FinalData['Concus'], FinalData[['Season_Year_y', 'Week', 'Temperature', 'YardLineNum', 'Quarter', 'Concus', 'GameKey_cat', 'PlayID_cat', 'GSISID_cat', 'Season_Year_x_cat', 'Player_Activity_Derived_cat', 'Turnover_Related_cat', 'Primary_Impact_Type_cat', 'Primary_Partner_GSISID_cat', 'Primary_Partner_Activity_Derived_cat', 'Friendly_Fire_cat', 'Position_cat', 'Season_Type_cat', 'Week_cat', 'Game_Date_cat', 'Game_Day_cat', 'Game_Site_cat', 'HomeTeamCode_cat', 'VisitTeamCode_cat', 'Stadium_cat', 'StadiumType_cat', 'Poss_Team_cat']].astype('float'))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"a03b422f04be289fdc83ff831e9640ae4e9b33a1","scrolled":true},"cell_type":"code","source":"try:\n    result = logit.fit()\nexcept Exception as e:\n    print(e)\n#shows error is Singular Matrix ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"_uuid":"34f72d430cd6ace2b21c6785a93255203b35bfff"},"cell_type":"code","source":"print(\"Singular Matrix is caused by quasi-complete separation which leads to non-existent MLE\")","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}