ultimatepp/bazaar/STEM4U/Utility.cpp
koldo d7edb6f573 STEM4U: Added R2 and improved Sundials functions
git-svn-id: svn://ultimatepp.org/upp/trunk@14666 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2020-07-08 17:28:04 +00:00

27 lines
No EOL
552 B
C++

#include <Core/Core.h>
#include <Functions4U/Functions4U.h>
#include <plugin/Eigen/Eigen.h>
#include "Utility.h"
namespace Upp {
using namespace Eigen;
double R2(const VectorXd &serie, const VectorXd &serie0, double mean) {
if (IsNull(mean))
mean = serie.mean();
double sse = 0, sst = 0;
for (Eigen::Index i = 0; i < serie.size(); ++i) {
double y = serie(i);
double err = y - serie0(i);
sse += err*err;
double d = y - mean;
sst += d*d;
}
if (sst < 1E-50 || sse > sst)
return 0;
return 1 - sse/sst;
}
}