BookmarkSubscribeRSS Feed
csfcgua1
Fluorite | Level 6

Hello,

 

It seems dirichlet distributions are not allowed for the random statement in Proc MCMC, so I used gamma distributions instead.

Proc MCMC Data=mydata;

   array delta[3] delta1 delta2 delta3;
   array p[3] p1 p2 p3;

   model  .........

   random delta1 ~ gamma(0.1, iscale=0.1) subject = ID ;
   random delta2 ~ gamma(0.1, iscale=0.1) subject = ID ;
   random delta3 ~ gamma(0.1, iscale=0.1) subject = ID ;

   p1 = delta1/sum(delta1, delta2, delta3); 
   p2 = delta2/sum(delta1, delta2, delta3);
   p3 = 1 - p1 - p2;

Run;

I expected that every ID should have its own post-distribution/summary of p, but SAS just generated a summary of p for the whole group.

 

I could compute the p from the results of delta for each ID afterward. But is it possible to obtain p directly from Proc MCMC?

 

Thanks.

2 REPLIES 2
ballardw
Super User

Did you try BY group processing?

BY ID;

 

would be my first approach if I needed output for each level of ID.

csfcgua1
Fluorite | Level 6

Thanks.

Yes. I thought about using BY at first, but I immediately realized that ALL of the  parameters would be estimated by ID, which is not necessary. 

sas-innovate-wordmark-gradient-background 3.pngSAS Innovate

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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