```Date: Wed, 7 Mar 2012 15:06:56 +0000 Reply-To: "High, Robin R" Sender: "SAS(r) Discussion" From: "High, Robin R" Subject: Re: Example of generating Linear Interpolation Comments: To: SAS_learner In-Reply-To: Content-Type: text/plain; charset="us-ascii" Some code I wrote several years ago to do not only linear interpolation, but depending on the number of input points, also does cubic, quadratic, etc. Try it with these 4 data input values for x and y and observe the output: 1.1 10.6 1.5 2.1 2.1 25.2 3.0 20.3 Examples with more complex formulas may also be found in a numerical analysis book. The down side of PROC EXPAND for interpolation (which I also endorse) is it expects inputs as SAS date variables. Most input data can be tweaked to represent "dates" but I agree an interpolation procedure in BASE that works with any data much like EXPAND does would be most welcome. DATA tst; input x y; cards; 1.1 10.6 3.0 20.3 ; PROC plot data=tst; PLOT y*x='+' / haxis = 1 to 3 by .5; options ps=40; RUN; quit; * get the number of input values; data _null_ ; SET tst nobs=nn; CALL SYMPUTX("nn",nn); stop; run; %put &nn.; PROC TRANSPOSE DATA=tst out=x(drop=_name_) prefix=_x; var x; proc print; run; PROC TRANSPOSE DATA=tst out=y(drop=_name_) prefix=_y; var y; proc print; run; DATA one; SET x ; SET y; KEEP x y_est; ARRAY xx(&nn.) _x1 - _x&nn. ; ARRAY yy(&nn.) _y1 - _y&nn. ; ARRAY nm(&nn.) xn1-xn&nn.; ARRAY dm(&nn.) xd1-xd&nn.; * these are the x values to interpolate y; DO x=1 to 3 by .1; DO i = 1 to &nn.; nm{i}=1; dm{i}=1; DO j = 1 to &nn.; IF (j NE i) THEN DO; nm{i} = nm{i}*(x - xx{j}); dm{i} = dm{i}*(xx{i} - xx{j}); END; END; END; y_est=0; Do ii = 1 TO &nn.; y_est = y_est + (nm{ii} / dm{ii}) * yy {ii}; END; OUTPUT; END ; RUN; PROC PRINT data=one; VAR x y_est; RUN; PROC plot data=one; PLOT y_est * x='+' / haxis = 1 to 3 by .2; options ps=40; RUN; quit; Robin High UNMC -----Original Message----- From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of SAS_learner Sent: Tuesday, March 06, 2012 10:15 PM To: SAS-L@LISTSERV.UGA.EDU Subject: Example of generating Linear Interpolation Hello all , I need some help in SAS programming for one of my requirements, while deriving one of the Variables the specs read as If MRIQS =TOTAL E SCORE, then use linear interpolation or extrapolation based on days from baseline and utilizing the baseline score and the non-missing post-baseline score I do not have example of data to show too sorry. I do not have prior experience of working with Linear interpolation or extrapolation using SAS. When did google search for examples it pointed in using Proc Mixed and other procedures . Not sure where to look or how to start , I am reaching out to SAS-L for the some help in right direction . I greatly appreciate to answer any questions from my side to complete my task and eagerly looking forward for your answers. Thanks SL ```

Back to: Top of message | Previous page | Main SAS-L page