BookmarkSubscribeRSS Feed
xg405012
Calcite | Level 5

Hi,

 

When I run the nlmixed model, I keep getting warning like this

 

 

NOTE: By default, formatted unique SUBJECT= variable values are used. In releases prior to

      SAS/STAT 13.1, by default, SUBJECT= variable values were not examined for uniqueness. To

      revert to the previous behavior, specify the NOSORTSUB option in the PROC NLMIXED statement.

NOTE: Convergence criterion (GCONV=1E-8) satisfied.

NOTE: At least one element of the gradient is greater than 1e-3.

NOTE: Execution error while processing ESTIMATE statement.

NOTE: The SAS System stopped processing this step because of errors.

WARNING: The data set WORK.DATA1 may be incomplete.  When this step was stopped there were 382068

         observations and 33 variables.

WARNING: Data set WORK.DATA1 was not replaced because this step was stopped.

WARNING: The data set WORK.DATA2 may be incomplete.  When this step was stopped there were 382068

         observations and 33 variables.

WARNING: Data set WORK.DATA2 was not replaced because this step was stopped.

 

 

Here is the code:

 

%macro focalvar (focalvar);

 

proc nlmixed data=base qpoints=5;

/* define initial values and bounds */

parms alpha0=-1 alpha1=1 alpha2=1 alpha3=1 alpha4=1 alpha5=1 alpha6=1 alpha7=1 beta0=1 beta1=1 beta2=1 beta3=1 beta4=1 beta5=1 beta6=1 beta7=1 delta0=1 delta1=2 delta2=2 delta3=2 delta4=2 delta5=2  delta6=2 delta7=2 var1=1 var2=1 cov12=.5 k=2;

bounds var1 var2 >=0;

/* Part I log-likelihood */

teta=alpha0 + a + alpha1*during + alpha2*exposed2 + alpha3*during*exposed2+alpha4*&focalvar+alpha5*&focalvar*during+alpha6*&focalvar*exposed2+alpha7*&focalvar*during*exposed2;

expteta=exp(teta);

p=expteta/(1+expteta);

if new_rate=0 then loglik=log(1-p);

/* Part II log-likelihood */

if new_rate=1 then do;

mu=beta0 + b + beta1*during + beta2*exposed2 + beta3*during*exposed2+beta4*&focalvar+beta5*&focalvar*during+beta6*&focalvar*exposed2+beta7*&focalvar*during*exposed2; /* Mean of gen. gamma dist. */

sigma=exp((delta0 + delta1*during + delta2*exposed2 + delta3*during*exposed2+delta4*&focalvar+delta5*&focalvar*during+delta6*&focalvar*exposed2+delta7*&focalvar*during*exposed2)/2); /* Scale of gen. gamma dist. */

eta=abs(k) ** (-2);

u=sign(k)*(log(rate)-mu)/sigma;

value1=eta *log (eta) - log(sigma) -.5 * log(eta) - lgamma(eta);

loglik=log(p) + value1 + u *sqrt(eta) - eta * exp(abs(k)* u);

end;

/* fit the model above */

model rate ~ general(loglik);

random a b ~ normal([0, 0], [var1, cov12, var2]) subject=household_key;

/* generate empirical Bayes estimates for random effects

and store them in SAS datasets data1 and data2; */

predict a out=data1;

predict b out=data2;

 

estimate '1' alpha1+log(1+exp(alpha0))-log(1+exp(alpha0+alpha1)) +beta1 + log(k**2)/k*( exp((delta0+delta1)/2)-exp(delta0/2) ) +

log( gamma(1/k**2+exp((delta0+delta1)/2)/k) / gamma(1/k**2+exp(delta0/2)/k) ); 

 

estimate '2' alpha2+log(1+exp(alpha0))-log(1+exp(alpha0+alpha2)) +beta2 + log(k**2)/k*( exp((delta0+delta2)/2)-exp(delta0/2) ) +

log( gamma(1/k**2+exp((delta0+delta2)/2)/k) / gamma(1/k**2+exp(delta0/2)/k) ); 

 

estimate '3' alpha3+log(1+exp(alpha0+alpha1+alpha2))-log(1+exp(alpha0+alpha1+alpha2+alpha3)) +beta3 + log(k**2)/k*( exp((delta0+delta1+delta2+delta3)/2)-exp((delta0+delta1+delta2)/2) ) +

log( gamma(1/k**2+exp((delta0+delta1+delta2+delta3)/2)/k) / gamma(1/k**2+exp((delta0+delta1+delta2)/2)/k) ); 

 

