BookmarkSubscribeRSS Feed
jan_t_lagen
Calcite | Level 5

I'm trying to do a monte carlo simulation where I need to sum over the total data set as a last step and can't seem to make it work, let alone do it in a nice way. 

 

I want to simulate the variable A that is made from a number of parameters and the standard normal distribution. From this I want to sum another variable w if A fulfills a specific requirement.

 

My problem is firstly that i can't find a way to sum these w in the same data step as the simulation of A. Since my data set is about 10 000 rows and i want to do 500 000 simulations I can't have the table growing to 500 000 * 10 000 but rather i want the final table to have the sums of each iteration, in other words it should be 500 000  rows 

 

Furthermore i'm interested in if there is a more elegant way of approaching this problem in terms of the functions used etc.

 

I'm using SAS 9.3 if its relevant.

 

Thanks!

 

this is what i have so far, but it is not working...

 

data multi;
set multi_base;

do iter = 1 to 2;

L = 0;


A = a1*rand("Normal") +
a2*rand("Normal") +
a3*rand("Normal") +
a4*rand("Normal") +
a5*rand("Normal") 

if A < b then L = L + w;

output;
end;
keep iter L;
run;

3 REPLIES 3
PeterClemmensen
Tourmaline | Level 20

2 questions: 

 

Do you have a SAS/IML license?

 

What does the data set multi_base look like?

jan_t_lagen
Calcite | Level 5
I do not have a SAS/IML licence and multi_base just contains a1-a5, b and w
that are unique for each row
Rick_SAS
SAS Super FREQ

I assume that if A >= b then L remains unchanged and that value of w is discarded?

 

 

Compute the conditional cumulative sum as you go along, but put the OUTPUT statement OUTSIDE the END of the iteration loop. 

 

 

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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.

SAS Training: Just a Click Away

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

Browse our catalog!

Discussion stats
  • 3 replies
  • 1511 views
  • 0 likes
  • 3 in conversation