mod6 = stats.OLS(df6['Rate_9000'],X6) mod7 = stats.OLS(df7['Rate_9000'],X7) mods = [mod1, mod2, mod3, mod4, mod5, mod6, mod7] res_list = [] for mod in mods: res = mod.fit(cov_type = 'HC1') res_list.append(res) print(res.summary()) file = open('C:/Users/User/Documents/Data/Demoforestation/Replication/Model_' + str(mods.index(mod)+1) + '.txt', 'w') file.write(res.summary().as_text()) file.close() restab(res_list, 'C:/Users/User/Documents/Data/Demoforestation/Replication/restab_replication.txt') # (3) Replicating the cluster analyses # Recreate the statistics in Table (3) in the original paper # Record group level statistics Type6 = pd.DataFrame(np.zeros((2,6)), columns = data.Type6.unique(), index = ['Democracy', 'Rate_9000']) Type3 = pd.DataFrame(np.zeros((2,3)), columns = data.Type3.unique(), index = ['Democracy', 'Rate_9000']) for c in Type6.columns: df = data[data['Type6'] == c] Type6[c]['Democracy'] = np.mean(df['Democracy(20)_90']) Type6[c]['Rate_9000'] = np.mean(df['Rate_9000'])
# Running regressions and saving results Ys = [df1['Rate'], df2['Rate'], df3['Rate'], df1['Rate'], df2['Rate'], df3['Rate']] Xs = [X1, X2, X3, X4, X5, X6] res_list = [] for i in range(len(Xs)): res = stats.OLS(Ys[i],Xs[i]).fit(cov_type = 'HC1') res_list.append(res) print(res.summary()) file = open('C:/Users/User/Documents/Data/Demoforestation/Spatial/Differenced_Model_' + str(i+1) + '.txt', 'w') file.write(res.summary().as_text()) file.close() restab(res_list, 'C:/Users/User/Documents/Data/Demoforestation/Spatial/restab_differenced_spatial.txt') # Create binary indicator for whether or not a nation's neighbors were, on average, more democratic bi = [1 if (data['W*Demo'][i] > data['Democracy'][i]) else 0 for i in range(len(data))] data = pd.concat([data, pd.DataFrame(bi, columns = ['W*D>D'])], axis = 1) # Run second set of regressions with binary indicator # Data prep df11 = data[['Rate', 'W*D>D', 'Democracy', 'Democracy_2', 'Education', 'Rural_Pop', 'Ln_Land', 'GDP_per_capita', 'D X GDP', 'Continent']].dropna() df12 = data[['Rate', 'W*D>D', 'Democracy', 'Democracy_2', 'Education', 'Rural_Pop', 'Ln_Land', 'GDP_per_capita', 'D X GDP', 'Ag_Land_Rate', 'Continent']].dropna() df13 = data[['Rate', 'W*D>D', 'Democracy', 'Democracy_2', 'Education', 'Rural_Pop', 'Ln_Land', 'GDP_per_capita', 'D X GDP', 'Ag_Land_Rate', 'Tariff_Rate', 'Continent']].dropna() d11 = pd.get_dummies(df11['Continent'])
X1 = X1.join(d1).drop('Oceania', axis=1) X3 = X3.join(d3).drop('Oceania', axis=1) X4 = X4.join(d4).drop('Oceania', axis=1) X6 = X6.join(d6).drop('Oceania', axis=1) # Running regressions and saving results Ys = [ df1['Rate'], df2['Rate'], df3['Rate'], df4['Rate'], df5['Rate'], df6['Rate'] ] Xs = [X1, X2, X3, X4, X5, X6] res_list = [] for i in range(len(Xs)): res = stats.OLS(Ys[i], Xs[i]).fit(cov_type='HC1') res_list.append(res) print(res.summary()) file = open( 'C:/Users/User/Documents/Data/Demoforestation/Specified/Panel_Model_ROB2_' + str(i + 1) + '.txt', 'w') file.write(res.summary().as_text()) file.close() restab( res_list, 'C:/Users/User/Documents/Data/Demoforestation/Specified/restab_panel_ROB2.txt' )
d1 = pd.get_dummies(df1['Continent']) d2 = pd.get_dummies(df2['Continent']) d3 = pd.get_dummies(df3['Continent']) X1 = stats.add_constant(df1[['Democracy', 'Democracy_2', 'Urbanization', 'Urbanization_2', 'Education', 'Rural_Pop', 'Ln_Land', 'GDP_per_capita', 'D X GDP']]) X2 = stats.add_constant(df2[['Democracy', 'Democracy_2', 'Urbanization', 'Urbanization_2', 'Education', 'Rural_Pop', 'Ln_Land', 'GDP_per_capita', 'D X GDP', 'Ag_Land_Rate']]) X3 = stats.add_constant(df3[['Democracy', 'Democracy_2', 'Urbanization', 'Urbanization_2', 'Education', 'Rural_Pop', 'Ln_Land', 'GDP_per_capita', 'D X GDP', 'Ag_Land_Rate', 'Tariff_Rate']]) X4 = X1.join(d1).drop('Oceania', axis = 1) X5 = X2.join(d2).drop('Oceania', axis = 1) X6 = X3.join(d3).drop('Oceania', axis = 1) # Running regressions and saving results Ys = [df1['Rate'], df2['Rate'], df3['Rate'], df1['Rate'], df2['Rate'], df3['Rate']] Xs = [X1, X2, X3, X4, X5, X6] res_list = [] for i in range(len(Xs)): res = stats.OLS(Ys[i],Xs[i]).fit(cov_type = 'HC1') res_list.append(res) print(res.summary()) file = open('C:/Users/User/Documents/Data/Demoforestation/Specified/Differenced_Model_ROB_' + str(i+1) + '.txt', 'w') file.write(res.summary().as_text()) file.close() restab(res_list, 'C:/Users/User/Documents/Data/Demoforestation/Specified/restab_differenced_ROB.txt')
models = [co2_mod, ch4_mod, nox_mod, ghg_mod] names = ['CO2', 'CH4', 'NOx', 'GHG'] res_list = [] for mod in models: res = mod.fit(cov_type='HC1') res_list.append(res) print(res.summary()) file = open( 'C:/Users/User/Documents/Data/Pollution/' + names[models.index(mod)] + '_kp.txt', 'w') file.write(res.summary().as_text()) file.close() restab(res_list, 'C:/Users/User/Documents/Data/Pollution/restab_kp.txt') # Next we run gdp models to check coefficients gdp_data = data[[ 'ln_Income', 'ln_Income_lag', 'ln_sk', 'ln_n5', 'Country', 'Year' ]].dropna() gdp_national_dummies = pd.get_dummies(gdp_data['Country']) gdp_year_dummies = pd.get_dummies(gdp_data['Year']) gdp_data = pd.concat([gdp_data, gdp_national_dummies, gdp_year_dummies], axis=1) gdp_data = gdp_data.drop(['Country', 'Year', 1993, 'Canada'], axis=1) Y = gdp_data['ln_Income']
Xs = [X1, X2, X3, X4, X5, X6] res_list = [] for i in range(len(Xs)): res = stats.OLS(Ys[i], Xs[i]).fit(cov_type='HC1') res_list.append(res) print(res.summary()) file = open( 'C:/Users/User/Documents/Data/Demoforestation/Spatial/Panel_Model_ROB_' + str(i + 1) + '.txt', 'w') file.write(res.summary().as_text()) file.close() restab( res_list, 'C:/Users/User/Documents/Data/Demoforestation/Spatial/restab_panel_ROB.txt' ) # Create binary indicator for whether or not a nation's neighbors were, on average, more democratic bi = [ 1 if (data['W*Demo'][i] > data['Democracy'][i]) else 0 for i in range(len(data)) ] data = pd.concat([data, pd.DataFrame(bi, columns=['W*D>D'])], axis=1) # Run second set of regressions with binary indicator # Data prep df11 = data[[
models = [co2_mod, ch4_mod, nox_mod] names = ['CO2', 'CH4', 'NOx'] res_list = [] for mod in models: res = mod.fit(cov_type='HC1') res_list.append(res) print(res.summary()) file = open( 'C:/Users/User/Documents/Data/Pollution/' + names[models.index(mod)] + '.txt', 'w') file.write(res.summary().as_text()) file.close() restab(res_list, 'C:/Users/User/Documents/Data/Pollution/restab.txt') # After running the conditional convergence models, we set up the network effects models # Compute technology growth rate # \widetilde{g} = \left(\frac{1}{T}\right)\sum\limits_{t=1}^{T}\left(\frac{\eta_{t}}{t-\gamma(t-1)}\right) g_co2 = (1 / 23) * sum([(co2_mod.fit().params[i] / ((i - 1971) - (co2_mod.fit().params['ln_co2_lag'] * (i - 1972)))) for i in range(1972, 2015)]) g_ch4 = (1 / 21) * sum([(ch4_mod.fit().params[i] / ((i - 1971) - (ch4_mod.fit().params['ln_ch4_lag'] * (i - 1972)))) for i in range(1972, 2013)])
print(res3.summary()) print(resT.summary()) print(resE.summary()) res_list = [res1, res2, res3, resT, resE] names = ['Stage1', 'Stage2', 'Stage3', 'Total', 'Editor'] for r in range(len(res_list)): file = open( 'C:/Users/User/Documents/Data/COVID-19/results_' + names[r] + '.txt', 'w') file.write(res_list[r].summary().as_text()) file.close() restab(res_list, 'C:/Users/User/Documents/Data/COVID-19/restab_main.txt') # Before running any more models, the text mining component needs to be done # Defining a function for extracting the keywords from the dataframe def clean_keys(key): key_list = [] # Initialize a list idx = 0 # Data preprocessing prior to identifying individual keywords key = key.lower() # convert to lowercase key = key.replace(',', ' ') # replace certain characters with a space