Hello everyone, I am stuck in dealing with the macro to get the additional estimates using proc nlmixed. Let's me generalize my model. My dependent variable is Y and independent variable is X1 and X2. I also have a categorical variable Z as another independent variable. Z receive value 0, 1, 2, 3. My model looks like this: %macro nlmixed(datain); proc nlmixed data=&datain qpoints=15 ecov; parms a0=-3 b1=0 b2=0 b3=0 c1=0 c2=0; Y=a0 + b1*Z + b2*X1+ b3*X1*Z +c1*X2 + c2*X2*Z; /*I want to additionally estimate beta and omega based on the coefficients b2, b3, c1 and c2*/ /*for each value of Z, I have corresponding estimates for beta and omega*/ estimate 'beta0' (b2*b2 + b3*b3*0)/(1 + b2*b2 + b3*b3*0 + c1*c1+c2*c2*0); estimate 'omega0' (c1*c1 + c2*c2*0)/(1 + b2*b2 + b3*b3*0 + c1*c1+c2*c2*0); estimate 'beta1' (b2*b2 + b3*b3*1)/(1 + b2*b2 + b3*b3*1 + c1*c1+c2*c2*1); estimate 'omega1' (c1*c1 + c2*c2*1)/(1 + b2*b2 + b3*b3*1 + c1*c1+c2*c2*1); estimate 'beta2' (b2*b2 + b3*b3*2)/(1 + b2*b2 + b3*b3*2 + c1*c1+c2*c2*2); estimate 'omega2' (c1*c1 + c2*c2*2)/(1 + b2*b2 + b3*b3*2 + c1*c1+c2*c2*2); estimate 'beta3' (b2*b2 + b3*b3*3)/(1 + b2*b2 + b3*b3*3 + c1*c1+c2*c2*3); estimate 'omega3' (c1*c1 + c2*c2*3)/(1 + b2*b2 + b3*b3*3 + c1*c1+c2*c2*3); run; %mend; The macro works, but the problem is I have the other variable Z where it has up to 10 values. It means that I have to write 20 estimate statements. So, I was trying to plug a do-loop in the macro, but it's not working 😞 The do-loop I have tried is: %do i = 0 to 3; estimate 'beta&i' %eval((b2*b2 + b3*b3*&i)/(1 + b2*b2 + b3*b3*&i + c1*c1+c2*c2*&i)); estimate 'omega&i' %eval((c1*c1 + c2*c2*&i)/(1 + b2*b2 + b3*b3*&i + c1*c1+c2*c2*&i)); %end; Could you please help me to fix the do-loop so that I can save time in fixing code and running it with different variable Z? Thank you so much in advance. Regards, Windy.
... View more