BookmarkSubscribeRSS Feed
Polina_UH
Obsidian | Level 7

Dear experts,

 

I am trying to apply SAS code

 

proc mcmc data=crp nbi=50000 nmc=100000 outpost=OutData
init = random monitor=(lw1 lw2 lw3 beta0 delta w);
parms lw1 lw2 lw3 ;
array w[3];
w[1] = exp(lw1)/(exp(lw1)+ exp(lw2)+ exp(lw3));
w[2] = exp(lw2)/(exp(lw1)+ exp(lw2)+ exp(lw3));
w[3] = exp(lw3)/(exp(lw1)+ exp(lw2)+ exp(lw3));
parms beta0 delta ;
prior beta0 ~ cauchy(0,2.5);
prior delta ~ cauchy(0,2.5);
prior lw1 ~ beta(1,1);
prior lw2 ~ beta(1,1);
prior lw3 ~ beta(1,1);
p = beta0+ delta*(w[1]*cesd12+w[2]*cesd22+w[3]*cesd32);
model any_disorder ~ binomial(1,p);
run;

recommended is this paper https://pubmed.ncbi.nlm.nih.gov/29912384/  

 to examine how a time-varying exposure cesd affects health outcome any_disorder later in life. The code seems to be working when my exposure is binary, but when I am trying to use continuous exposure, I get this error ERROR: The BINOMIAL distribution of any_disorder (Obs = 1553) has an invalid probability -1.12646636. Use an appropriate parameter value instead. Could you you help me to modify the code such that it would work with continuous exposure variables?

 

Many thanks in advance!

 

ERROR: The BINOMIAL distribution of any_disorder (Obs = 1553) has an invalid probability
-1.12646636. Use an appropriate parameter value instead.

 

2 REPLIES 2
Polina_UH
Obsidian | Level 7
I am sorry, I forgot to mention that I have modified the original part of the code
p = logistic(beta0+ delta*(w[1]*cesd12_binary+w[2]*cesd22_binary+w[3]*cesd32_binary));

to p = beta0+ delta*(w[1]*cesd12+w[2]*cesd22+w[3]*cesd32); to accommodate continuous nature of the variables
ballardw
Super User

Your problem is not continuous values but the specific value. Binomial parameter for P in general has a range of 0 to 1. A negative value makes no sense at all.

You need to provide a value between 0 and 1 for P. That may require a pass through a data step to set an appropriate value for P. What that should be I have no clue.

 

Perhaps you need to look at what creates P very closely and see why it is 1) negative and 2) outside of the intended range of use values (0 to 1). Perhaps some data outlier?

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!

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
  • 356 views
  • 1 like
  • 2 in conversation