OUT=
, OUTSTAT=
,
and SCORE
options to the FACTOR
step,
as described above.
proc factor data = engdata nfactors = 2 method = prinit priors = SMC rotate = oblimin out=factor_scores1 outstat=results score; var EngProb: INTERESTeng: ; run;
Var:
|
Rotated pattern coefficients
|
Standardized scoring
coefficients
|
||
---|---|---|---|---|
1
|
2
|
1
|
2
|
|
EngProbSolv1
|
.859
|
-.016
|
.142
|
-.013
|
EngProbSolv2
|
.841
|
-.071
|
.091
|
-.010
|
EngProbSolv3
|
.879
|
-.008
|
.147
|
.010
|
EngProbSolv4
|
.909
|
-.025
|
.187
|
-.006
|
EngProbSolv5
|
.886
|
.021
|
.158
|
.006
|
EngProbSolv6
|
.869
|
.020
|
.140
|
.008
|
EngProbSolv7
|
.868
|
.033
|
.151
|
.021
|
EngProbSolv8
|
.790
|
.072
|
.084
|
.009
|
INTERESTeng1
|
.042
|
.801
|
.003
|
.086
|
INTERESTeng2
|
-.023
|
.921
|
.001
|
.225
|
INTERESTeng3
|
-.014
|
.922
|
-.004
|
.233
|
INTERESTeng4
|
-.001
|
.904
|
.012
|
.178
|
INTERESTeng5
|
-.007
|
.897
|
.001
|
.209
|
INTERESTeng6
|
.009
|
.864
|
.002
|
.131
|
*Grab and restructure pattern loadings; data coeff_oneline (keep=F1_: F2_: merge); set results end=last; *Array of new variables to contain all loadings in one line; array newVar(2,14) F1_EngProbSolv1-F1_EngProbSolv8 F1_INTERESTeng1- F1_INTERESTeng6 F2_EngProbSolv1-F2_EngProbSolv8 F2_INTERESTeng1- F2_INTERESTeng6; *Array of variables containing pattern loadings in input data set; array oldVar(*) EngProbSolv1-EngProbSolv8 INTERESTeng1-INTERESTeng6; *Retain statement to tell SAS to keep values assigned into these variables across records so that the last record will contain all values assigned; retain F1_EngProbSolv1-F1_EngProbSolv8 F1_INTERESTeng1-F1_INTERESTeng6 F2_EngProbSolv1-F2_EngProbSolv8 F2_INTERESTeng1-F2_INTERESTeng6; *Identify pattern matrix loadings and assign them to the new variables; if _TYPE_='PATTERN' and _NAME_='Factor1' then do i=1 to 14; newVar(1,i)=oldVar(i); end; if _TYPE_='PATTERN' and _NAME_='Factor2' then do i=1 to 14; newVar(2,i)=oldVar(i); end; merge=1; *add merge variable so we can merge the resulting one line with all records in student data set; *Output the last record in the data set that will contain all the new variables; if last then output; run; *Assign merge variable to data set containing student records and pre- defined SAS factor scores so we can merge the above pattern loadings with each record and compute factor scores based on pattern loadings; data factor_scores1; set factor_scores1; merge=1; *add merge variable; run; *Compute factor scores based on pattern loadings; data pattern_score_factorScores (drop=merge F1_: F2_: wt: i f); merge factor_scores1 coeff_oneline; by merge; *Array of variables containing pattern loadings; array fact(2,14) F1_EngProbSolv1-F1_EngProbSolv8 F1_INTERESTeng1- F1_INTERESTeng6 F2_EngProbSolv1-F2_EngProbSolv8 F2_INTERESTeng1- F2_INTERESTeng6; *Array of responses to items; array itms(*) EngProbSolv1-EngProbSolv8 INTERESTeng1-INTERESTeng6; *Array that will contain weighted item scores (pattern loading x response); array wtItm(*) wt1-wt14; *Array that will contain final factor scores based on pattern loadings; array fs(*) patternF1 patternF2; *Loop from 1 to 2 – representing the factors; do f=1 to 2; *Loop through each of the 14 items to compute weighted item scores; do i=1 to dim(itms); wtItm(i)=fact(f,i)*itms(i); end; *Compute mean of the weighted item scores as the factor score; fs(f)=mean(of wt:); *compute mean of weighted estimates as the factor score; end; run;
OUT
option) are proper
factor scores. So, referring to Pattern coefficients and standardized score coefficients from engineering data, a proper factor
score for the first factor (using either set of coefficients) would
include both the engineering problem-solving variables and the identification
with engineering variables. Of course, those second loadings are relatively
small and, as such, would contribute very little to the analysis.
An improper factor score would include only those variables considered
to be part of the factor (e.g., only EngProbSolv1 – EngProbSolv8
would be used to compute the factor 1 score). In practice, these two
types of factor scores are generally well correlated; yet in our opinion,
both types are equally flawed.
Var:
|
Sample 1
|
Sample 2
|
Sample 3
|
Sample 4
|
||||
---|---|---|---|---|---|---|---|---|
1
|
2
|
1
|
2
|
1
|
2
|
1
|
2
|
|
.82
|
.01
|
.88
|
.00
|
.83
|
.01
|
.90
|
-.04
|
|
EngProbSolv2
|
.79
|
-.06
|
.82
|
.00
|
.84
|
-.06
|
.87
|
-.09
|
EngProbSolv3
|
.87
|
-.02
|
.92
|
.00
|
.87
|
.02
|
.91
|
.01
|
EngProbSolv4
|
.88
|
-.04
|
.95
|
-.06
|
.92
|
.00
|
.91
|
.00
|
EngProbSolv5
|
.84
|
.03
|
.91
|
-.02
|
.90
|
.01
|
.87
|
.04
|
EngProbSolv6
|
.81
|
.05
|
.90
|
-.01
|
.85
|
-.04
|
.90
|
.03
|
EngProbSolv7
|
.81
|
.01
|
.88
|
.05
|
.85
|
.01
|
.85
|
.07
|
EngProbSolv8
|
.80
|
.05
|
.84
|
.04
|
.76
|
.08
|
.84
|
.02
|
INTERESTeng1
|
.21
|
.66
|
-.01
|
.87
|
-.08
|
.85
|
-.01
|
.89
|
INTERESTeng2
|
-.07
|
.92
|
.01
|
.93
|
.03
|
.84
|
.01
|
.92
|
INTERESTeng3
|
-.09
|
.94
|
-.01
|
.95
|
.01
|
.88
|
.01
|
.92
|
INTERESTeng4
|
-.10
|
.95
|
.01
|
.95
|
.09
|
.78
|
.04
|
.83
|
INTERESTeng5
|
.11
|
.80
|
.00
|
.93
|
-.03
|
.87
|
-.04
|
.92
|
INTERESTeng6
|
.04
|
.75
|
.01
|
.88
|
.00
|
.84
|
.01
|
.91
|
Note: Primary factors each variable loads on are highlighted |