program nlsuraids
version 12
syntax varlist(min=8 max=8) [if], at(name)
tokenize 'varlist'
args w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnpindex
tempname a1 a2 a3 a4
scalar 'a1' = 'at'[1,1]
scalar 'a2' = 'at'[1,2]
scalar 'a3' = 'at'[1,3]
scalar 'a4' = 1 - 'a1' - 'a2' - 'a3'
tempname b1 b2 b3
scalar 'b1' = 'at'[1,4]
scalar 'b2' = 'at'[1,5]
scalar 'b3' = 'at'[1,6]
tempname g11 g12 g13 g14
tempname g21 g22 g23 g24
tempname g31 g32 g33 g34
tempname g41 g42 g43 g44
scalar 'g11' = 'at'[1,7]
scalar 'g12' = 'at'[1,8]
scalar 'g13' = 'at'[1,9]
scalar 'g14' = -'g11'-'g12'-'g13'
scalar 'g21' = 'g12'
scalar 'g22' = 'at'[1,10]
scalar 'g23' = 'at'[1,11]
scalar 'g24' = -'g21'-'g22'-'g23'
scalar 'g31' = 'g13'
scalar 'g32' = 'g23'
scalar 'g33' = 'at'[1,12]
scalar 'g34' = -'g31'-'g32'-'g33'
scalar 'g41' = 'g14'
scalar 'g42' = 'g24'
scalar 'g43' = 'g34'
scalar 'g44' = -'g41'-'g42'-'g43'
quietly {
tempvar lnpindex
gen double 'lnpindex' = 5 + 'a1'*'lnp1' + 'a2'*'lnp2' + 'a3'*'lnp3' + 'a4'*'lnp4'
forvalues i = 1/4 {
forvalues j = 1/4 {
replace 'lnpindex' = 'lnpindex' + 0.5*‘g'i''j''*'lnp'i''*'lnp'j''
}
}
replace 'w1' = 'a1' + 'g11'*'lnp1' + 'g12'*'lnp2' + 'g13'*'lnp3' + 'g14'*'lnp4' + 'b1'*('lnexp' - 'lnpindex')
replace 'w2' = 'a2' + 'g21'*'lnp1' + 'g22'*'lnp2' + 'g23'*'lnp3' + 'g24'*'lnp4' + 'b2'*('lnexp' - 'lnpindex')
replace 'w3' = 'a3' + 'g31'*'lnp1' + 'g32'*'lnp2' + 'g33'*'lnp3' + 'g34'*'lnp4' + 'b3'*('lnexp' - 'lnpindex')
}
end
use http://www.stata-press.com/data/r11/food, clear
nlsur aids @ w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnexp,
> parameters(a1 a2 a3 b1 b2 b3
> g11 g12 g13 g22 g32 g33)
> neq(3) ifgnls
(obs = 4048)
方程是