I'd like to know how to scale a variable between 0&1 in sas. Perhaps it's possible to do with proc stdize somehow?
If you want a linear transformation that maps your data to [0,1], use
proc stdize data=MyData out=StdOut method=RANGE;
var vrp;
run;
This maps min(vrp) to 0 and max(vrp) to 1. The transformation is
x --> (x - min(x))/range(x)
It will be helpful to provide a bit more detail on what you hope to accomplish.
I simply would like to make the variable vrp scaled between 0&1, the dataset is attached above if it helps..
What are the rules for scaling between 0 and 1. How will both 116 and -118 map to the scale from 0 to 1?
You could just use the percentile, but depending on what you're doing that could make absolutely no sense.
I need the variable vrp for my time-varying regression:
proc reg data=spainbj outest=brittenjonesspain;
model Identity= MKT MKT*lag(vrp) SMB SMB*lag(vrp) HML HML*lag(vrp) MOM MOM*lag(vrp)/noint;
run;
this is a britten-jones regression, where betas are portfolio weights. I use the variable vrp to make the portfolio weights time-varying according to lagged value of vrp. Now I need to scale the variable vrp, in order to get the portfolio weights/betas to change in a rational way. Hope this helps..
you want to standardize this variable to avoid the influence of scale?
proc stdize will help you. Sure there is also a function looks like stdize() to do it.
Ksharp
Yes! I tried the proc stdize but couldn't get it working. Would someone be able to give me an example on how to proceed with the code here? Thanks in advance.
If you want a linear transformation that maps your data to [0,1], use
proc stdize data=MyData out=StdOut method=RANGE;
var vrp;
run;
This maps min(vrp) to 0 and max(vrp) to 1. The transformation is
x --> (x - min(x))/range(x)
wow, that was easy! Thanks rick!
If I'd like to make the linear transformation between -1 and 1, how could that be done? Checked the methods from Rick's link, but none of them seem to fit this idea straight...
Run PROC STDIZE with METHOD=RANGE. That creates a variable on [0,1].
Then run a data step that sends x --> 2*x-1. The new range is [-1,1]. For example:
data StdOut;
set StdOut;
vrp = 2*vrp - 1;
run;
easy again, thanks a million rick!
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!
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.