atorresp
9/13/2017 - 3:26 PM

Análisis Factorial con correlación tetra/policórica

Análisis Factorial con correlación tetra/policórica

/************************************************************************/
/* El siguiente procedimiento permite realizar un Análisis Factorial    */
/* utilizando correlaciones tetra o policóricas.                        */
/* Es de utilidad hasta SAS 9.3 ya que el PROC CORR de SAS 9.4 permite  */
/* exportar directamente la matriz de correlación policórica, por lo    */ 
/* que es mucho mas sencillo.                                           */
/* Por ahora los estadísticos basados en tamaño muestral no están       */
/* disponibles (se calculan, pero no tienen sentido), debido a que      */
/* esa información no se le está siendo proporcionada al PROC FACTOR.   */
/************************************************************************/

* Se calculan las correlaciones tetra/policóricas para todo
* los pares de variables;
PROC FREQ DATA = data;
TABLES (var1--varN)*(var1--varN) / NOPRINT plcorr;
ODS OUTPUT measures=corr (WHERE=(statistic="Tetrachoric Correlation" or statistic="Polychoric Correlation")
    					  KEEP = statistic TABLE value);
RUN;

* Se extrae el número de variables;
* Este paso no es necesario si se sabe de antemano
* cuantas variables son;
DATA _NULL_; SET corr; CALL SYMPUTX('n',SQRT(_N_)); RUN;

* Se ordena el output del PROC FREQ para armar la matriz de correlacion;
DATA corrt;
SET corr;
group = floor((_n_ - 1)/&n);
x = scan(table, 2, " *");
y = scan(table, 3, " *");
KEEP group value table x y;
RUN;

PROC TRANSPOSE DATA = corrt OUT = matrix (drop = _name_ group);
ID x;
BY group;
VAR value ;
RUN;

DATA af(type=corr);
SET matrix(type=corr);
_type_ = 'corr';
RUN;

* Se realiza el AF con la matriz de correlación obtenida previamente;
ods graphics on;
PROC FACTOR DATA=AF METHOD=PRINIT REORDER ROTATE=VARIMAX PRIORS=SMC PLOTS=ALL;
TITLE 'Analisis Factorial con Correlación Policorica';
VAR var1--varN; 
RUN;
ods graphics off;