Estimating an Almost Ideal Demand System Model

Started ‎12-01-2023 by
Modified ‎12-01-2023 by
Views 1,324

Overview

The Almost Ideal Demand System (AIDS) model of Deaton and Muellbauer (1980b) has enjoyed great popularity in applied demand analysis. Starting from a specific cost function, the AIDS model gives the share equations in an n-good system as

img1.gif

where wi is the share associated with the ith good, img2.gifis the constant coefficient in the ith share equation, img3.gifis the slope coefficient associated with the jth good in the ith share equation, pj is the price on the jth good. X is the total expenditure on the system of goods given by
img4.gif
in which qi is the quantity demanded for the ith good. P is the price index defined by

img5.gif

in the nonlinear AIDS model. Deaton and Muellbauer (1980a) also suggested a linear approximation of the nonlinear AIDS model by specifying a linear price index given by

img6.gif

that gives rise to the linear approximate AIDS (LA-AIDS) model. In practice, the LA-AIDS model is more frequently estimated than the nonlinear AIDS model.

Conservation implies the following restrictions on the parameters in the nonlinear AIDS model:

img7.gif

Homogeneity is satisfied if and only if, for all

img8.gif

and symmetry is satisfied if img9.gif

One advantage of the AIDS model is that the homogeneity and symmetry restrictions are easily imposed and tested.

Analysis

 

In this example, you can estimate a nonlinear AIDS model and LA-AIDS model using U.S. meat products data. The data consists of aggregate quarterly retail price and per capita consumption for four meat product categories including beef, pork, chicken, and turkey. The data period covers the first quarter of 1974 to the last quarter of 1999. The data were obtained from various USDA sources listed in the references. More detailed description of the data construction may be found in Piggott (1997).

To incorporate seasonality and trend in the U.S. meat consumption data, you augment the AIDS model with trigonometric variables and a time trend variable. Thus the share equations to be estimated are expressed as follows: 

img10.gif

where aci and asi represent parameters on the trigonometric variables, and ati is the parameter on the time trend variable. Since the budget shares sum up to 1, these parameters should satisfy

img11.gif

The following is a portion of the code used to create the data set. A second set of SAS statements is used to create the time trend variable and the seasonal variables. Total expenditures, X, and shares for each good are also computed.

 

 

   data aids_;
      input year qtr pop beef_q pork_q chick_q turkey_q beef_p pork_p chick_p
            turkey_p cpi pc_exp;
      date = yyq(year,qtr);
      format date yyq6.;


   ... more datalines ...

   ;
   run;

 

   data aids;
      set aids_;
      if year < 1975 then delete;
      t = _n_ ;
      co1 = cos(1/2*3.14159*t);
      co2 = cos(2/2*3.14159*t);

      si1 = sin(1/2*3.14159*t);
      si2 = sin(2/2*3.14159*t);

      x = beef_p*beef_q + pork_p*pork_q + chick_p*chick_q
          + turkey_p*turkey_q;

      w_beef = beef_p*beef_q/x;
      w_pork = pork_p*pork_q/x;
      w_chick = chick_p*chick_q/x;
      w_turkey = turkey_p*turkey_q/x;
   run;

 

The plot of the budget shares found in Figure 1 .

 

   proc gplot data=aids;
      plot w_beef*date w_pork*date w_chick*date w_turkey*date/
           overlay cframe=ligr haxis=axis1 vaxis=axis2;
      title 'Budget Shares Plots';
      footnote1 c=blue '  *     beef   '
                c=red  '  .     pork  '
                c=green '  o    chicken  '
                c=black '  +    turkey   ';
      symbol1 c=blue i=join v=star;
      symbol2 c=red  i=join v=dot;
      symbol3 c=green i = join v = circle ;
      symbol4 c=black i = join v = plus ;
      axis1  label=('Time') ;
      axis2  label=(angle=90 'Budget Share');
   run;
   quit;

 

plot1.gif

Figure 1: Budget Shares Plots



Price and quantity variables in the data set are labeled in an obvious manner. Three variable names in the DATA step require some explanation. The variable named pop contains the U.S. population, cpi contains the consumer price index for all goods, and pc_exp is the per capita nominal personal consumption expenditures on all goods.

