void simpleTest() { Tgs::Random::instance()->seed(0); KernelEstimationInterpolator uut(.1); shared_ptr<DataFrame> dfPtr(new DataFrame()); DataFrame& df = *dfPtr; vector<string> labels; labels.push_back("x"); labels.push_back("y"); labels.push_back("h"); vector<int> types(3, DataFrame::Numerical); df.setFactorLabels(labels); df.setFactorTypes(types); // is there a cleaner way? vector<double> d(3); for (size_t i = 0; i < 500; i++) { d[0] = Random::instance()->generateUniform() * 2 - 1; d[1] = Random::instance()->generateUniform() * 2 - 1; d[2] = Normal::normal(d[0], .5); df.addDataVector("", d); } uut.setData(dfPtr); vector<string> ind; ind.push_back("x"); //ind.push_back("y"); uut.setIndependentColumns(ind); vector<string> dep; dep.push_back("h"); uut.setDependentColumns(dep); uut.setSigma(0.002); CPPUNIT_ASSERT_DOUBLES_EQUAL(0.3247, uut.estimateError(), 0.0001); uut.setSigma(0.008); CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0721615, uut.estimateError(), 0.00001); }
shared_ptr<DelaunayInterpolator> buildRandom() { shared_ptr<DelaunayInterpolator> result(new DelaunayInterpolator); DelaunayInterpolator& uut = *result; shared_ptr<DataFrame> dfPtr(new DataFrame()); DataFrame& df = *dfPtr; vector<string> labels; labels.push_back("x"); labels.push_back("y"); labels.push_back("h"); vector<int> types(3, DataFrame::Numerical); df.setFactorLabels(labels); df.setFactorTypes(types); // is there a cleaner way? vector<double> d(3); double n0 = Normal::normal(0, 0.5); for (size_t i = 0; i < 100; i++) { d[0] = Random::generateUniform() * 2 - 1; d[1] = Random::generateUniform() * 2 - 1; double e = sqrt(d[0] * d[0] + d[1] * d[1]); d[2] = Normal::normal(e, .5) / n0; df.addDataVector("", d); } uut.setData(dfPtr); vector<string> ind; ind.push_back("x"); ind.push_back("y"); uut.setIndependentColumns(ind); vector<string> dep; dep.push_back("h"); uut.setDependentColumns(dep); return result; }
void simpleTest() { srand(0); DelaunayInterpolator uut; shared_ptr<DataFrame> dfPtr(new DataFrame()); DataFrame& df = *dfPtr; vector<string> labels; labels.push_back("x"); labels.push_back("y"); labels.push_back("h"); vector<int> types(3, DataFrame::Numerical); df.setFactorLabels(labels); df.setFactorTypes(types); // is there a cleaner way? vector<double> d(3); for (size_t i = 0; i < 500; i++) { d[0] = Random::generateUniform() * 2 - 1; d[1] = Random::generateUniform() * 2 - 1; double e = sqrt(d[0] * d[0] + d[1] * d[1]); d[2] = Normal::normal(e, .5); df.addDataVector("", d); } uut.setData(dfPtr); vector<string> ind; ind.push_back("x"); ind.push_back("y"); uut.setIndependentColumns(ind); vector<string> dep; dep.push_back("h"); uut.setDependentColumns(dep); CPPUNIT_ASSERT_DOUBLES_EQUAL(0.0028, uut.estimateError(), 0.0001); }