semipar命令安装的时候有一个do文件
是用的模拟数据
**PLREG vs SEMIPAR
clear
set seed 123
set obs 300
set matsize 5000
set more off
gen x1=round(uniform()*20)-10
drawnorm x2 x3 e y
gen x12=x1^2
matrix B1=(0,0)
matrix B2=(0,0)
forvalues i=1(1)1000 {
display in r `i'
replace e=invnorm(uniform())
replace e = e/sqrt(10)
replace y=x1+x2+x3+x12+e
qui plreg y x2 x3, nlf(x1) order(10) nograph
matrix BPLS=e(b)
matrix B1=(B1\BPLS)
qui semipar y x2 x3, nonpar(x1) nograph
matrix BSEMIPAR=e(b)
matrix B2=(B2\BSEMIPAR)
}
matrix B1=B1[2...,1...]
matrix B2=B2[2...,1...]
matrix BiasPLREG =B1-J(rowsof(B1),colsof(B1),1)
matrix BiasSEMIPAR=B2-J(rowsof(B2),colsof(B2),1)
matrix list BiasPLREG
matrix list BiasSEMIPAR
mata: BiasPLREG =st_matrix("BiasPLREG")
mata: BiasSEMIPAR=st_matrix("BiasSEMIPAR")
mata: mean(BiasPLREG)
mata: mean(BiasSEMIPAR)
mata: mean(BiasPLREG) :^2+diagonal(variance(BiasPLREG))'
mata: mean(BiasSEMIPAR):^2+diagonal(variance(BiasSEMIPAR))'
** Application of the paper
use
http://fmwww.bc.edu/ec-p/data/wooldridge/hprice3, clear
set seed 123
semipar lprice ldist larea lland rooms baths age, nonpar(linst) xtitle(linst) ci
semipar lprice ldist larea lland rooms baths age, nonpar(linst) nograph test(2)
semipar lprice ldist larea lland rooms baths age, nonpar(linst) nograph test(3)