To obtain mean-scaled price data, you use the MEANS procedure. The means of each of the price variables are written to the OUT= data set as the b_m, p_m, c_m, and t_m variables. The original price variables are then divided by the mean variables in a subsequent DATA step.

 

   data aids ;
      if _n_ = 1 then set pm ;
      set aids ;

      pb_ = (beef_p/b_m);
      pp_ = (pork_p/p_m);
      pc_ = (chick_p/c_m);
      pt_ = (turkey_p/t_m);

      lpb = log(pb_);
      lpp = log(pp_);
      lpc = log(pc_);
      lpt = log(pt_);

      lx = log(x);

   /* Specify the linear price index for the LA-AIDS model */
      lp0 = sum(w_beef*lpb + w_pork*lpp + w_chick*lpc + w_turkey*lpt);
      lxp = lx-lp0;
   run;

 

The LA-AIDS model is estimated using the SYSLIN procedure. The ITSUR option specifies the iterated seemingly unrelated regression as the estimation method. The equations to be fit are then specified. Since budget shares sum to 1 in the system, one of the share equations is deleted to deal with the singularity problem. In this example, you eliminate the share equation for turkey. Whichever one is eliminated should not have any effect on the results. The parameters associated with the share equation that is deleted can be recovered through the parameter restrictions implied by the homogeneity, symmetry, and conservation properties. The parameter restrictions can be imposed through the SRESTRICT statement.

 

 

   proc syslin itsur data = aids outest = fin1;
      b: model w_beef = lpb lpp lpc lpt lxp co1 si1 t ;
      p: model w_pork = lpb lpp lpc lpt lxp co1 si1 t ;
      c: model w_chick = lpb lpp lpc lpt lxp co1 si1 t ;

      srestrict
      /*symmetry restrictions */
      b.lpp = p.lpb ,
      b.lpc = c.lpb ,
      p.lpc = c.lpp ,
      /* homogeneity restrictions*/
      b.lpb + b.lpp + b.lpc + b.lpt = 0 ,
      p.lpb + p.lpp + p.lpc + p.lpt = 0 ,
      c.lpb + c.lpp + c.lpc + c.lpt = 0;
   run;

 

The parameter estimates in the beef equation are given in Figure 2.

 


Parameter Estimates - Beef

Variable DF Estimate StdErr tValue Probt
Intercept 1 0.397899 0.400708 0.99 0.3234
lpb 1 0.041175 0.012686 3.25 0.0016
lpp 1 -0.00407 0.008127 -0.50 0.6181
lpc 1 -0.04926 0.00541 -9.10 <.0001
lpt 1 0.012151 0.009613 1.26 0.2095
lxp 1 0.023424 0.044316 0.53 0.5984
co1 1 -0.01631 0.001631 -10.00 <.0001
si1 1 -0.00228 0.001571 -1.45 0.1497
t 1 -0.00148 0.000049 -30.45 <.0001



Figure 2: Parameter Estimates for Beef

The parameter estimates in the pork equation are given in Figure 3.


Parameter Estimates - Pork

Variable DF Estimate StdErr tValue Probt
Intercept 1 0.240957 0.28773 0.84 0.4046
lpb 1 -0.00407 0.008127 -0.50 0.6181
lpp 1 0.044733 0.008811 5.08 <.0001
lpc 1 -0.03074 0.006022 -5.10 <.0001
lpt 1 -0.00993 0.007543 -1.32 0.1915
lxp 1 0.003386 0.031819 0.11 0.9155
co1 1 0.009611 0.001187 8.10 <.0001
si1 1 0.006454 0.001137 5.68 <.0001
t 1 0.000278 0.000036 7.70 <.0001



Figure 3: Parameter Estimates for Pork

The parameter estimates in the chicken equation are given in Figure 4.


Parameter Estimates - Chicken

Variable DF Estimate StdErr tValue Probt
Intercept 1 0.579604 0.17659 3.28 0.0015
lpb 1 -0.04926 0.00541 -9.10 <.0001
lpp 1 -0.03074 0.006022 -5.10 <.0001
lpc 1 0.101387 0.007607 13.33 <.0001
lpt 1 -0.02139 0.006996 -3.06 0.0029
lxp 1 -0.05355 0.019548 -2.74 0.0074
co1 1 -0.00567 0.0007 -8.10 <.0001
si1 1 -0.00084 0.000664 -1.26 0.2114
t 1 0.000893 0.000026 33.86 <.0001



Figure 4: Parameter Estimates for Chicken

The parameter restrictions estimates are reported in Figure 5:


Parameter Restrictions Estimates

Variable DF Estimate StdErr tValue Probt
RESTRICT -1 -233.279 65.95364 -3.54 0.0003
RESTRICT -1 -130.174 75.45235 -1.73 0.0845
RESTRICT -1 -14.1833 95.49745 -0.15 0.8829
RESTRICT -1 158.8543 73.2354 2.17 0.0293
RESTRICT -1 -36.2377 88.88858 -0.41 0.6859
RESTRICT -1 -301.062 110.8651 -2.72 0.0059



Figure 5: Parameter Restrictions Estimates

For the nonlinear AIDS model, you estimate the model using the MODEL procedure. Homogeneity restrictions can easily be imposed using the RESTRICT statement. The symmetry restrictions can be imposed by using the same parameter name for the corresponding variables. The nonlinear price index needs to be specified as part of the model program. The FIT statement estimates model parameters by fitting the specified equations to the data. The ITSUR option in the FIT statement specifies the estimation method as the iterated seemingly unrelated regression method. The parameters to be estimated are specified in the PARMS statement.

 

 /* Full Nonlinear AIDS Model */
   proc model data=aids;

   /* imposing homogeneity and symmetry and adding-up restrictions */
      restrict gbb + gbp + gbc + gbt = 0 ,
               gbp + gpp + gpc + gpt = 0 ,
               gbc + gpc + gcc + gct = 0 ,
               gbt + gpt + gct + gtt = 0 ,
               ab + ap + ac + at = 1 ;


   /*non-linear price index*/
      a0 = 0; /* restrict the constant term in the nonlinear price index to be zero */
      p = a0 + ab*lpb + ap*lpp + ac*lpc + at*lpt +
      .5*(gbb*lpb*lpb + gbp*lpb*lpp + gbc*lpb*lpc + gbt*lpb*lpt +
          gbp*lpp*lpb + gpp*lpp*lpp + gpc*lpp*lpc + gpt*lpp*lpt +
          gbc*lpc*lpb + gpc*lpc*lpp + gcc*lpc*lpc + gct*lpc*lpt +
          gbt*lpt*lpb + gpt*lpt*lpp + gct*lpt*lpc + gtt*lpt*lpt );

   /*share equation*/
      w_beef = ab + gbb*lpb + gbp*lpp + gbc*lpc + gbt*lpt + bb*(lx-p)
               + abco1*co1 + absi1*si1 + ab_t*t ;
      w_pork = ap + gbp*lpb + gpp*lpp + gpc*lpc + gpt*lpt + bp*(lx-p)
               + apco1*co1 + apsi1*si1 + ap_t*t ;
      w_chick = ac + gbc*lpb + gpc*lpp + gcc*lpc + gct*lpt + bc*(lx-p)
                + acco1*co1 + acsi1*si1 + ac_t*t ;

      fit w_beef w_pork w_chick / itsur nestit outs=rest estdata=fin0 outest=fin2
          out = resid2 converge = .00001  maxit = 1000 ;
      parms ab bb gbb gbp gbc gbt abco1 absi1 ab_t
            ap bp     gpp gpc gpt apco1 apsi1 ap_t
            ac bc         gcc gct acco1 acsi1 ac_t
         at                gtt ;

   run;
   quit;

 

Note that in the nonlinear AIDS model, two additional parameters are involved, namely, gtt and at. These parameters appear in the nonlinear price index specification. The parameter estimates for the nonlinear AIDS model are given in Figure 6 .

 


The MODEL Procedure

