This project concerns replicating the main findings (plots and tables) from the paper
Nunn N. The Long Term Effects of Africa’s Slave Trades. Quarterly Journal of Economics. 2008; 123 (1) : 139-176
What this project does not include is questioning the author’s aurgumentations. For a detailed evidence examination please refer to the author’s paper which he made freely available on his Harvard webiste along with the dataset.
However, in the Critique section, I point out some flaws which I think weaken Nunn’s results and some improvements which I personally suggest are woth considering.
To start off, Nathan Nunn’s research question is:
Can part of Africa’s current underdevelopment be explained by its slave trades? To explore this question, I use data from shipping records and historical documents reporting slave ethnicities to construct estimates of the number of slaves exported from each country during Africa’s slave trades. I find a robust negative relationship between the number of slaves exported from a country and current economic performance. To better understand if the relationship is causal, I examine the historical evidence on selection into the slave trades and use instrumental variables. Together the evidence suggests that the slave trades had an adverse effect on economic development.
The Dataset is made up of 52 entries, one for each african State, and 39 variables.
slave_data <- read_dta("slave_trade_QJE.dta")
kable(slave_data[1:5,])
| isocode | country | ln_maddison_pcgdp2000 | ln_export_area | ln_export_pop | colony0 | colony1 | colony2 | colony3 | colony4 | colony5 | colony6 | colony7 | abs_latitude | longitude | rain_min | humid_max | low_temp | ln_coastline_area | island_dum | islam | legor_fr | legor_uk | region_n | region_s | region_w | region_e | region_c | ln_avg_gold_pop | ln_avg_oil_pop | ln_avg_all_diamonds_pop | ln_pop_dens_1400 | atlantic_distance_minimum | indian_distance_minimum | saharan_distance_minimum | red_sea_distance_minimum | ethnic_fractionalization | state_dev | land_area |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AGO | Angola | 6.670766 | 7.967493 | 14.399250 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 8 | 17.54142 | 0 | 78 | 14 | 0.2468601 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | -6.614335 | 0.643126 | -1.701396 | -0.0249170 | 5.668760 | 6.980571 | 4.925892 | 3.872354 | 0.7867 | 0.635 | 1.2500 |
| BDI | Burundi | 6.354370 | 1.140843 | 4.451658 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 16 | 29.88722 | 5 | 82 | 17 | -4.6051702 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | -2.633923 | -9.210340 | -6.907755 | 3.0368562 | 10.626214 | 2.570375 | 3.718742 | 2.215324 | 0.2951 | 0.995 | 0.0278 |
| BEN | Benin | 7.187657 | 8.304137 | 13.308970 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 6 | 2.34264 | 13 | 78 | 18 | 0.0684028 | 0 | 13 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | -13.815511 | -3.531555 | -6.907755 | 1.2141958 | 5.120652 | 9.233961 | 2.834785 | 3.901736 | 0.7872 | 0.695 | 0.1130 |
| BFA | Burkina Faso | 6.748760 | 6.413822 | 11.724286 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 12 | -1.74292 | 0 | 67 | 9 | -4.6051702 | 0 | 42 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | -2.164328 | -9.210340 | -6.907755 | 0.9085654 | 4.774938 | 9.299419 | 2.763519 | 4.239375 | 0.7377 | 0.338 | 0.2740 |
| BWA | Botswana | 8.377471 | -2.302585 | 3.912023 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 24 | 23.82042 | 0 | 74 | -4 | -4.6051702 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | -3.705090 | -9.210340 | 2.186849 | -2.0750294 | 5.686335 | 5.764576 | 5.856533 | 4.299600 | 0.4102 | 0.893 | 0.6000 |
ggplot(slave_data, aes(x=ln_export_area, y=ln_maddison_pcgdp2000))+
geom_point(shape=1)+
geom_text(label=slave_data$isocode)+
geom_smooth(method=lm, se=FALSE)+
ggtitle("Relationship between Slave Exports and GDP")+
xlab("log of export / area between 1400-1900")+
ylab("log of per capita GDP in 2000")
##only colonizer effects
ols1<- lm(ln_maddison_pcgdp2000~ln_export_area+colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=slave_data)
##colonizer and geographic effects
ols2<- lm(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=slave_data)
##colonizer and geographic effects w/o islands and North countries
remove_isl_and_north<- c('Morocco','Algeria','Tunisia','Libya','Egypt','Seychelles',
'Mauritius','Comoros','Sao Tome & Principe','Cape Verde Islands')
restricted_sample<-slave_data[!slave_data$country %in% remove_isl_and_north,]
ols3<- lm(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=restricted_sample)
##additional controls: island fixed effect, North Africa fixed effect, French legal origin, percent islamic
ols4<- lm(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+region_n+legor_fr+island_dum+islam+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=slave_data)
##additional controls: log of the annual average per capita production of gold, oil, diamonds
ols5<- lm(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+region_n+legor_fr+island_dum+islam+
ln_avg_gold_pop+ln_avg_oil_pop+ln_avg_all_diamonds_pop+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=slave_data)
##all control variables and drop islands and North African countries
ols6<- lm(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+region_n+legor_fr+island_dum+islam+
ln_avg_gold_pop+ln_avg_oil_pop+ln_avg_all_diamonds_pop+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=restricted_sample)
# generate table
stargazer(ols1,ols2,ols3,ols4,ols5,ols6,
header = FALSE,
digits = 3,
title="Relationship between Slave Exports and Income",
type = "html",
dep.var.labels.include = FALSE,
dep.var.caption =
"Dependent variable is log real per capita GDP in 2000, ln y",
omit=c('colony1','colony2','colony3','colony4','colony5','colony6','colony7','Constant'),
add.lines=list(c('Colonizer fixed effects',"Yes","Yes","Yes","Yes","Yes","Yes")))
| Dependent variable is log real per capita GDP in 2000, ln y | ||||||
| (1) | (2) | (3) | (4) | (5) | (6) | |
| ln_export_area | -0.112*** | -0.076** | -0.108*** | -0.085** | -0.103*** | -0.128*** |
| (0.024) | (0.029) | (0.037) | (0.035) | (0.034) | (0.034) | |
| abs_latitude | 0.016 | -0.005 | 0.019 | 0.023 | 0.006 | |
| (0.017) | (0.020) | (0.018) | (0.017) | (0.017) | ||
| longitude | 0.0005 | -0.007 | -0.004 | -0.004 | -0.009 | |
| (0.005) | (0.006) | (0.006) | (0.005) | (0.006) | ||
| rain_min | -0.001 | 0.008 | 0.0001 | -0.001 | -0.002 | |
| (0.007) | (0.008) | (0.007) | (0.006) | (0.008) | ||
| humid_max | 0.009 | 0.008 | 0.009 | 0.015 | 0.013 | |
| (0.012) | (0.012) | (0.012) | (0.011) | (0.010) | ||
| low_temp | -0.019 | -0.039 | -0.005 | -0.015 | -0.037 | |
| (0.028) | (0.028) | (0.027) | (0.026) | (0.025) | ||
| ln_coastline_area | 0.085** | 0.092** | 0.095** | 0.082** | 0.083** | |
| (0.039) | (0.042) | (0.042) | (0.040) | (0.037) | ||
| region_n | 0.382 | -0.304 | ||||
| (0.484) | (0.517) | |||||
| legor_fr | 0.755 | 0.643 | -0.141 | |||
| (0.503) | (0.470) | (0.734) | ||||
| island_dum | -0.398 | -0.150 | ||||
| (0.529) | (0.516) | |||||
| islam | -0.008*** | -0.006* | -0.003 | |||
| (0.003) | (0.003) | (0.003) | ||||
| ln_avg_gold_pop | 0.011 | 0.014 | ||||
| (0.017) | (0.015) | |||||
| ln_avg_oil_pop | 0.078*** | 0.088*** | ||||
| (0.027) | (0.025) | |||||
| ln_avg_all_diamonds_pop | -0.039 | -0.048 | ||||
| (0.043) | (0.041) | |||||
| Colonizer fixed effects | Yes | Yes | Yes | Yes | Yes | Yes |
| Observations | 52 | 52 | 42 | 52 | 52 | 42 |
| R2 | 0.505 | 0.601 | 0.633 | 0.709 | 0.773 | 0.797 |
| Adjusted R2 | 0.413 | 0.450 | 0.463 | 0.551 | 0.615 | 0.639 |
| Residual Std. Error | 0.632 (df = 43) | 0.612 (df = 37) | 0.530 (df = 28) | 0.553 (df = 33) | 0.512 (df = 30) | 0.435 (df = 23) |
| F Statistic | 5.484*** (df = 8; 43) | 3.982*** (df = 14; 37) | 3.716*** (df = 13; 28) | 4.473*** (df = 18; 33) | 4.874*** (df = 21; 30) | 5.027*** (df = 18; 23) |
| Note: | p<0.1; p<0.05; p<0.01 | |||||
ggplot(slave_data, aes(x=ln_pop_dens_1400, y=ln_export_area))+
geom_point(shape=1)+
geom_text(label=slave_data$isocode)+
geom_smooth(method=lm, se=FALSE)+
ggtitle("Relationship between Initial Population Density and Slave Exports")+
xlab("log population density in 1400")+
ylab("slave exports (log of export / area)")
#SECOND STAGE
##w/o control variables
ivreg1<-ivreg(ln_maddison_pcgdp2000~ln_export_area|saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum, data=slave_data)
##includes colonizer fixed effects
ivreg2<-ivreg(ln_maddison_pcgdp2000~ln_export_area+colony1+colony2+colony3+
colony4+colony5+colony6+colony7|colony1+colony2+colony3+
colony4+colony5+colony6+colony7+saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum, data=slave_data)
##includes colonizer fixed effects and geographic controls
ivreg3<-ivreg(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7|abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7+
saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum, data=slave_data)
##includes colonizer fixed effects and geographic controls, but the sample excludes islands and North African countries.
ivreg4<-ivreg(ln_maddison_pcgdp2000~ln_export_area+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7|abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area+
colony1+colony2+colony3+
colony4+colony5+colony6+colony7+
saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum, data=restricted_sample)
#FIRST STAGE
stage1_1<-lm(ln_export_area~saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum, data=slave_data)
stage1_2<-lm(ln_export_area~saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum+colony1+colony2+colony3+
colony4+colony5+colony6+colony7, data=slave_data)
stage1_3<-lm(ln_export_area~saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum+colony1+colony2+colony3+
colony4+colony5+colony6+colony7+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area, data=slave_data)
stage1_4<-lm(ln_export_area~saharan_distance_minimum+
atlantic_distance_minimum+indian_distance_minimum+red_sea_distance_minimum+colony1+colony2+colony3+
colony4+colony5+colony6+colony7+abs_latitude+longitude+
rain_min+humid_max+low_temp+ln_coastline_area, data=restricted_sample)
pvH_1<-round(summary(ivreg1, diagnostics = TRUE)$diagnostics[2,4], digits=2)#Hausman test pvalue
pvH_2<-round(summary(ivreg2, diagnostics = TRUE)$diagnostics[2,4], digits=2)
pvH_3<-round(summary(ivreg3, diagnostics = TRUE)$diagnostics[2,4], digits=2)
pvH_4<-round(summary(ivreg4, diagnostics = TRUE)$diagnostics[2,4], digits=2)
pvS_1<-round(summary(ivreg1, diagnostics = TRUE)$diagnostics[3,4], digits=2)#Sargan test pvalue
pvS_2<-round(summary(ivreg2, diagnostics = TRUE)$diagnostics[3,4], digits=2)
pvS_3<-round(summary(ivreg3, diagnostics = TRUE)$diagnostics[3,4], digits=2)
pvS_4<-round(summary(ivreg4, diagnostics = TRUE)$diagnostics[3,4], digits=2)
#generate table - panel 1/2
stargazer(ivreg1,ivreg2,ivreg3,ivreg4,
header = FALSE,
digits = 3,
omit.table.layout = "n",
title="Estimates of the relationship between Slave Exports and Income",
type = "html",
dep.var.labels.include = FALSE,
summary=TRUE,
dep.var.caption =
"Second Stage. Dependent variable is log income in 2000, ln y",
omit=c('colony1','colony2','colony3','colony4','colony5','colony6','colony7','Constant','abs_latitude',
'longitude','rain_min','humid_max','low_temp','ln_coastline_area'),
add.lines=list(c('Colonizer fixed effects',"No","Yes","Yes","Yes"),
c('Geography controls','No','No','Yes','Yes'),
c('Restricted sample','No','No','No','Yes')))
| Second Stage. Dependent variable is log income in 2000, ln y | ||||
| (1) | (2) | (3) | (4) | |
| ln_export_area | -0.208*** | -0.201*** | -0.286* | -0.221*** |
| (0.053) | (0.047) | (0.153) | (0.076) | |
| Colonizer fixed effects | No | Yes | Yes | Yes |
| Geography controls | No | No | Yes | Yes |
| Restricted sample | No | No | No | Yes |
| Observations | 52 | 52 | 52 | 42 |
| R2 | 0.127 | 0.342 | 0.041 | 0.511 |
| Adjusted R2 | 0.110 | 0.220 | -0.322 | 0.284 |
| Residual Std. Error | 0.779 (df = 50) | 0.729 (df = 43) | 0.949 (df = 37) | 0.612 (df = 28) |
#generate table - panel 2/2
stargazer(stage1_1,stage1_2,stage1_3,stage1_4,
header = FALSE,
digits = 3,
type = "html",
dep.var.labels.include = FALSE,
summary=TRUE,
dep.var.caption =
"First Stage. Dependent variable is slave exports, ln(exports/area)",
omit=c('colony1','colony2','colony3','colony4','colony5','colony6','colony7','Constant','abs_latitude',
'longitude','rain_min','humid_max','low_temp','ln_coastline_area'),
add.lines=list(c('Colonizer fixed effects',"No","Yes","Yes","Yes"),
c('Geography controls','No','No','Yes','Yes'),
c('Restricted sample','No','No','No','Yes'),
c('Hausman test (pvalue)',pvH_1,pvH_2,pvH_3,pvH_4),
c('Sargan test (pvalue',pvS_1,pvS_2,pvS_3,pvS_4)))
| First Stage. Dependent variable is slave exports, ln(exports/area) | ||||
| (1) | (2) | (3) | (4) | |
| saharan_distance_minimum | -2.435*** | -3.001*** | -1.139 | -4.076** |
| (0.823) | (1.049) | (1.595) | (1.552) | |
| atlantic_distance_minimum | -1.314*** | -1.741*** | -1.316* | -1.686** |
| (0.357) | (0.425) | (0.761) | (0.680) | |
| indian_distance_minimum | -1.095*** | -1.426** | -1.081 | -1.570* |
| (0.380) | (0.531) | (0.697) | (0.801) | |
| red_sea_distance_minimum | -0.002 | -0.152 | -1.221 | 2.130 |
| (0.710) | (0.813) | (1.820) | (2.404) | |
| Colonizer fixed effects | No | Yes | Yes | Yes |
| Geography controls | No | No | Yes | Yes |
| Restricted sample | No | No | No | Yes |
| Hausman test (pvalue) | 0.02 | 0.01 | 0.02 | 0.04 |
| Sargan test (pvalue | 0.18 | 0.3 | 0.65 | 0.51 |
| Observations | 52 | 52 | 52 | 42 |
| R2 | 0.279 | 0.396 | 0.477 | 0.720 |
| Adjusted R2 | 0.218 | 0.230 | 0.216 | 0.540 |
| Residual Std. Error | 3.445 (df = 47) | 3.418 (df = 40) | 3.450 (df = 34) | 2.371 (df = 25) |
| F Statistic | 4.545*** (df = 4; 47) | 2.383** (df = 11; 40) | 1.824* (df = 17; 34) | 4.012*** (df = 16; 25) |
| Note: | p<0.1; p<0.05; p<0.01 | |||
Channels through which the slave trades may have affected economic development:
ggplot(slave_data, aes(x=ln_export_area, y=ethnic_fractionalization))+
geom_point(shape=1)+
geom_text(label=slave_data$isocode)+
geom_smooth(method=lm, se=FALSE)+
ggtitle("Relationship between Slave Exports and Current Ethnic Fractionalization")+
xlab("log of export / area")+
ylab("Ethnic fractionalization (Alesina, 2003)")
ggplot(slave_data, aes(x=ln_export_area, y=state_dev))+
geom_point(shape=1)+
geom_text(label=slave_data$isocode)+
geom_smooth(method=lm, se=FALSE)+
ggtitle("Relationship between Slave Exports and Nineteenth-Century State Development")+
xlab("log of export / area")+
ylab("19th century State development (Gennaioli & Rainer, 2006)")
I think there are some aspects that weaken the results, and thus leave room for imprevement. These are the following:
Let’s explore them individually.
Whit IV regressions there are 3 main diagnostics tests:
Weak instruments: The null hypothesis is that we have weak instruments, so a rejection means our instruments are not weak, which is good;
Wu-Hausman: Test for consistency. When we reject, it means OLS is not consistent, suggesting endogeneity is present;
Sargan test: Used when there is more than one instrument. If the null is rejected, it means that at least one of our instruments is invalid, and possibly all of them;
In Table IV the author reports only the last two above mentioned tests, but if we compute the Weak instrument test for the model in column (3) we get a pvalue of 0.53 implying that the instruments are weak in this scenario.
round(summary(ivreg3, diagnostics = TRUE)$diagnostics[1,4], digits=2) #Weak instrument test pvalue
## [1] 0.53
In defense of the author, I would say that this is not enough to undermine his overall results.
Just like in multiple regression it is important to compute heteroskedasticity-robust standard errors. However, throughout the paper the author never used robust standard errors.
Let’s rebuilt Tables III and IV this time taking into account HC standard errors:
#Modify Table III by taking into account Heteroskedasticity-Consistent standard errors using vcovHC()
se1<-coeftest(ols1, vcov = vcovHC, type = "HC1")
se2<-coeftest(ols2, vcov = vcovHC, type = "HC1")
se3<-coeftest(ols3, vcov = vcovHC, type = "HC1")
se4<-coeftest(ols4, vcov = vcovHC, type = "HC1")
se5<-coeftest(ols5, vcov = vcovHC, type = "HC1")
se6<-coeftest(ols6, vcov = vcovHC, type = "HC1")
stargazer(se1,se2,se3,se4,se5,se6,
header = FALSE,
digits = 3,
title="Relationship between Slave Exports and Income - corrected for HC std.err.",
type = "html",
dep.var.labels.include = FALSE,
dep.var.caption =
"Dependent variable is log real per capita GDP in 2000, ln y",
omit=c('colony1','colony2','colony3','colony4','colony5','colony6','colony7','Constant'),
add.lines=list(c('Colonizer fixed effects',"Yes","Yes","Yes","Yes","Yes","Yes")))
| Dependent variable is log real per capita GDP in 2000, ln y | ||||||
| (1) | (2) | (3) | (4) | (5) | (6) | |
| ln_export_area | -0.112*** | -0.076*** | -0.108*** | -0.085** | -0.103*** | -0.128*** |
| (0.027) | (0.027) | (0.037) | (0.033) | (0.029) | (0.031) | |
| abs_latitude | 0.016 | -0.005 | 0.019 | 0.023 | 0.006 | |
| (0.018) | (0.021) | (0.015) | (0.015) | (0.015) | ||
| longitude | 0.0005 | -0.007 | -0.004 | -0.004 | -0.009 | |
| (0.006) | (0.006) | (0.005) | (0.006) | (0.006) | ||
| rain_min | -0.001 | 0.008 | 0.0001 | -0.001 | -0.002 | |
| (0.011) | (0.007) | (0.007) | (0.008) | (0.007) | ||
| humid_max | 0.009 | 0.008 | 0.009 | 0.015 | 0.013 | |
| (0.009) | (0.010) | (0.011) | (0.009) | (0.009) | ||
| low_temp | -0.019 | -0.039 | -0.005 | -0.015 | -0.037 | |
| (0.031) | (0.028) | (0.030) | (0.027) | (0.027) | ||
| ln_coastline_area | 0.085** | 0.092** | 0.095* | 0.082* | 0.083** | |
| (0.036) | (0.041) | (0.049) | (0.044) | (0.037) | ||
| region_n | 0.382 | -0.304 | ||||
| (0.379) | (0.392) | |||||
| legor_fr | 0.755 | 0.643 | -0.141 | |||
| (0.456) | (0.427) | (0.483) | ||||
| island_dum | -0.398 | -0.150 | ||||
| (0.497) | (0.536) | |||||
| islam | -0.008** | -0.006 | -0.003 | |||
| (0.003) | (0.004) | (0.003) | ||||
| ln_avg_gold_pop | 0.011 | 0.014 | ||||
| (0.014) | (0.014) | |||||
| ln_avg_oil_pop | 0.078*** | 0.088*** | ||||
| (0.026) | (0.025) | |||||
| ln_avg_all_diamonds_pop | -0.039 | -0.048 | ||||
| (0.051) | (0.048) | |||||
| Colonizer fixed effects | Yes | Yes | Yes | Yes | Yes | Yes |
| Note: | p<0.1; p<0.05; p<0.01 | |||||
#Modify Table IV by taking into account Heteroskedasticity-Consistent standard errors using vcovHC()
model.lst = list(ivreg1, ivreg2, ivreg3, ivreg4)
model.lst2 = list(stage1_1, stage1_2, stage1_3, stage1_4)
stargazer(ivreg1, ivreg2, ivreg3, ivreg4,
header = FALSE,
digits = 3,
title="Estimates of the relationship between Slave Exports and Income - corrected for HC std.err.",
type = "html",
dep.var.labels.include = FALSE,
summary=TRUE,
se=lapply(model.lst, function(x) sqrt(diag(sandwich::vcovHC(x, type = "HC1")))),
dep.var.caption =
"Second Stage. Dependent variable is log income in 2000, ln y",
omit=c('colony1','colony2','colony3','colony4','colony5','colony6','colony7','Constant','abs_latitude',
'longitude','rain_min','humid_max','low_temp','ln_coastline_area'),
add.lines=list(c('Colonizer fixed effects',"No","Yes","Yes","Yes"),
c('Geography controls','No','No','Yes','Yes'),
c('Restricted sample','No','No','No','Yes')))
| Second Stage. Dependent variable is log income in 2000, ln y | ||||
| (1) | (2) | (3) | (4) | |
| ln_export_area | -0.208*** | -0.201*** | -0.286* | -0.221** |
| (0.046) | (0.054) | (0.158) | (0.094) | |
| Colonizer fixed effects | No | Yes | Yes | Yes |
| Geography controls | No | No | Yes | Yes |
| Restricted sample | No | No | No | Yes |
| Observations | 52 | 52 | 52 | 42 |
| R2 | 0.127 | 0.342 | 0.041 | 0.511 |
| Adjusted R2 | 0.110 | 0.220 | -0.322 | 0.284 |
| Residual Std. Error | 0.779 (df = 50) | 0.729 (df = 43) | 0.949 (df = 37) | 0.612 (df = 28) |
| Note: | p<0.1; p<0.05; p<0.01 | |||
stargazer(stage1_1, stage1_2, stage1_3, stage1_4,
header = FALSE,
digits = 3,
type = "html",
dep.var.labels.include = FALSE,
summary=TRUE,
se=lapply(model.lst2, function(x) sqrt(diag(sandwich::vcovHC(x, type = "HC1")))),
dep.var.caption =
"First Stage. Dependent variable is slave exports, ln(exports/area)",
omit=c('colony1','colony2','colony3','colony4','colony5','colony6','colony7','Constant','abs_latitude',
'longitude','rain_min','humid_max','low_temp','ln_coastline_area'),
add.lines=list(c('Colonizer fixed effects',"No","Yes","Yes","Yes"),
c('Geography controls','No','No','Yes','Yes'),
c('Restricted sample','No','No','No','Yes')))
| First Stage. Dependent variable is slave exports, ln(exports/area) | ||||
| (1) | (2) | (3) | (4) | |
| saharan_distance_minimum | -2.435*** | -3.001*** | -1.139 | -4.076** |
| (0.814) | (1.092) | (1.836) | (1.697) | |
| atlantic_distance_minimum | -1.314*** | -1.741*** | -1.316* | -1.686** |
| (0.349) | (0.436) | (0.784) | (0.792) | |
| indian_distance_minimum | -1.095*** | -1.426*** | -1.081 | -1.570* |
| (0.379) | (0.544) | (0.798) | (0.903) | |
| red_sea_distance_minimum | -0.002 | -0.152 | -1.221 | 2.130 |
| (0.727) | (0.910) | (1.652) | (1.978) | |
| Colonizer fixed effects | No | Yes | Yes | Yes |
| Geography controls | No | No | Yes | Yes |
| Restricted sample | No | No | No | Yes |
| Observations | 52 | 52 | 52 | 42 |
| R2 | 0.279 | 0.396 | 0.477 | 0.720 |
| Adjusted R2 | 0.218 | 0.230 | 0.216 | 0.540 |
| Residual Std. Error | 3.445 (df = 47) | 3.418 (df = 40) | 3.450 (df = 34) | 2.371 (df = 25) |
| F Statistic | 4.545*** (df = 4; 47) | 2.383** (df = 11; 40) | 1.824* (df = 17; 34) | 4.012*** (df = 16; 25) |
| Note: | p<0.1; p<0.05; p<0.01 | |||
Inevitably, standard errors increase thus lowering the significance of the models estimates. Again, this does not strongly undermine the interpretation of the author’s results, but it is worthy taking notice of that.