Регрессия в MathNet дает отличные результаты от Excel - PullRequest
1 голос
/ 17 мая 2019

Я пытаюсь добавить компонент, который будет выполнять регрессионный анализ данных в нашем приложении. Я написал сервис, который использует MathNet Numerics для выполнения регрессии для вычисления коэффициентов для различных характеристик. Я тестирую его, передавая те же данные, что и регрессионный анализ в Excel. Данные, которые я использую ниже в формате CSV:

Accuracy,Age,Boundary Lines,Distance,Unit,County,Similarity,Size,Quality
0.894556528,0.301,1,1,1,1,0.753,0.76,0.625
0.870692849,0.234,1,0.737,1,1,0.598,0.804,0.625
1.044444444,0.49,1,1,1,0,0.714,0.933,0.833
1.04120514,0.165,1,1,1,1,0.224,0.268,0.833
1.157635468,0.179,1,1,1,1,0.224,0.268,0.8
1.080750408,1,1,1,1,1,0.826,0.536,0.833
1.100041511,1,1,1,1,1,0.569,0.5,0.833
0.932113964,1,1,1,1,1,0.78,0.25,0.625
0.966800438,0.267,1,1,1,1,0.916,0.408,0.625
0.941051136,0.212,1,0.713,1,1,0.755,0.667,0.625
0.932835821,0.429,1,1,1,1,1,0.999,1
1.689189189,0.12,1,1,1,1,1,0.941,1
1.199451679,0.292,1,1,1,1,1,0.6,1
0.7,0.188,1,0.981,1,1,1,1,0.333
0.795454545,1,1,1,1,1,1,0.364,0.5

«Точность» является зависимым значением, и я рассчитываю коэффициенты для других столбцов, используя их в качестве независимых значений. Когда я делаю регрессию в Excel, я получаю следующие результаты:

enter image description here

Когда я тестирую свои данные в коде, я получаю те же значения, за исключением граничных линий и единичных коэффициентов, , в то время как в Excel они равны 0, в моем коде они равны -0,581 и 0,876, соответственно .

Я делаю вычисления, создавая Матрицу столбцов оценок и Вектор столбца Точность и используя DirectRegressionMethod.NormalEquations.

Matrix<double> ratingsMatrix = DenseMatrix.OfRowVectors(ratingsVectors);
Vector<double> accuracyVector = DenseVector.OfEnumerable(accuracyRatings);
Vector<double> coefficientVector = MultipleRegression.DirectMethod(ratingsMatrix, accuracyVector, DirectRegressionMethod.NormalEquations);

Я пытаюсь выяснить причину разницы. Результаты из Excel хорошо работали для того, для чего они мне нужны, поэтому я хотел бы иметь возможность их дублировать. Я подозреваю, что это может быть из-за того, что оба эти столбца все 1s?

...