BookmarkSubscribeRSS Feed
Yohannis
Calcite | Level 5

I want to estimate a system of equations using FIML. There are some variables that need to be summed by group. However, these variables do not exist within the data set and need to be estimated along with other parameters from the model. I would be grateful if you could let me know how to do this.

4 REPLIES 4
kessler
SAS Employee

Could you clarify the form of your model regarding the variables which are summed across by groups?  In the case where you'd like to compute an endogenous quantity in the model then estimate its total within each by group you could first assign to a temporary variable, 'ytmp,' then use that variable in an estimated equation. Here's a code snippet which may be a good starting point.  In this example alpha and sum are parameters to be estimated, x is an exogenous variable,  'eq.tot' is the equation to be estimated, and you'd have to pre-caclulate nby, (the number of observations in each by group) in a separate data step.

...

ytmp = alpha*x;

eq.tot = ytmp - sum/nby;

fit tot;

...

Yohannis
Calcite | Level 5

Many thanks,


Here is the model that I'm working with.


proc model data = SS  hessian=cross; 

prod = a0 + a1*x1 +  a2*x2 + a3*x1**2 + a4*x2**2;

risk=(x1**b1)*(x2**b2);

g_price = 5;

mu_pi=(g_price*prod – pricex1*x1 – pricex2*x2)*x3;

tmu_pi = sum(mu_pi); the question is here-how to sum mu_pi by hhld id?

sigma_pi =g_price*risk*x3;

tsigma_pi = sum(sigma_pi); how to sum sigma_pi by hhld id?

tsigma2_pi = tsigma_pi**2;

AR = d0 + d1*tmu_pi + 0.5*d2*tmu_pi**2;

DR = -d1 - d2*tmu_pi + AR**2;

eq.techn = y/ risk - prod_fu /risk;

eq.fert=a1 + a3*x1*2 – pricex1/g_price +((-AR*tsigma_pi + 0.5*DR*tsigma2_pi*(d3))/(1 + 0.5*DR*tsigma2_pi))*risk*b1/x1;

eq.herb = a2 + a4*x2*2 – pricex2/g_price + ((-AR*tsigma_pi + 0.5*DR*tsigma2_pi*(d3))/(1 + 0.5*DR*tsigma2_pi))*risk*b2/x2;

endogenous y x1 x2;

fit techn fert herb / fiml;

run;

In the above model, parameters to be estimated are: a0, a1, a2, a3, a4, b1, b2, d0, d1, d2 and d3 and variables that exist within my data are: x1, x2, x3 and y. In my actual model, there are some additional exogenous variables.

kessler
SAS Employee

Your model appears to be sufficiently complex that the example I provided earlier for treating sums of endogenous variables will not work.  Specifically, the fact the summed terms enter into the estimated equations non-linearly precludes this approach for your model.

PROC MODEL estimates parameters for a model by adding the contribution of each observation in a data set to a log likelihood (or other objective) function. In your model the objective function requires the observations in each hhld group to contribute to the objective function in a non-additive way.  For this kind of model and data PROC OPTMODEL is usually a better choice since that procedure allows you to read in all the data at once and then compute your objective function afterwards.  Unfortunately, PROC OPTMODEL does not directly support FIML or any of the other estmation methods available in PROC MODEL.

sas-innovate-2024.png

Don't miss out on SAS Innovate - Register now for the FREE Livestream!

Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.

 

Register now!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 4 replies
  • 1095 views
  • 0 likes
  • 2 in conversation