下面这段程序运行时有invalid name,请问哪里有错
clear
set obs 100
gen x1=uniform()
gen x2=1+3*invnorm(uniform())
gen e=invnorm(uniform())
gen u2=exp(2*ln(x1))*e
gen u3=exp(2*ln(x2))*e
gen u4=exp(ln(x1)+ln(x2))*e
gen y1=1+3*x1+5*x2+e
gen y2=1+3*x1+5*x2+u2
gen y3=1+3*x1+5*x2+u3
gen y4=1+3*x1+5*x2+u4
forvalue i=1/4{
reg y`i' x1 x2
predict uh`i',res
gen luh`i'=ln(uh`i'*uh`i')
reg luh`i' x1 x2
predict g`i'
gen `i'=exp(`i')
reg y2 x1 x2 [aw=1/`i']
}