01-22-2014 01:22 PM
I'm having a terribly hard time trying to import a matrix of polychoric correlations for use in a factor analysis. I'm really not sure what I'm doing wrong, because I'm following the steps I've seen on various websites. The farthest I get is creating a temp file that only has the names of the variables along the top, but none of the cells are filled in. Here's the syntax I've been using. Perhaps someone can tell me where I'm going wrong.
Step 1: creating the matrix:
corr data= Work.temp00 polychoric out= WORK.temp01; var 1_1 q1_2 q1_3 q1_4 q1_5 q1_6 q1_7 q1_8 q1_9 q1_10 q1_11 q1_13 etc.; run;
I then export this temp file into a csv file (I won't include the syntax because it everything works up to this point.
Step 2: trying to imput the correlation matrix
Data= temp02 (type=corr);
input _name_ $ q1_1 q1_2 q1_3 q1_4 q1_5 q1_6 q1_7 q1_8 q1_9 q1_10 q1_11 q1_13 etc.; run;
The result is a temp file with a header row with "type" and "name" in the first two columns followed by, as I said, the variable names in the header row, but nothing in the cells? Nevertheless, the next step I'm trying to do is this:
Step 3: factor analysis
Proc factor data=temp02; method=prinit n=2 [note that I'm also not sure what the "n=2" is all about. should this be the actual number of observations?)rotate=promax scree; run;
Any advice would be most welcome! Thank you!
01-22-2014 01:33 PM
Why export out to a file and then bring it back in?
Skip step2 entirely and then go to step 3 and use the temp01 as your data input.
Also, work through an example for proc factor before trying this so you understand the options.
01-22-2014 01:44 PM
Thank you for the reply. Unfortunately, I've tried that several times and I get this message:
NOTE: N not equal across variables in data set WORK.TEMP01. This may not be appropriate. The smallest value will be used.
ERROR: CORR matrix incomplete in data set WORK.TEMP01.
NOTE: The SAS System stopped processing this step because of errors.
01-22-2014 01:59 PM
The correlation output from proc corr gives some extra statistics, such as N, Mean etc.
Filter those out first to get a true correlation matrix.
Then input to proc factor, add in a TYPE variable with a value called CORR to specify a correlation input.
You also have your semicolons in the wrong place. Anyways, hopefully this gets you on to working with the proc factor procedure instead of dealing with input data.
See the following to determine what settings you want:
proc corr data=sashelp.iris out=corrMatrix;
var petalwidth petallength sepalwidth sepallength;
proc print data=corrMatrix;
drop _type_ _name_;
ods graphics on;
proc factor data=corrMatrix2
ods graphics off;
06-19-2017 10:32 AM
I recognize this error. You need to look closer of your correlation matrix. Some pairs of your variables may not have their correlation calculated and you got a empty cells in the matrix which SAS says it is incomplete matrix.
07-01-2015 12:37 PM
Use proc corr to create the correlation matrix and export it directly to another SAS dataset and then use that dataset as your ut for proc calis:
Here is the example:
ods listing close;
proc corr data=survey OUTPLC=surveyplc ;
proc calis data=surveyplc