************************************************************************************************** *** This do file creates the replication results for *** The ties that bind: The role of migrants in the uneven geography of international telephone traffic */ *** Richard Perkins (LSE) */ *** Eric Neumayer (LSE) */ *** */ *** Published in: Global Networks, 13 (1), 2013, pp. 79-100 */ ************************************************************************************************** ************************************************************************************************** /* Note: You have to change "local DIR" to the directory you copy the original stata files contained */ /* in the zip file and then run the do file. */ ************************************************************************************************** version 11.0 drop _all clear matrix clear mata set mem 800m set mat 5000 capture net install outreg2, from(http://fmwww.bc.edu/RePEc/bocode/o) /* checks whether outreg2 is installed */ *********************************************************************************** local DIR = "C:\Research\Other articles\Telecommunication" /*change relative path to the directory where the files are located */ cd "`DIR'" *********************************************************************************** use "Article for Global Networks (telephony).dta", clear xi: reg lntrafvolumemill_av lntrade lnfdi lnvisitors lnmigrantstock contiguity4dummy comlang lndistance coloniallinkplusrussia lngdppcconst_sumboth lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) outreg2 using table1, replace excel estat ic * interaction with distance xi: reg lntrafvolumemill_av lnmigrantstock lndistance lnmigrant_lndistance lntrade lnfdi lnvisitors contiguity4dummy comlang coloniallinkplusrussia lngdppcconst_sumboth lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) estat ic outreg2 using table1, append excel #delimit ; capture drop MV conb conse a upper lower; generate MV=((_n-1)/1); replace MV=. if _n>12; * **************************************************************** *; * Grab elements of the coefficient and variance-covariance matrix *; * that are required to calculate the marginal effect and standard *; * errors. *; * **************************************************************** *; matrix b=e(b); matrix list b; matrix V=e(V); matrix list V; scalar b1=b[1,1]; scalar b2=b[1,2]; scalar b3=b[1,3]; scalar varb1=V[1,1]; scalar varb2=V[2,2]; scalar varb3=V[3,3]; scalar covb1b3=V[1,3]; scalar covb2b3=V[2,3]; scalar list b1 b2 b3 varb1 varb2 varb3 covb1b3 covb2b3; * **************************************************************** *; * Calculate the marginal effect of X on Y for all MV values of *; * the modifying variable Z. *; * **************************************************************** *; gen conb=b1+b3*MV if _n<12; * **************************************************************** *; * Calculate the standard errors for the marginal effect of X on Y *; * for all MV values of the modifying variable Z. *; * **************************************************************** *; gen conse=sqrt(varb1+varb3*(MV^2)+2*covb1b3*MV) if _n<12; * **************************************************************** *; * Generate upper and lower bounds of the confidence interval. *; * Specify the significance of the confidence interval. *; * **************************************************************** *; gen a=1.64*conse; gen upper=conb+a; gen lower=conb-a; * **************************************************************** *; * Graph the marginal effect of X on Y across the desired range of *; * the modifying variable Z. Show the confidence interval. *; * **************************************************************** *; graph twoway line conb MV, clwidth(medium) clcolor(blue) clcolor(black) || line upper MV, clpattern(dash) clwidth(thin) clcolor(black) || line lower MV, clpattern(dash) clwidth(thin) clcolor(black) || , xlabel(0 1 2 3 4 5 6 7 8 9 10, labsize(2.5)) ylabel(0 .1 .2 .3 .4, labsize(2.5)) yscale(noline) xscale(noline) legend(col(1) order(1 2) label(1 "Marginal effect of migrant stocks") label(2 "90% Confidence interval") label(3 " ")) yline(0, lcolor(black)) xtitle( "ln(distance)", size(3) ) xsca(titlegap(2)) ysca(titlegap(2)) scheme(s2mono) graphregion(fcolor(white)); * **************************************************************** *; * Figure can be saved in a variety of formats. *; * **************************************************************** *; graph export figure1.eps, replace; #delimit cr * interaction with sum of GDP xi: reg lntrafvolumemill_av lnmigrantstock lngdppcconst_sumboth lnmigrant_lngdppc_sumboth lntrade lnfdi lnvisitors contiguity4dummy comlang lndistance coloniallinkplusrussia lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) estat ic outreg2 using table1, append excel #delimit ; capture drop MV conb conse a upper lower; generate MV=((_n-1)/1)+5; replace MV=. if _n>9; * **************************************************************** *; * Grab elements of the coefficient and variance-covariance matrix *; * that are required to calculate the marginal effect and standard *; * errors. *; * **************************************************************** *; matrix b=e(b); matrix list b; matrix V=e(V); matrix list V; scalar b1=b[1,1]; scalar b2=b[1,2]; scalar b3=b[1,3]; scalar varb1=V[1,1]; scalar varb2=V[2,2]; scalar varb3=V[3,3]; scalar covb1b3=V[1,3]; scalar covb2b3=V[2,3]; scalar list b1 b2 b3 varb1 varb2 varb3 covb1b3 covb2b3; * **************************************************************** *; * Calculate the marginal effect of X on Y for all MV values of *; * the modifying variable Z. *; * **************************************************************** *; gen conb=b1+b3*MV if _n<9; * **************************************************************** *; * Calculate the standard errors for the marginal effect of X on Y *; * for all MV values of the modifying variable Z. *; * **************************************************************** *; gen conse=sqrt(varb1+varb3*(MV^2)+2*covb1b3*MV) if _n<9; * **************************************************************** *; * Generate upper and lower bounds of the confidence interval. *; * Specify the significance of the confidence interval. *; * **************************************************************** *; gen a=1.64*conse; gen upper=conb+a; gen lower=conb-a; * **************************************************************** *; * Graph the marginal effect of X on Y across the desired range of *; * the modifying variable Z. Show the confidence interval. *; * **************************************************************** *; graph twoway line conb MV, clwidth(medium) clcolor(blue) clcolor(black) || line upper MV, clpattern(dash) clwidth(thin) clcolor(black) || line lower MV, clpattern(dash) clwidth(thin) clcolor(black) || , xlabel(5 6 7 8 9 10 11 12, labsize(2.5)) ylabel(0 .1 .2 .3 .4 .5, labsize(2.5)) yscale(noline) xscale(noline) legend(col(1) order(1 2) label(1 "Marginal effect of migrant stocks") label(2 "90% Confidence interval") label(3 " ")) yline(0, lcolor(black)) xtitle( "ln(sum of GDP pc in both countries)", size(3) ) xsca(titlegap(2)) ysca(titlegap(2)) scheme(s2mono) graphregion(fcolor(white)); * **************************************************************** *; * Figure can be saved in a variety of formats. *; * **************************************************************** *; graph export figure2.eps, replace; #delimit cr ** Comparing AIC/BIC for model fit purposes, throwing out one relational variable at a time * Without migrant stock xi: reg lntrafvolumemill_av lntrade lnfdi lnvisitors contiguity4dummy comlang lndistance coloniallinkplusrussia lngdppcconst_sumboth lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) estat ic * Without visitors xi: reg lntrafvolumemill_av lntrade lnfdi lnmigrantstock contiguity4dummy comlang lndistance coloniallinkplusrussia lngdppcconst_sumboth lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) estat ic * Without FDI xi: reg lntrafvolumemill_av lntrade lnvisitors lnmigrantstock contiguity4dummy comlang lndistance coloniallinkplusrussia lngdppcconst_sumboth lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) estat ic * Without trade xi: reg lntrafvolumemill_av lnfdi lnvisitors lnmigrantstock contiguity4dummy comlang lndistance coloniallinkplusrussia lngdppcconst_sumboth lnpop_sumboth lnpop_sumboth_sq i.reporter*i.year i.partner*i.year if year>2000, robust cluster(dyadid) estat ic