c++写一个计算拟合优度的函数
时间: 2023-11-02 13:06:39 浏览: 82
以下是一个简单的C++函数,可以计算拟合优度(R平方):
```c++
#include <vector>
#include <numeric>
double r_squared(const std::vector<double>& observed, const std::vector<double>& predicted) {
// 计算平均值
const double mean = std::accumulate(observed.begin(), observed.end(), 0.0) / observed.size();
// 计算总平方和
const double ss_tot = std::accumulate(observed.begin(), observed.end(), 0.0, [mean](const double acc, const double obs) {
return acc + std::pow(obs - mean, 2.0);
});
// 计算残差平方和
const double ss_res = std::inner_product(observed.begin(), observed.end(), predicted.begin(), 0.0, std::plus<>(), [](const double obs, const double pred) {
return std::pow(obs - pred, 2.0);
});
// 计算R平方
const double r2 = 1.0 - (ss_res / ss_tot);
return r2;
}
```
该函数接受两个向量作为输入参数,分别是观察值和预测值。函数计算观察值的平均值,并使用它来计算总平方和。然后,函数计算残差平方和,即观察值和预测值之间的差的平方之和。最后,函数计算R平方,它是残差平方和与总平方和之比的补数。函数返回R平方值。
阅读全文