c++ - 最小二乘中位数稳健回归 C++

标签 c++ statistics regression eigen

我有一组数据 z(0), z(1), z(2)...,z(n) 我目前正在用一个 2 变量多项式拟合种类 p(x,y) = a(1)*x^2+a(2)*y^2+a(3)*x*y+a(4)。我有 i=1,...,n (x(i),y(i)) 我强加的坐标是 p(x(i ),y(i))=z(i)。通过这种方式,我有一个可以使用 Eigen SVD 解决的超定系统.我正在寻找一种可以处理异常值的更复杂的方法,例如最小二乘中位数稳健回归(如 here 所述),但我还没有找到 2 个变量的 C++ 实现。我查看了 GSL,但似乎没有 2 个变量函数。我能想到的唯一其他解决方案是在 ROOT 中使用 TGraph2D .你知道任何其他解决方案吗?也许是数字食谱?因为我正在编写 C++ 代码,所以我更喜欢 C 或 C++ 实现。

最佳答案

由于还没有给出答案,但我仍在努力解决这个问题,我会在这里分享我的进展。

TLinearFitter 类有一个拟合方法,允许您选择稳健拟合 - 最小修剪二乘回归 (LTS):

https://root.cern.ch/root/html532/TLinearFitter.html

另一种可能的解决方案,可能更耗时,但从长远来看可能更有效的是编写我自己的函数以使其最小化,并使用: https://projects.coin-or.org/Ipopt最小化它。尽管在这种方法中有一个更大的“步骤”。我不知道如何使用这个库,而且我还没有(还?)找到一个很好的教程来理解它。

此处:https://wis.kuleuven.be/stat/robust/software有一个名为 PROGRESS 的 LMedS 算法的 Fortran 实现。因此,另一种可能的解决方案是将该软件移植到 C/C++ 并从中创建一个库。

关于c++ - 最小二乘中位数稳健回归 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40550466/

相关文章:

r - 使用 R 进行时间序列预测

c++ - 通过 Arduino 上的 gprs shield 接收短信

c++ - 无法使用 boost::read_graphml 读取 graphML

c++ - 删除 Mat int 函数 (opencv)

javascript - 是否有一个库可以根据 JavaScript 的 beta 分布生成随机数?

python - 使用 scikit 进行逆高斯回归

machine-learning - L1-范数与 L2-范数作为标准化时的成本函数

regression - 如何获得p值的更多数字?

python - tf.layers.Dense 之后张量的形状?

c++ - VC7.1 C1204 内部编译错误