My current code runs a nonparametric regression, computes the difference in marginal effects for between each observation and the observation + a constant, then averages that difference. Bootstrapping this program takes quite a long time. I was wondering if there's anything I can do to speed up the process or any preexisting routine that would help (Stata 17 MP). Below is some example code with a publicly accessible dataset just for illustration
clear all
use "http://fmwww.bc.edu/ec-p/data/wooldridge/mroz.dta"
program define adj_margins_diff, rclass
npregress kernel lwage exper
scalar sum_diff = 0
forvalues i = 1/400 {
scalar exper_i = exper[`i']
scalar adj_i = swan_i + 3
margins, at(exper=`=adj_i')
matrix b1 = r(b)[1,1]
margins, at(exper=`=experi_i')
matrix b2 = r(b)[1,1]
scalar sum_diff = sum_diff + b1-b2
}
scalar adj_avg_diff = sum_diff /400
return scalar adj_avg_diff = adj_avg_diff
end
bootstrap r(adj_avg_diff), reps(1000): adj_margins_diff
clear all
use "http://fmwww.bc.edu/ec-p/data/wooldridge/mroz.dta"
program define adj_margins_diff, rclass
npregress kernel lwage exper
scalar sum_diff = 0
forvalues i = 1/400 {
scalar exper_i = exper[`i']
scalar adj_i = swan_i + 3
margins, at(exper=`=adj_i')
matrix b1 = r(b)[1,1]
margins, at(exper=`=experi_i')
matrix b2 = r(b)[1,1]
scalar sum_diff = sum_diff + b1-b2
}
scalar adj_avg_diff = sum_diff /400
return scalar adj_avg_diff = adj_avg_diff
end
bootstrap r(adj_avg_diff), reps(1000): adj_margins_diff
Comment