orgposada.statpos
Class PrinCompPos

java.lang.Object
  |
  +--orgposada.statpos.PrinCompPos

public class PrinCompPos
extends java.lang.Object

Calcula los componentes principales.

Version:
1.0, 13/02/2001
Author:
Omar Posada Villarreal

Field Summary
private  double[][] corr
          Arreglo de la matriz de correlacion.
private  double[][] cov
          Arreglo de la matriz de covarianza.
private  double[] eigValCorr
          Eigen valores de correlacion.
private  double[] eigValCov
          Eigen valores de covarianza.
private  double[][] eigVectCol
          Eigen vectores temporal para salida de texto en columnas.
private  double[][] eigVectColCorr
          Eigen vectores en columnas de correlacion.
private  double[][] eigVectColCov
          Eigen vectores en columnas de covarianza.
private  double[][] eigVectCorr
          Eigen vectores de correlacion, row = eigVect.
private  double[][] eigVectCov
          Eigen vectores de covarianza, row = eigVect.
private  double[][] item
          Datos en forma de tabla horizontal.
private  double[] means
          Vector con el promedio de cada variable.
private  int numbVar
          Numero de variables de la tabla, renglones.
private  double[] stanDev
          Vector con la desviacion estandar de cada variable.
 int XC
          Coordenada X de un arreglo.
 int YC
          Coordenada Y de un arreglo.
 
Constructor Summary
PrinCompPos(double[][] theItems, double tolerance, int iterations)
          Construye calculando los componentes principales y otras medidas.
 
Method Summary
 double[][] calculatePC(SquaredMatrix matrix, double tolerance, int iterations, double[] eigVal)
          Busca los componentes principales de la matriz.
 void calculatePrinComp(double tolerance, int iterations)
          Calcula los componentes principales y otras medidas, con una tolerancia e iteraciones variables.
private  double[] calculateRelativeVariance(double[] eigVal)
          Calcula la varianza relativa de cada componente principal.
 double[] calculateRelVarCorr()
          Calcula la varianza relativa de correlacion de cada componente principal.
 double[] calculateRelVarCov()
          Calcula la varianza relativa de covarianza de cada componente principal.
private  double calculateTotalVariance(double[] eigVal)
          Calcula la suma de la varianza total de la poblacion.
 double calculateTotVarCorr()
          Calcula la suma de la varianza total de la correlacion de la poblacion.
 double calculateTotVarCov()
          Calcula la suma de la varianza total de la covarianza de la poblacion.
 double[][] countOnDirection(int bins, double leftRange, double rightRange, double dirX, double dirY)
          Cuenta la frecuencia de los puntos proyectados en el vector dado.
 java.lang.String eigenCorrelationToString()
          Convierte los eigen vectores de correlacion a String.
 java.lang.String eigenCovarianceToString()
          Convierte los eigen vectores de covarianza a String.
private  java.lang.String eigenToString(double[] eigVal, double[][] eigVectColumns)
          Muestra solo los 2 primeros componentes principales.
 double[][] getCorrelation()
          Obtiene la matriz de correlaciones.
 double[][] getCovariance()
          Obtiene la matriz de covarianzas.
 double[] getEigValCorr()
          Obtiene los eigen valores de correlacion.
 double[] getEigValCov()
          Obtiene los eigen valores de covarianza.
 double[][] getEigVectCorr()
          Obtiene los eigen vectores de correlacion.
 double[][] getEigVectCov()
          Obtiene los eigen vectores de covarianza.
 double[] getMeans()
          Obtiene las medias.
 double[] getStandardDeviation()
          Obtiene las desviaciones estandar de las variables.
 double[][] projectDirectionsOnPrinComp()
          Calcula las coordenadas de la proyeccion de las direcciones (puntas de las flechas) de las variables proyectadas en un una hiperesfera unitaria, en un plano normalizado de los componentes principales Solo toma los dos primeros componentes principales de correlacion.
 double[][] projectItemsOnPrinComp()
          Calcula las coordenadas de la proyeccion de los puntos en un plano normalizado de los componentes principales Solo toma los dos primeros componentes principales de correlacion.
 double[][] relativeFrequencyOnDirection(int bins, double leftClass, double rightClass, double dirX, double dirY)
          Cuenta la frecuencia relativa de los puntos proyectados en el vector dado.
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

item

private double[][] item
Datos en forma de tabla horizontal.

numbVar

