コード例 #1
0
        private void CalcRegressionCoefficientsSignificance()
        {
            double[] sb        = new double[parametersCount];
            var      temperory = MatrixFunction.InverseMatrix(MatrixFunction.MultiplicateMatrix(MatrixFunction.TransposeMatrix(xMatrix), xMatrix));

            for (int j = 0; j < parametersCount; j++)
            {
                sb[j] = ResidualDispersion * temperory[j][j];
            }

            RegressionCoefficientsSignificance = new double[parametersCount];
            for (int i = 0; i < parametersCount; ++i)
            {
                RegressionCoefficientsSignificance[i] = RegressionCoefficients[i] / sb[i];
            }
        }
コード例 #2
0
        private void CalcConfidenceIntervalsOfCoefficients()
        {
            double[] sb        = new double[parametersCount];
            var      temperory = MatrixFunction.InverseMatrix(MatrixFunction.MultiplicateMatrix(MatrixFunction.TransposeMatrix(xMatrix), xMatrix));

            for (int j = 0; j < parametersCount; j++)
            {
                sb[j] = ResidualDispersion * temperory[j][j];
            }

            double t = 4.587;

            ConfidenceIntervalsOfCoefficients = new Tuple <double, double> [parametersCount];
            for (int i = 0; i < parametersCount; ++i)
            {
                ConfidenceIntervalsOfCoefficients[i] = new Tuple <double, double>(RegressionCoefficients[i] - t * sb[i], RegressionCoefficients[i] + t * sb[i]);
            }
        }
コード例 #3
0
        private void CalcRegressionCoefficients()
        {
            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]);
                    }
                }
            }

            xMatrix = withoutResultParameter.Select(o => o.ToArray()).ToArray();
            var transpWithoutMatrix = MatrixFunction.TransposeMatrix(xMatrix);

            RegressionCoefficients = MatrixFunction.MatrixVectorMultiplication(MatrixFunction.MultiplicateMatrix(MatrixFunction.InverseMatrix(MatrixFunction.MultiplicateMatrix(transpWithoutMatrix, xMatrix)), transpWithoutMatrix), resultParameter);
            RegressionCoefficients = RegressionCoefficients.Take(parametersCount).ToArray();
        }
コード例 #4
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;
        }