BookmarkSubscribeRSS Feed
user1
Calcite | Level 5

Hi,

 

Can anyone help the calculation of Y below using SAS code?

 

Y=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-N

 

Thanks a lot!

11 REPLIES 11
Astounding
PROC Star

Within a DATA step, and assuming you have variables A, B, and N:

 

y=0;

do k=1 to n;

   y + a*b**(-k);

end;

 

If B is actually an expression rather than a variable, put it in parentheses:

 

y + a*(b)**(-k);

PGStats
Opal | Level 21

Or this, which should be faster:

 

    u = 0;
    v = 1/b;
    do k = 1 to n;
        u = (1 + u) * v;
        end;
    y = a*u;
PG
user1
Calcite | Level 5

Thanks for you both for providing the answer, much appreciated! PG Stats, since the power is negative, should the sas code be revised?

 

as  u = 0;
    v = 1/b;
    do k = -1 to -n; u = (1 + u) * v; end;
    y = a*u;

 

Thanks and regards.

PGStats
Opal | Level 21

No. k is only a counter, not the exponent. The exponent comes from the number of multiplications by v (= 1/b, = b**-1), i.e. the negative exponent results from multiplying by a negative power of b.

PG
user1
Calcite | Level 5

Thanks again, PG Stats!!

user1
Calcite | Level 5

Thanks! How about if N has one decimal place, e.g. 14.1?

Astounding
PROC Star

What is the first term in the equation if N has one decimal place?

user1
Calcite | Level 5

In the equation, everything is the same, only if N is not an integer, the example is below and I need to calculate for each record (Y1........YN)

 

Y1=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-10.2

Y2=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-20.3

…….

YN=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-N.5

PGStats
Opal | Level 21

Not clear. What is the term before the last?

PG
user1
Calcite | Level 5

Thanks very much, PG!

the term before the last is: A*(B)-N+1

For example,

Y1=A*(B)-1+ A*(B)-2 + A*(B)-3 + A*(B)-4 +……+ A*(B)-9 +A*(B)-10.2

 

When I run the above sas code, the decimal 0.2 from the last term is missing.

user1
Calcite | Level 5

sorry, it is not -N+1, it should be integer -N+1, for example if N is 10.2, then the term before the last one should be A*(B)-9 , not 9.2.

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

What is Bayesian Analysis?

Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.

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
  • 11 replies
  • 1732 views
  • 2 likes
  • 3 in conversation