예제 #1
0
        /**
         * Compute a covariance matrix from a matrix whose columns represent
         * covariates.
         * @param matrix input matrix (must have at least one column and two rows)
         * @param biasCorrected determines whether or not covariance estimates are bias-corrected
         * @return covariance matrix
         * @throws MathIllegalArgumentException if the matrix does not contain sufficient data
         */
        protected RealMatrix computeCovarianceMatrix(RealMatrix matrix, bool biasCorrected)
        {
            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 = covariance(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);
        }