estimate '4' alpha4+log(1+exp(alpha0))-log(1+exp(alpha0+alpha4)) +beta4 + log(k**2)/k*( exp((delta0+delta4)/2)-exp(delta0/2) ) +

log( gamma(1/k**2+exp((delta0+delta4)/2)/k) / gamma(1/k**2+exp(delta0/2)/k) ); 

 

estimate '5' alpha5+log(1+exp(alpha0+alpha1+alpha4))-log(1+exp(alpha0+alpha1+alpha4+alpha5)) +beta5 + log(k**2)/k*( exp((delta0+delta1+delta4+delta5)/2)-exp((delta0+delta1+delta4)/2) ) +

log( gamma(1/k**2+exp((delta0+delta1+delta4+delta5)/2)/k) / gamma(1/k**2+exp((delta0+delta1+delta4)/2)/k) ); 

 

estimate '6' alpha6+log(1+exp(alpha0+alpha2+alpha4))-log(1+exp(alpha0+alpha2+alpha4+alpha6)) +beta6 + log(k**2)/k*( exp((delta0+delta2+delta4+delta6)/2)-exp((delta0+delta2+delta4)/2) ) +

log( gamma(1/k**2+exp((delta0+delta2+delta4+delta6)/2)/k) / gamma(1/k**2+exp((delta0+delta2+delta4)/2)/k) ); 

 

estimate '7' alpha7+log(1+exp(alpha0+alpha1+alpha2+alpha3+alpha4+alpha5+alpha6))-log(1+exp(alpha0+alpha1+alpha2+alpha3+alpha4+alpha5+alpha6+alpha7)) +beta7 + log(k**2)/k*( exp((delta0+delta1+delta2+delta3+delta4+delta5+delta6+delta7)/2)-exp((delta0+delta1+delta2+delta3+delta4+delta5+delta6)/2) ) +

log( gamma(1/k**2+exp((delta0+delta1+delta2+delta4+delta7)/2)/k) / gamma(1/k**2+exp((delta0+delta1+delta2+delta3+delta4+delta5+delta6)/2)/k) ); 

 

%mend focalvar;

%focalvar (cate1);

%focalvar (cate2);

%focalvar (cate3);

%focalvar (cate4);

%focalvar (cate5);

%focalvar (cate6);

 

%focalvar (cate7);

%focalvar (cate8);

run;

 

 

Except for first two macros, others run successfully. It is so weird....

 

 

Thanks!!!!!

2 REPLIES 2
mkeintz
PROC Star

Let's see the program from which this originated.  Do you have OPTIONS MPRINT enabled so that you can show us the offending sas code reprinted on the log?

--------------------------
The hash OUTPUT method will overwrite a SAS data set, but not append. That can be costly. Consider voting for Add a HASH object method which would append a hash object to an existing SAS data set

Would enabling PROC SORT to simultaneously output multiple datasets be useful? Then vote for
Allow PROC SORT to output multiple datasets

--------------------------
xg405012
Calcite | Level 5

Thanks! Here is the code. It may seems a little bit completed:

 

%macro focalvar (focalvar);

 

proc nlmixed data=base qpoints=5;

/* define initial values and bounds */

parms alpha0=-1 alpha1=1 alpha2=1 alpha3=1 alpha4=1 alpha5=1 alpha6=1 alpha7=1 beta0=1 beta1=1 beta2=1 beta3=1 beta4=1 beta5=1 beta6=1 beta7=1 delta0=1 delta1=2 delta2=2 delta3=2 delta4=2 delta5=2  delta6=2 delta7=2 var1=1 var2=1 cov12=.5 k=2;

bounds var1 var2 >=0;

/* Part I log-likelihood */

teta=alpha0 + a + alpha1*during + alpha2*exposed2 + alpha3*during*exposed2+alpha4*&focalvar+alpha5*&focalvar*during+alpha6*&focalvar*exposed2+alpha7*&focalvar*during*exposed2;

expteta=exp(teta);

p=expteta/(1+expteta);

if new_rate=0 then loglik=log(1-p);

/* Part II log-likelihood */

if new_rate=1 then do;

mu=beta0 + b + beta1*during + beta2*exposed2 + beta3*during*exposed2+beta4*&focalvar+beta5*&focalvar*during+beta6*&focalvar*exposed2+beta7*&focalvar*during*exposed2; /* Mean of gen. gamma dist. */

