Please forgive the long-winded explanation, I am a new SAS user.
I am using RRR to create dietary patterns at a baseline time point and using this pattern to look at diet over a 10 year period which requires repeated scores.
Using the xweight ods output from PROC PLS RRR I am able to use PROC SCORE to produce a score based on individuals food intake. However, I have hit a problem. To check my methodology, I have applied the PROC SCORE to the same data used in the PROC PLS to create a RRR score. The hypothesis was that the applied and natural scores would be the same, however, they are not. They are systematically different by 11.18%. This same ratio appears if i use the same method in a completely different data set with different x groups .
Does anyone have any ideas why this very consistent error keeps cropping up? Does anyone have information on the way in which PROC PLS method = RRR applies its xweights to the data to create the score?
Thanks for any help, code below.
Our code:
*KEEP CENTRED AND SCALED PREDICTOR (FOOD GROUP) VARIABLES & NATURAL DP
SCORE PRODUCED BY EXPL RRR
& REMOVE RAW DATA;
data scaled;
set pattern10;
keep cid_477a qlet $foods2
pred10score1 ;
run;
************************************************************************
CONFIRMATORY RRR USING CENTRED AND SCALED DATA;
*MAKE XWEIGHTS (SCORING FILE) SUITABLE FOR PROC SCORE;
data scores;
set rrr10xweights;
if Numberoffactors > 1 then delete;*only interested in 1st pattern;
drop Numberoffactors;
_TYPE_="SCORE";
_NAME_="Factor1";
/* rename scoring variables to match scaled predictor variable names*/
rename $foods = $foods2;
run;
*RE-SCORE SCALED AND CENTRED PREDICTOR VARIABLES using scoring
coefficients to test confirmatory RRR;
proc score data=scaled out=pattern10_1 score=scores type="SCORE"
nostd;
var $foods2;
run;
***************************************************************************
COMPARE 'NATURAL' AND 'APPLIED' SCORES;
*check correlation between natural and applied scores;
proc corr data=pattern10_1;
var pred10score1 factor1;
run;
*calculate differences and ratio b/w natural and applied scores;
proc rank data=pattern10_1 out=ranks;
ranks rankpred10 rankfact1;
var pred10score1 factor1;
run;
proc sort data=ranks;
by pred10score1;
run;
data rankdiff;
set ranks;
difpat1=factor1 - pred10score1;
ratiopat1=factor1/pred10score1;
difrank=rankpred10 - rankfact1;
run;
proc means;
var difpat1 ratiopat1 difrank;
run;
Message was edited by: UKPhD
Message was edited by: UKPhD