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

Method testLinearPontius

tests/analysis/fit/FitTest.cpp:117–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

115}
116
117void FitTest::testLinearPontius() {
118 // NIST data for Pontius dataset
119 QVector<int> xData = {150000, 300000, 450000, 600000, 750000, 900000, 1050000, 1200000, 1350000, 1500000, 1650000, 1800000, 1950000, 2100000,
120 2250000, 2400000, 2550000, 2700000, 2850000, 3000000, 150000, 300000, 450000, 600000, 750000, 900000, 1050000, 1200000,
121 1350000, 1500000, 1650000, 1800000, 1950000, 2100000, 2250000, 2400000, 2550000, 2700000, 2850000, 3000000};
122 QVector<double> yData = {.11019, .21956, .32949, .43899, .54803, .65694, .76562, .87487, .98292, 1.09146, 1.20001, 1.30822, 1.41599, 1.52399,
123 1.63194, 1.73947, 1.84646, 1.95392, 2.06128, 2.16844, .11052, .22018, .32939, .43886, .54798, .65739, .76596, .87474,
124 .98300, 1.09150, 1.20004, 1.30818, 1.41613, 1.52408, 1.63159, 1.73965, 1.84696, 1.95445, 2.06177, 2.16829};
125
126 // data source columns
127 Column xDataColumn(QStringLiteral("x"), AbstractColumn::ColumnMode::Integer);
128 xDataColumn.replaceInteger(0, xData);
129
130 Column yDataColumn(QStringLiteral("y"), AbstractColumn::ColumnMode::Double);
131 yDataColumn.replaceValues(0, yData);
132
133 XYFitCurve fitCurve(QStringLiteral("fit"));
134 fitCurve.setXDataColumn(&xDataColumn);
135 fitCurve.setYDataColumn(&yDataColumn);
136
137 // prepare the fit
138 XYFitCurve::FitData fitData = fitCurve.fitData();
139 fitData.modelCategory = nsl_fit_model_basic;
140 fitData.modelType = nsl_fit_model_polynomial;
141 fitData.degree = 2;
142 XYFitCurve::initFitData(fitData);
143 fitCurve.setFitData(fitData);
144
145 // perform the fit
146 fitCurve.recalculate();
147 const XYFitCurve::FitResult& fitResult = fitCurve.fitResult();
148
149 // check the results
150 QCOMPARE(fitResult.available, true);
151 QCOMPARE(fitResult.valid, true);
152
153 const int np = fitData.paramNames.size();
154 QCOMPARE(np, 3);
155
156 QCOMPARE(fitResult.paramValues.at(0), 0.673565789473684e-3);
157 QCOMPARE(fitResult.errorValues.at(0), 0.107938612033077e-3);
158 QCOMPARE(fitResult.paramValues.at(1), 0.732059160401003e-6);
159 QCOMPARE(fitResult.errorValues.at(1), 0.157817399981659e-9);
160 QCOMPARE(fitResult.paramValues.at(2), -0.316081871345029e-14);
161 QCOMPARE(fitResult.errorValues.at(2), 0.486652849992036e-16);
162
163 QCOMPARE(fitResult.rsd, 0.205177424076185e-3);
164 QCOMPARE(fitResult.rsquare, 0.999999900178537);
165 QCOMPARE(fitResult.sse, 0.155761768796992e-5);
166 QCOMPARE(fitResult.rms, 0.420977753505385e-7);
167 DEBUG(std::setprecision(15) << fitResult.fdist_F); // result: 185330865.884471
168 FuzzyCompare(fitResult.fdist_F, 185330865.995752, 1.e-9);
169}
170
171void FitTest::testLinearNoInt1() {
172 // NIST data for NoInt1 dataset

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected