Example #1
0
        private void Prognoz()
        {
            var transpMatrix = MatrixFunction.TransposeMatrix(dataMatrix);
            int parametersCount = dataMatrix[0].Length, measuresCount = dataMatrix.Length;

            double[]        resultParameter        = transpMatrix[resultParameterNumber];
            List <double>[] withoutResultParameter = new List <double> [measuresCount];

            for (int i = 0; i < measuresCount; i++)
            {
                withoutResultParameter[i] = new List <double>();
                withoutResultParameter[i].Add(1);

                for (int j = 0; j < parametersCount; ++j)
                {
                    if (j != resultParameterNumber)
                    {
                        withoutResultParameter[i].Add(dataMatrix[i][j]);
                    }
                }
            }

            var xMatrix             = withoutResultParameter.Select(o => o.ToArray()).ToArray();
            var transpWithoutMatrix = MatrixFunction.TransposeMatrix(xMatrix);
            RegressionAnalysis ra   = new RegressionAnalysis(dataMatrix, resultParameterNumber);

            var    result = ra.RegressionCoefficients;
            double s      = ra.ResidualDispersion;
            double t      = 4.587;

            double[] a = new double[2];
            a[0]  = MatrixFunction.ScalarProductOfVectors(x0, result) - t * s * Math.Sqrt(MatrixFunction.ScalarProductOfVectors(MatrixFunction.TransposeMatrixVectorProduct(x0, MatrixFunction.InverseMatrix(MatrixFunction.MultiplicateMatrix(transpWithoutMatrix, xMatrix))), x0));
            a[1]  = MatrixFunction.ScalarProductOfVectors(x0, result) + t * s * Math.Sqrt(MatrixFunction.ScalarProductOfVectors(MatrixFunction.TransposeMatrixVectorProduct(x0, MatrixFunction.InverseMatrix(MatrixFunction.MultiplicateMatrix(transpWithoutMatrix, xMatrix))), x0));
            Value = a;
        }
        private void CalcPairCorrelationsMatrix()
        {
            var squaredDevivations = CalcSquaredDevivatiosForAllCofficients(dataMatrix);
            var devivations        = CalcDevivatiosForAllCofficients(dataMatrix);

            int coefCount         = dataMatrix.Length;
            int measurementsCount = dataMatrix[0].Length;

            PairCorrelationsMatrix = new double[coefCount][];
            for (int k = 0; k < coefCount; k++)
            {
                PairCorrelationsMatrix[k] = new double[coefCount];
            }

            for (int i = 0; i < coefCount; ++i)
            {
                for (int j = i; j < coefCount; ++j)
                {
                    if (i == j)
                    {
                        PairCorrelationsMatrix[i][j] = 1;
                    }
                    else
                    {
                        var xDevivations       = devivations[i];
                        var yDevivations       = devivations[j];
                        var xSquaredDevivation = squaredDevivations[i];
                        var ySquaredDevivation = squaredDevivations[j];

                        PairCorrelationsMatrix[i][j] = (MatrixFunction.ScalarProductOfVectors(xDevivations, yDevivations))
                                                       / (xSquaredDevivation * ySquaredDevivation * measurementsCount);
                        PairCorrelationsMatrix[j][i] = PairCorrelationsMatrix[i][j];
                    }
                }
            }
        }