public RealMatrix CovarianceToCorrelation(RealMatrix covarianceMatrix)
        {
            int        nVars     = covarianceMatrix.getColumnDimension();
            RealMatrix outMatrix = new BlockRealMatrix(nVars, nVars);

            for (int i = 0; i < nVars; i++)
            {
                double sigma = Math.Sqrt(covarianceMatrix.getEntry(i, i));
                outMatrix.setEntry(i, i, 1.0D);
                for (int j = 0; j < i; j++)
                {
                    double entry = covarianceMatrix.getEntry(i, j) / (sigma * Math.Sqrt(covarianceMatrix.getEntry(j, j)));
                    outMatrix.setEntry(i, j, entry);
                    outMatrix.setEntry(j, i, entry);
                }
            }
            return(outMatrix);
        }
        public RealMatrix ComputeCorrelationMatrix(RealMatrix matrix)
        {
            CheckSufficientData(matrix);
            int        nVars     = matrix.getColumnDimension();
            RealMatrix outMatrix = new BlockRealMatrix(nVars, nVars);

            for (int i = 0; i < nVars; i++)
            {
                for (int j = 0; j < i; j++)
                {
                    double corr = Correlation(matrix.getColumn(i), matrix.getColumn(j));
                    outMatrix.setEntry(i, j, corr);
                    outMatrix.setEntry(j, i, corr);
                }
                outMatrix.setEntry(i, i, 1.0D);
            }
            return(outMatrix);
        }
Ejemplo n.º 3
0
        protected RealMatrix ComputeCovarianceMatrix(RealMatrix matrix, bool biasCorrected) //throws MathIllegalArgumentException
        {
            int        dimension = matrix.getColumnDimension();
            Variance   variance  = new Variance(biasCorrected);
            RealMatrix outMatrix = new BlockRealMatrix(dimension, dimension);

            for (int i = 0; i < dimension; i++)
            {
                for (int j = 0; j < i; j++)
                {
                    double cov = GetCovarianve(matrix.getColumn(i), matrix.getColumn(j), biasCorrected);
                    outMatrix.setEntry(i, j, cov);
                    outMatrix.setEntry(j, i, cov);
                }
                outMatrix.setEntry(i, i, variance.Evaluate(matrix.getColumn(i)));
            }
            return(outMatrix);
        }