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. 

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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
  • 943 views
  • 0 likes
  • 2 in conversation