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]; } } } }