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

Method testLinearWampler2

tests/analysis/fit/FitTest.cpp:593–648  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

591}
592
593void FitTest::testLinearWampler2() {
594 // NIST data for Wampler2 dataset
595 QVector<int> xData = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
596 QVector<double> yData = {1.00000, 1.11111, 1.24992, 1.42753, 1.65984, 1.96875, 2.38336, 2.94117, 3.68928, 4.68559, 6.00000,
597 7.71561, 9.92992, 12.75603, 16.32384, 20.78125, 26.29536, 33.05367, 41.26528, 51.16209, 63.00000};
598
599 // data source columns
600 Column xDataColumn(QStringLiteral("x"), AbstractColumn::ColumnMode::Integer);
601 xDataColumn.replaceInteger(0, xData);
602
603 Column yDataColumn(QStringLiteral("y"), AbstractColumn::ColumnMode::Double);
604 yDataColumn.replaceValues(0, yData);
605
606 XYFitCurve fitCurve(QStringLiteral("fit"));
607 fitCurve.setXDataColumn(&xDataColumn);
608 fitCurve.setYDataColumn(&yDataColumn);
609
610 // prepare the fit
611 XYFitCurve::FitData fitData = fitCurve.fitData();
612 fitData.modelCategory = nsl_fit_model_basic;
613 fitData.modelType = nsl_fit_model_polynomial;
614 fitData.degree = 5;
615 XYFitCurve::initFitData(fitData);
616 fitCurve.setFitData(fitData);
617
618 // perform the fit
619 fitCurve.recalculate();
620 const XYFitCurve::FitResult& fitResult = fitCurve.fitResult();
621
622 // check the results
623 qDebug() << "STATUS " << fitResult.status;
624 QCOMPARE(fitResult.available, true);
625 QCOMPARE(fitResult.valid, true);
626
627 const int np = fitData.paramNames.size();
628 QCOMPARE(np, 6);
629
630 for (int i = 0; i < np; i++) {
631 DEBUG(std::setprecision(15) << fitResult.paramValues.at(i));
632 }
633 QCOMPARE(fitResult.paramValues.at(0), 1.0);
634 QCOMPARE(fitResult.paramValues.at(1), 0.1);
635 QCOMPARE(fitResult.paramValues.at(2), 0.01);
636 QCOMPARE(fitResult.paramValues.at(3), 0.001);
637 QCOMPARE(fitResult.paramValues.at(4), 0.0001);
638 QCOMPARE(fitResult.paramValues.at(5), 0.00001);
639 for (int i = 0; i < np; i++)
640 printAndCheck(fitResult.errorValues.at(i), 0., 1.e-14);
641
642 printAndCheck(fitResult.rsd, 0., 1.e-14);
643 QCOMPARE(fitResult.rsquare, 1.);
644 printAndCheck(fitResult.sse, 0., 1.e-15);
645 printAndCheck(fitResult.rms, 0., 1.e-15);
646 DEBUG(std::setprecision(15) << fitResult.fdist_F); // result: 2.44385217688297e+32
647 QVERIFY(fitResult.fdist_F > 1.e+32);
648}
649
650void FitTest::testLinearWampler2_custom() {

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