private int numbVar
Numero de variables de la tabla, renglones.

means

private double[] means
Vector con el promedio de cada variable.

stanDev

private double[] stanDev
Vector con la desviacion estandar de cada variable.

cov

private double[][] cov
Arreglo de la matriz de covarianza.

corr

private double[][] corr
Arreglo de la matriz de correlacion.

eigValCorr

private double[] eigValCorr
Eigen valores de correlacion.

eigVectCorr

private double[][] eigVectCorr
Eigen vectores de correlacion, row = eigVect.

eigValCov

private double[] eigValCov
Eigen valores de covarianza.

eigVectCov

private double[][] eigVectCov
Eigen vectores de covarianza, row = eigVect.

eigVectCol

private double[][] eigVectCol
Eigen vectores temporal para salida de texto en columnas.

eigVectColCorr

private double[][] eigVectColCorr
Eigen vectores en columnas de correlacion.

eigVectColCov

private double[][] eigVectColCov
Eigen vectores en columnas de covarianza.

XC

public final int XC
Coordenada X de un arreglo.

YC

public final int YC
Coordenada Y de un arreglo.
Constructor Detail

PrinCompPos

public PrinCompPos(double[][] theItems,
                   double tolerance,
                   int iterations)
            throws java.lang.RuntimeException
Construye calculando los componentes principales y otras medidas. Se hizo de esta forma para asegurar que se calcularan antes y no tener errores por referencias a null.
Parameters:
theItems - Datos en forma de tabla horizontal.
tolerance - Precision del modelo.
iterations - Numero de corridas maximo.
Method Detail

getMeans

public double[] getMeans()
Obtiene las medias.
Returns:
Medias de las variables.

getStandardDeviation

public double[] getStandardDeviation()
Obtiene las desviaciones estandar de las variables.
Returns:
Desviaciones estandar de las variables.

getCorrelation

public double[][] getCorrelation()
Obtiene la matriz de correlaciones.
Returns:
la matriz de correlaciones.

getCovariance

public double[][] getCovariance()
Obtiene la matriz de covarianzas.
Returns:
la matriz de covarianzas.

getEigValCorr

public double[] getEigValCorr()
Obtiene los eigen valores de correlacion.
Returns:
los eigen valores de correlacion. Si es null, no se pudo encontrar.

getEigVectCorr

public double[][] getEigVectCorr()
Obtiene los eigen vectores de correlacion.
Returns:
los eigen vectores de correlacion. Si es null, no se pudo encontrar.

getEigValCov

public double[] getEigValCov()
Obtiene los eigen valores de covarianza.
Returns:
los eigen valores de covarianza. Si es null, no se pudo encontrar.

getEigVectCov

public double[][] getEigVectCov()
Obtiene los eigen vectores de covarianza.
Returns:
los eigen vectores de covarianza. Si es null, no se pudo encontrar.

eigenCorrelationToString

public java.lang.String eigenCorrelationToString()
                                          throws java.lang.RuntimeException
Convierte los eigen vectores de correlacion a String.
Returns:
Cadena formateada.
Throws:
java.lang.RuntimeException - No existen eigen pares.

eigenCovarianceToString

public java.lang.String eigenCovarianceToString()
                                         throws java.lang.RuntimeException
Convierte los eigen vectores de covarianza a String.
Returns:
Cadena formateada.
Throws:
java.lang.RuntimeException - No existen eigen pares.

eigenToString

private java.lang.String eigenToString(double[] eigVal,
                                       double[][] eigVectColumns)
                                throws java.lang.RuntimeException
Muestra solo los 2 primeros componentes principales.
Parameters:
eigVal - Eigen Valores.
eigVectColumns - Los tiene por columnas.
Returns:
Cadena formateada.
Throws:
java.lang.RuntimeException - No existen eigen pares.

calculatePrinComp

public void calculatePrinComp(double tolerance,
                              int iterations)
                       throws java.lang.RuntimeException
Calcula los componentes principales y otras medidas, con una tolerancia e iteraciones variables.
Parameters:
tolerance - Precision del modelo.
iterations - Numero de corridas maximo.
Throws:
java.lang.RuntimeException - No se encontraron los eigen pares.

calculatePC

public double[][] calculatePC(SquaredMatrix matrix,
                              double tolerance,
                              int iterations,
                              double[] eigVal)
                       throws java.lang.RuntimeException
