Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: st: RE: RE: -nlsur- AIDS


From   "Brian P. Poi" <[email protected]>
To   [email protected]
Subject   Re: st: RE: RE: -nlsur- AIDS
Date   Thu, 10 Nov 2011 08:37:37 -0600

Ivica,

You forgot to define g61 through g66.  Even though we drop the last expenditure share equation in estimation, we still need those gamma parameters to calculate the price index.  After the line

   scalar -`g51'-`g52'-`g53'-`g54'-`g55'

you need to add

   tempname g61 g62 g63 g64 g65 g66
   scalar `g61' = `g16'
   scalar `g62' = `g26'
   scalar `g63' = `g36'
   scalar `g64' = `g46'
   scalar `g65' = `g56'
   scalar `g66' = -`g61' - `g62' - `g63' - `g64' - `g65'
		
Also, this line:

   scalar `b6' = 1-`b1'-`b2'-`b3'-`b4'-`b5'

isn't right; the betas should sum to zero, not one, so that line should be

   scalar `b6' = -`b1'-`b2'-`b3'-`b4'-`b5'

(but in fact you don't even need the last beta to evaluate just the first K-1 expenditure shares, so `b6' isn't even used.)



Brian P. Poi
Senior Economist
StataCorp LP


Ivica Rubil wrote:
Nick, I've corrected what you suggested, but it still doesn't work. Of
course this is a 6-good AIDS (not a 5-good one as I said in the previous
mail).

Here's the corrected code which still doesn't work and returns the same
error message, namely that I have to check if "aids" is really a
function evaluator program.

CORRECTED CODE:

* Function evaluator program
program nlsuraids
		version 11
		
		syntax varlist(min=12 max=12) if, at(name)
		tokenize `varlist'
		args w1 w2 w3 w4 w5 lnp1 lnp2 lnp3 lnp4 lnp5 lnp6 lnexp
		
		tempname a1 a2 a3 a4 a5 a6
		scalar `a1' = `at'[1,1]
		scalar `a2' = `at'[1,2]
		scalar `a3' = `at'[1,3]
		scalar `a4' = `at'[1,4]
		scalar `a5' = `at'[1,5]
		scalar `a6' = 1-`a1'-`a2'-`a3'-`a4'-`a5'
		
		tempname b1 b2 b3 b4 b5 b6
		scalar `b1' = `at'[1,6]
		scalar `b2' = `at'[1,7]
		scalar `b3' = `at'[1,8]
		scalar `b4' = `at'[1,9]
		scalar `b5' = `at'[1,10]
		scalar `b6' = 1-`b1'-`b2'-`b3'-`b4'-`b5'
				
		tempname g11 g12 g13 g14 g15 g16
		scalar `g11' = `at'[1,11]
		scalar `g12' = `at'[1,12]
		scalar `g13' = `at'[1,13]
		scalar `g14' = `at'[1,14]
		scalar `g15' = `at'[1,15]
		scalar `g16' = -`g11'-`g12'-`g13'-`g14'-`g15'
		
		tempname g21 g22 g23 g24 g25 g26
		scalar `g21' = `g12'
		scalar `g22' = `at'[1,16]
		scalar `g23' = `at'[1,17]
		scalar `g24' = `at'[1,18]
		scalar `g25' = `at'[1,19]
		scalar `g26' = -`g21'-`g22'-`g23'-`g24'-`g25'
		
		tempname g31 g32 g33 g34 g35 g36
		scalar `g31' = `g13'
		scalar `g32' = `g23'
		scalar `g33' = `at'[1,20]
		scalar `g34' = `at'[1,21]
		scalar `g35' = `at'[1,22]
		scalar `g36' = -`g31'-`g32'-`g33'-`g34'-`g35'
		
		tempname g41 g42 g43 g44 g45 g46
		scalar `g41' = `g14'
		scalar `g42' = `g24'
		scalar `g43' = `g34'
		scalar `g44' = `at'[1,23]
		scalar `g45' = `at'[1,24]
		scalar `g46' = -`g41'-`g42'-`g43'-`g44'-`g45'
		
		tempname g51 g52 g53 g54 g55 g56
		scalar `g51' = `g15'
		scalar `g52' = `g25'
		scalar `g53' = `g35'
		scalar `g54' = `g45'
		scalar `g55' = `at'[1,25]
		scalar `g56' = -`g51'-`g52'-`g53'-`g54'-`g55'
		
		
		quietly {
				tempvar lnpindex
				gen double `lnpindex' = 5 + `a1'*`lnp1'
+ `a2'*`lnp2' + ///
				                            `a3'*`lnp3'
+ `a4'*`lnp4' + ///
	
`a5'*`lnp5' + `a6'*`lnp6'
					forvalues i = 1/6 {
						forvalues j = 1/6 {
							replace
`lnpindex' = `lnpindex' + 0.5*`g`i'`j''*`lnp`i''*`lnp`j''
						}
					}
				
				replace `w1' = `a1' + `g11'*`lnp1' +
`g12'*`lnp2' + `g13'*`lnp3' + ///
				                      `g14'*`lnp4' +
`g15'*`lnp5' + `g16'*`lnp6' + ///
	
`b1'*(`lnexp' - `lnpindex')
				
				replace `w2' = `a2' + `g21'*`lnp1' +
`g22'*`lnp2' + `g23'*`lnp3' + ///
				                      `g24'*`lnp4' +
`g25'*`lnp5' + `g26'*`lnp6' + ///
	
`b2'*(`lnexp' - `lnpindex')
				
				replace `w3' = `a3' + `g31'*`lnp1' +
`g32'*`lnp2' + `g33'*`lnp3' + ///
				                      `g34'*`lnp4' +
`g35'*`lnp5' + `g36'*`lnp6' + ///
	
`b3'*(`lnexp' - `lnpindex')
replace `w4' = `a4' + `g41'*`lnp1' +
`g42'*`lnp2' + `g43'*`lnp3' + ///
				                      `g44'*`lnp4' +
`g45'*`lnp5' + `g46'*`lnp6' + ///
	
`b4'*(`lnexp' - `lnpindex')
				
				replace `w5' = `a5' + `g51'*`lnp1' +
`g52'*`lnp2' + `g53'*`lnp3' + ///
				                      `g54'*`lnp4' +
`g55'*`lnp5' + `g56'*`lnp6' + ///
	
`b5'*(`lnexp' - `lnpindex')
		}
end


* -nlsur-
nlsur aids @ w1 w2 w3 w4 w5 lnp1 lnp2 lnp3 lnp4 lnp5 lnp6 lnexp, ///
      ifgnls nequations(5) parameters(a1 a2 a3 a4 a5 b1 b2 b3 b4 b5 ///
	                                  g11 g12 g13 g14 g15 g22 g23
g24 ///
	
g25 g33 g34 g35 g44 g45 g55)



*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index