Bookmark and Share

Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, is already up and running.

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

RE: st: nlsur function evaluator program QUAIDS with demographics

From   Murat Genc <>
To   "''" <>
Subject   RE: st: nlsur function evaluator program QUAIDS with demographics
Date   Sat, 9 Mar 2013 01:49:38 +0000

Hi all,

Just a couple comments to add.  

Yen, S.T., Kan, K., & Su, S-J. (2002) "Household demand for fats and oils: Two-step estimation of a censored demand." Applied Economics, 34(14), 1799-1806 argue that unlike the conventional case of additive disturbances without censoring, the deterministic component of the right-hand side of the system do not add up to unity across all equations of the system.  Therefore, they say that the second step of the estimation should be based on the entire set of equations without dropping one arbitrary equation.  

The same paper also points out that the conventional covariance matrix of the second-step estimator is incorrect and needs to be corrected.

I wonder if there is anyone who has estimated a demand system in Stata catering for these issues and willing to share the code for that.  (Whether it is AIDS, QUAIDS, translog, etc.)  



                         Dr M Genç 
Department of Economics                Research Fellow                
University of Otago            and     Institute for the Study of Labor (IZA)
P O Box 56                             Bonn, Germany
Dunedin 9054, New Zealand 
         Phone: +64 3 479 8644                                  
         Fax: +64 3 479 8174                                   
	   Web: <>      

-----Original Message-----
From: [] On Behalf Of ogundarikolawole
Sent: Saturday, 9 March 2013 1:39 p.m.
Subject: RE: st: nlsur function evaluator program QUAIDS with demographics

Hi all,

I think people keep on confusing the usefulness of Poi's new command called "quaids"  to reality of the economic data often used for empirical analysis of demand system. Those that understood the role of data generating process (DGP) governing any  economic data before using any software are the one talking about the shortcoming of the Poi's new user free command in STATA just mentioned, especially when data is censored. The Poi's quaids in STATA cannot handle censored data but it is useful for an idea data with no problem of any censoring. So, if you are a researcher estimating demand system and your data is censored, then estimating demand elasticities using Poi's new user free command in STATA (quaids) will produce a biased results.

The best approach is to figure out with a little programming experince on how to take into account the censoring problem in the data by modify the nlsur function evaluator program QUAIDS also provided by Poi some years back. The most frequent approach is by Shonkwiler, J.S., and S.T. Yen. 1999. "Two-Step Estimation of A Censored System of Equations." American Journal of Agricultural Economics 81: 972-982.

However, a number of contributors on this STATA list has used this approach. Below is the a typical nlsur function evaluator program QUAIDS with demographics, which also take into account censoring problem in economic data posted by one of the STATA contributors some months ago.

program nlsurquaidsNNP
version 12.1
syntax varlist(min=16 max=16) if, at(name) tokenize `varlist'
args w1 w2 w3 lnp1 lnp2 lnp3 lnp4 lnm x1 x2 pdf1 pdf2 pdf3 cdf1 cdf2 cdf3 // With four goods, there are 15 parameters that can be // estimated, after eliminating one of the goods and // imposing adding up, symmetry, and homogeneity // constraints, in the QUAIDS model // Here, we extract those parameters from the `at'
// vector, and impose constraints as we go along 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 b4
scalar `b1' = `at'[1,4]
scalar `b2' = `at'[1,5]
scalar `b3' = `at'[1,6]
scalar `b4' = -`b1' - `b2' - `b3'
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'
tempname l1 l2 l3 l4
scalar `l1' = `at'[1,13]
scalar `l2' = `at'[1,14]
scalar `l3' = `at'[1,15]
scalar `l4' = -`l1' - `l2' - `l3'
// constant and household demographics
tempname r11 r12
tempname r21 r22
tempname r31 r32
scalar `r11' = `at'[1,16]
scalar `r12' = `at'[1,17]
scalar `r21' = `at'[1,18]
scalar `r22' = `at'[1,19]
scalar `r31' = `at'[1,20]
scalar `r32' = `at'[1,21]
// pdf
tempname d1 d2 d3
scalar `d1' = `at'[1,22]
scalar `d2' = `at'[1,23]
scalar `d3' = `at'[1,24]
// Okay, now that we have all the parameters, we can // calculate the expenditure shares.
quietly {
// First get the price index
// I set a_0 = 5
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' +  ///
// The b(p) term in the QUAIDS model:
tempvar bofp
gen double `bofp' = 0
forvalues i = 1/4 {
replace `bofp' = `bofp' + `lnp`i''*`b`i''
   replace `bofp' = exp(`bofp')
// Finally, the expenditure shares for 3 of the 4 // goods (the fourth is dropped to avoid singularity)
    replace `w1' = (`a1' + `g11'*`lnp1' + `g12'*`lnp2' + ///
            `g13'*`lnp3' + `g14'*`lnp4' + ///
            `b1'*(`lnm' - `lnpindex') + ///
            `l1'/`bofp'*(`lnm' - `lnpindex')^2 + ///
        `r11'*`x1' +`r12'*`x2')*`cdf1'+ ///
    replace `w2' = (`a2' + `g21'*`lnp1' + `g22'*`lnp2' + ///
            `g23'*`lnp3' + `g24'*`lnp4' + ///
            `b2'*(`lnm' - `lnpindex') + ///
            `l2'/`bofp'*(`lnm' - `lnpindex')^2 + ///
        `r21'*`x1' +`r22'*`x2')*`cdf2' + ///
    replace `w3' = (`a3' + `g31'*`lnp1' + `g32'*`lnp2' + ///
           `g33'*`lnp3' + `g34'*`lnp4' + ///
            `b3'*(`lnm' - `lnpindex') + ///
            `l3'/`bofp'*(`lnm' - `lnpindex')^2 + ///
        `r31'*`x1' +`r32'*`x2')*`cdf3' + ///

© Copyright 1996–2016 StataCorp LP   |   Terms of use   |   Privacy   |   Contact us   |   Site index