Hi! I am trying to run a marginalised two part model with generalised gamma distribution for semicontinuous data to get the mean costs of all in my study population, rather than a mean conditioned on having expenditure. However after running the syntax below, I get the following warning in the log: NOTE: Convergence criterion (GCONV=1E-8) satisfied. NOTE: At least one element of the gradient is greater than 1e-3. NOTE: Moore-Penrose inverse is used in covariance matrix. WARNING: The final Hessian matrix is full rank but has at least one negative eigenvalue. Second-order optimality condition violated I have rescaled the cost outcomes from swedish krona to euros and this helped with some cost outcomes but not all. Any other suggestions/ solutions? %macro mtpmacroms (a0 ,a1, b0, b1, kappa, x1, y); proc nlmixed data=studypop1 MAXIT=1000 ; /* provide starting values for parameters */ parms a0=&a0. a1=&a1. b0=&b0. b1=&b1. kappa=&kappa. s0=0 s1=0; /* Specify mean model for binary part */ linbin=a0+(&x1.*a1); binprob=exp(linbin)/(1+exp(linbin));/* prob y>0 */ eta=abs(kappa)**(-2); /* Define heterogeneous variance as a function of MOVE status */ logsigma = S0+S1*&x1.; sigma=exp(logsigma); /* Add covariates to mean model, changing only first line */ mu=b0+(b1*&x1.) - log(binprob) - (sigma*log((kappa)**2))/kappa -log(GAMMA(1/((kappa)**2)+sigma/kappa))+log(GAMMA(1/((kappa)**2))); /* set up likelihood */ if &y. =0 then loglik=log(1-binprob); else if &y.>0 then do; u=SIGN(kappa)*(log(&y.)-mu)/sigma; loglik=log(binprob)+eta*log(eta)-log(sigma)-log(&y.) -log(GAMMA(eta))-.5*log(eta)+u*sqrt(eta)-eta*exp(abs(kappa)*u); end; model &y.~general(loglik); /* Function to predict mean total cost for everyone in dataset */ pred_&y.=exp(b0+b1*&x1.); predict pred_&y. out=mtpgg_&y.; /* Estimate functions of parameters */ estimate "multiplicative effect of &x1. on &y." exp(b1); estimate "total &y. for PwMS" exp(b0+b1); estimate "total &y. for references" exp(b0); run; /* get predicted mean estimates*/ proc sort data=mtpgg_&y.; by MS; run; proc means data=mtpgg_&y.; var Pred; by MS; run; %mend mtpmacroms; %mtpmacroms (a0=-2.6864 ,a1=1.1718 , b0=9.1899, b1=-1.2885, kappa= 0.6116, x1=MS, y=hc_costs_eur); starting values from a logistic model for a and glm (gamma log link) for b
... View more