MCPcopy Create free account
hub / github.com/KDE/labplot / testLinearNorris

Method testLinearNorris

tests/analysis/fit/FitTest.cpp:67–115  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65}
66
67void FitTest::testLinearNorris() {
68 // NIST data for Norris dataset
69 QVector<double> xData = {0.2, 337.4, 118.2, 884.6, 10.1, 226.5, 666.3, 996.3, 448.6, 777.0, 558.2, 0.4, 0.6, 775.5, 666.9, 338.0, 447.5, 11.6,
70 556.0, 228.1, 995.8, 887.6, 120.2, 0.3, 0.3, 556.8, 339.1, 887.2, 999.0, 779.0, 11.1, 118.3, 229.2, 669.1, 448.9, 0.5};
71 QVector<double> yData = {0.1, 338.8, 118.1, 888.0, 9.2, 228.1, 668.5, 998.5, 449.1, 778.9, 559.2, 0.3, 0.1, 778.1, 668.8, 339.3, 448.9, 10.8,
72 557.7, 228.3, 998.0, 888.8, 119.6, 0.3, 0.6, 557.6, 339.3, 888.0, 998.5, 778.9, 10.2, 117.6, 228.9, 668.4, 449.2, 0.2};
73
74 // data source columns
75 Column xDataColumn(QStringLiteral("x"), AbstractColumn::ColumnMode::Double);
76 xDataColumn.replaceValues(0, xData);
77
78 Column yDataColumn(QStringLiteral("y"), AbstractColumn::ColumnMode::Double);
79 yDataColumn.replaceValues(0, yData);
80
81 XYFitCurve fitCurve(QStringLiteral("fit"));
82 fitCurve.setXDataColumn(&xDataColumn);
83 fitCurve.setYDataColumn(&yDataColumn);
84
85 // prepare the fit
86 XYFitCurve::FitData fitData = fitCurve.fitData();
87 fitData.modelCategory = nsl_fit_model_basic;
88 fitData.modelType = nsl_fit_model_polynomial;
89 fitData.degree = 1;
90 XYFitCurve::initFitData(fitData);
91 fitCurve.setFitData(fitData);
92
93 // perform the fit
94 fitCurve.recalculate();
95 const XYFitCurve::FitResult& fitResult = fitCurve.fitResult();
96
97 // check the results
98 QCOMPARE(fitResult.available, true);
99 QCOMPARE(fitResult.valid, true);
100
101 const int np = fitData.paramNames.size();
102 QCOMPARE(np, 2);
103
104 QCOMPARE(fitResult.paramValues.at(0), -0.262323073774029);
105 QCOMPARE(fitResult.errorValues.at(0), 0.232818234301152);
106 QCOMPARE(fitResult.paramValues.at(1), 1.00211681802045);
107 QCOMPARE(fitResult.errorValues.at(1), 0.429796848199937e-3);
108
109 QCOMPARE(fitResult.rsd, 0.884796396144373);
110 QCOMPARE(fitResult.rsquare, 0.999993745883712);
111 QCOMPARE(fitResult.sse, 26.6173985294224);
112 QCOMPARE(fitResult.rms, 0.782864662630069);
113 DEBUG(std::setprecision(15) << fitResult.fdist_F); // result: 5436385.54083098
114 FuzzyCompare(fitResult.fdist_F, 5436385.54079785, 1.e-9);
115}
116
117void FitTest::testLinearPontius() {
118 // NIST data for Pontius dataset

Callers

nothing calls this directly

Calls 6

setXDataColumnMethod · 0.80
setYDataColumnMethod · 0.80
replaceValuesMethod · 0.45
setFitDataMethod · 0.45
recalculateMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected