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!
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.