sigma=exp((delta0 + delta1*during + delta2*exposed2 + delta3*during*exposed2+delta4*&focalvar+delta5*&focalvar*during+delta6*&focalvar*exposed2+delta7*&focalvar*during*exposed2)/2); /* Scale of gen. gamma dist. */

eta=abs(k) ** (-2);

u=sign(k)*(log(rate)-mu)/sigma;

value1=eta *log (eta) - log(sigma) -.5 * log(eta) - lgamma(eta);

loglik=log(p) + value1 + u *sqrt(eta) - eta * exp(abs(k)* u);

end;

/* fit the model above */

model rate ~ general(loglik);

random a b ~ normal([0, 0], [var1, cov12, var2]) subject=household_key;

/* generate empirical Bayes estimates for random effects

and store them in SAS datasets data1 and data2; */

predict a out=data1;

predict b out=data2;

 

 

estimate '1' alpha1+log(1+exp(alpha0))-log(1+exp(alpha0+alpha1)) +beta1 + log(k**2)/k*( exp((delta0+delta1)/2)-exp(delta0/2) ) +

log( gamma(1/k**2+exp((delta0+delta1)/2)/k) / gamma(1/k**2+exp(delta0/2)/k) ); 

 

estimate '2' alpha2+log(1+exp(alpha0))-log(1+exp(alpha0+alpha2)) +beta2 + log(k**2)/k*( exp((delta0+delta2)/2)-exp(delta0/2) ) +

log( gamma(1/k**2+exp((delta0+delta2)/2)/k) / gamma(1/k**2+exp(delta0/2)/k) ); 

 

estimate '3' alpha3+log(1+exp(alpha0+alpha1+alpha2))-log(1+exp(alpha0+alpha1+alpha2+alpha3)) +beta3 + log(k**2)/k*( exp((delta0+delta1+delta2+delta3)/2)-exp((delta0+delta1+delta2)/2) ) +

log( gamma(1/k**2+exp((delta0+delta1+delta2+delta3)/2)/k) / gamma(1/k**2+exp((delta0+delta1+delta2)/2)/k) ); 

 

estimate '4' alpha4+log(1+exp(alpha0))-log(1+exp(alpha0+alpha4)) +beta4 + log(k**2)/k*( exp((delta0+delta4)/2)-exp(delta0/2) ) +

log( gamma(1/k**2+exp((delta0+delta4)/2)/k) / gamma(1/k**2+exp(delta0/2)/k) ); 

 

estimate '5' alpha5+log(1+exp(alpha0+alpha1+alpha4))-log(1+exp(alpha0+alpha1+alpha4+alpha5)) +beta5 + log(k**2)/k*( exp((delta0+delta1+delta4+delta5)/2)-exp((delta0+delta1+delta4)/2) ) +

log( gamma(1/k**2+exp((delta0+delta1+delta4+delta5)/2)/k) / gamma(1/k**2+exp((delta0+delta1+delta4)/2)/k) );

 

estimate '6' alpha6+log(1+exp(alpha0+alpha2+alpha4))-log(1+exp(alpha0+alpha2+alpha4+alpha6)) +beta6 + log(k**2)/k*( exp((delta0+delta2+delta4+delta6)/2)-exp((delta0+delta2+delta4)/2) ) +

log( gamma(1/k**2+exp((delta0+delta2+delta4+delta6)/2)/k) / gamma(1/k**2+exp((delta0+delta2+delta4)/2)/k) ); 

 

estimate '7' alpha7+log(1+exp(alpha0+alpha1+alpha2+alpha3+alpha4+alpha5+alpha6))-log(1+exp(alpha0+alpha1+alpha2+alpha3+alpha4+alpha5+alpha6+alpha7)) +beta7 + log(k**2)/k*( exp((delta0+delta1+delta2+delta3+delta4+delta5+delta6+delta7)/2)-exp((delta0+delta1+delta2+delta3+delta4+delta5+delta6)/2) ) +

log( gamma(1/k**2+exp((delta0+delta1+delta2+delta4+delta7)/2)/k) / gamma(1/k**2+exp((delta0+delta1+delta2+delta3+delta4+delta5+delta6)/2)/k) ); 

 

%mend focalvar;

%focalvar (cate1);

%focalvar (cate2);

%focalvar (cate3);

%focalvar (cate4);

%focalvar (cate5);

%focalvar (cate6);

 

%focalvar (cate7);

%focalvar (cate8);

run;

 

 

 

 

The thing is, except for the first two macros, we got results of others. 

 

Thanks!

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

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.

Discussion stats
  • 2 replies
  • 439 views
  • 0 likes
  • 2 in conversation