Nonlinear ITSUR Parameter Estimates
Parameter Estimate Approx Std Err t Value Approx
Pr > |t|
Label
gbb 0.037238 0.0176 2.11 0.0373  
gbp -0.00538 0.00834 -0.65 0.5203  
gbc -0.03931 0.0232 -1.69 0.0938  
gbt 0.007449 0.0114 0.66 0.5137  
gpp 0.043685 0.0111 3.94 0.0002  
gpc -0.02431 0.0167 -1.46 0.1489  
gpt -0.014 0.0112 -1.25 0.2140  
gcc 0.071597 0.0195 3.67 0.0004  
gct -0.00798 0.0191 -0.42 0.6766  
gtt 0.014533 0.0215 0.68 0.5013  
ab 0.377488 0.3819 0.99 0.3255  
ap 0.158295 0.2667 0.59 0.5543  
ac 0.632779 0.1670 3.79 0.0003  
at -0.16856 0.2827 -0.60 0.5525  
bb 0.02569 0.0423 0.61 0.5448  
abco1 -0.01637 0.00162 -10.11 <.0001  
absi1 -0.00224 0.00157 -1.43 0.1552  
ab_t -0.00148 0.000049 -30.07 <.0001  
bp 0.01255 0.0295 0.43 0.6716  
apco1 0.00945 0.00117 8.10 <.0001  
apsi1 0.006587 0.00112 5.86 <.0001  
ap_t 0.000275 0.000036 7.69 <.0001  
bc -0.05947 0.0185 -3.22 0.0018  
acco1 -0.00554 0.000687 -8.06 <.0001  
acsi1 -0.00094 0.000653 -1.44 0.1523  
ac_t 0.000899 0.000026 34.15 <.0001  
Restrict0 -170.721 74.3756 -2.30 0.0209 gbb + gbp + gbc + gbt = 0
Restrict1 13.41517 92.9286 0.14 0.8861 gbp + gpp + gpc + gpt = 0
Restrict2 282.4448 115.5 2.44 0.0137 gbc + gpc + gcc + gct = 0
Restrict3 -1.55944 0.7147 -2.18 0.0283 gbt + gpt + gct + gtt = 0
Restrict4 21.02431 6.7622 3.11 0.0015 ab + ap + ac + at = 1



Figure 6: Parameter Estimates for the Nonlinear AIDS Model

Figure 7 illustrates the residuals obtained for the beef, pork, and chicken equations.

 

 

proc gplot data = resid2;

      plot w_beef*date w_pork*date w_chick*date / overlay cframe=ligr
                                        haxis=axis1 vaxis=axis2 vref=0;
      title 'Residual Plots';

      footnote1 c=blue '  *     beef   '
                c=red  '  .     pork  '
                c=green '  o    chicken  ';

      symbol1 c=blue i=join v=star;
      symbol2 c=red  i=join v=dot;
      symbol3 c=green i = join v = circle ;

      axis1  label=('Time') ;
      axis2  label=(angle=90 'Residuals');
   run;
   quit;

nlresid.gif

Figure 7: Beef, Pork, and Chicken Residuals

 

The estimated parameters are stored in data sets and will be used in calculating price and income elasticities in the example "Calculating Elasticities in an Almost Ideal Demand System."

Acknowledgment

 

The SAS program used in this example is based on code provided by Dr. Barry Goodwin.

 

References

 

Deaton, A., and Muellbauer, J. (1980a), "An Almost Ideal Demand System," American Economic Review, 70, 312-336.

Deaton, A., and Muellbauer, J. (1980b), Economics and Consumer Behavior, Cambridge, England: Cambridge University Press.

Piggott, N. (1997), The Benefits and Costs of Generic Advertising of Agricultural Commodities, Ph.D. dissertation, University of California, Davis.

SAS Institute Inc. (1999), SAS/ETS User's Guide, Version 8, Cary, NC: SAS Institute Inc.

USDA-ERS Electronic Data Archive, Red Meats Yearbook, housed at Cornell University's Mann Library, [http://usda.mannlib.cornell.edu/], accessed 25 September 2001.

USDA-ERS Electronic Data Archive, Poultry Yearbook, housed at Cornell University's Mann Library, [http://usda.mannlib.cornell.edu/], accessed 25 September 2001.

Version history
Last update:
‎12-01-2023 03:21 PM
Updated by:
Contributors

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Article Labels
Article Tags
Programming Tips
Want more? Visit our blog for more articles like these.