DATA Step, Macro, Functions and more

YRDIF oddity

Reply
N/A
Posts: 0

YRDIF oddity

YRDIF seems to be returning inexact results for me.

If I run the following in a data step:
test1 = yrdif('07JAN2000'd,'07JAN2001'd,"ACT/ACT");
test2 = yrdif('06JAN2000'd,'07JAN2001'd,"ACT/ACT");
test3 = yrdif('08JAN2000'd,'07JAN2001'd,"ACT/ACT");
test4 = 365/365;
and then do a Proc Freq on the results, I get:
Test1=1.0000449135
Test2=1.002777154
Test3=.9973126731
Test4=1

Test2 and Test3 are very close to what I'd expect (within floating point constraints) but I'd expect Test1 to be exactly 1. So what am I doing wrong?

Jeff
Valued Guide
Posts: 2,175

Re: YRDIF oddity

N/A
Posts: 0

Re: YRDIF oddity

Well, that explains it! Thanks!

Jeff
Valued Guide
Posts: 632

Re: YRDIF oddity

When the period includes a leap day, YRDIF adds the leap day and then averages it across four years (third arg is 'actual' or 'act/act'). If you are estimating a span of years then the value is off by a fraction of a day. This seems to be incrementally better than the (stop-start)/365.25 formula. Incrementally because either way the differences tend to be in the third decimal place.
Ask a Question
Discussion stats
  • 3 replies
  • 144 views
  • 0 likes
  • 3 in conversation