Busca los componentes principales de la matriz. Utiliza el metodo de Jacobi para matrices simetricas definidas positivas con cierta tolerancia y numero de iteraciones. Luego de calcular los eigen pares, ordena los eigen vectores en orden decreciente segun los eigen valores. El primer renglon de la matriz de regreso y la primera columna que se muestra representan al primer componente principal. El primer renglon se refiere a la variabilidad de cada componente. Los siguientes se muestra los vectores de cada componente principal.
Parameters:
matrix - Matrices simetricas definidas positivas.
tolerance - Precision del modelo.
iterations - Numero de corridas maximo.
eigVal - Arreglo (vector) con el mismo numero de renglones (o columnas) que la matriz donde se colocaran los eigen valores (salida).
Returns:
Arreglo con los eigen vectores ordenados. Cada renglon es un eigen vector.
Throws:
java.lang.RuntimeException - No se encontraron los eigen pares.

calculateTotVarCorr

public double calculateTotVarCorr()
Calcula la suma de la varianza total de la correlacion de la poblacion.
Returns:
Varianza total de la poblacion.

calculateTotVarCov

public double calculateTotVarCov()
Calcula la suma de la varianza total de la covarianza de la poblacion.
Returns:
Varianza total de la poblacion.

calculateTotalVariance

private double calculateTotalVariance(double[] eigVal)
Calcula la suma de la varianza total de la poblacion.
Parameters:
eigVal - Eigen valores.
Returns:
Varianza total de la poblacion.

calculateRelVarCorr

public double[] calculateRelVarCorr()
Calcula la varianza relativa de correlacion de cada componente principal.
Returns:
Arreglo con varianza relativa .

calculateRelVarCov

public double[] calculateRelVarCov()
Calcula la varianza relativa de covarianza de cada componente principal.
Returns:
Arreglo con varianza relativa .

calculateRelativeVariance

private double[] calculateRelativeVariance(double[] eigVal)
Calcula la varianza relativa de cada componente principal.
Parameters:
eigVal - Eigen valores.
Returns:
Arreglo con varianza relativa .

projectItemsOnPrinComp

public double[][] projectItemsOnPrinComp()
Calcula las coordenadas de la proyeccion de los puntos en un plano normalizado de los componentes principales Solo toma los dos primeros componentes principales de correlacion. Los valores en el 99% de los casos caen en el rango de +- 3 desviaciones estandares.
Returns:
Coordenadas de los puntos proyectados en el plano. n x 2. n: Num. de datos; 2: x, y.

projectDirectionsOnPrinComp

public double[][] projectDirectionsOnPrinComp()
Calcula las coordenadas de la proyeccion de las direcciones (puntas de las flechas) de las variables proyectadas en un una hiperesfera unitaria, en un plano normalizado de los componentes principales Solo toma los dos primeros componentes principales de correlacion.
Returns:
Coordenadas de las puntas de flechas proyectados en el plano. n x 2. n: Num. de datos; 2: x, y.

countOnDirection

public double[][] countOnDirection(int bins,
                                   double leftRange,
                                   double rightRange,
                                   double dirX,
                                   double dirY)
                            throws java.lang.IllegalArgumentException
Cuenta la frecuencia de los puntos proyectados en el vector dado. Para matriz de correlacion.
Parameters:
bins - Numero de clases en el histograma.
leftRange - Inicio del intervalo.
rightRange - Fin del intervalo.
dirX - Coordenada X del vector en donde se proyectara.
dirY - Coordenada Y del vector en donde se proyectara.
Returns:
Arreglo con n x 2. Cada renglon tiene la marca de clase y la frecuencia.
Throws:
java.lang.IllegalArgumentException - No se puede contar frecuencias

relativeFrequencyOnDirection

public double[][] relativeFrequencyOnDirection(int bins,
                                               double leftClass,
                                               double rightClass,
                                               double dirX,
                                               double dirY)
                                        throws java.lang.IllegalArgumentException
Cuenta la frecuencia relativa de los puntos proyectados en el vector dado.
Parameters:
bins - Numero de clases en el histograma.
leftRange - Inicio del intervalo.
rightRange - Fin del intervalo.
dirX - Coordenada X del vector en donde se proyectara.
dirY - Coordenada Y del vector en donde se proyectara.
Returns:
Arreglo con n x 2. Cada renglon tiene la marca de clase y la frecuencia.
Throws:
java.lang.IllegalArgumentException - No se puede contar frecuencias