python - x 和 y 上有误差的线性拟合

标签 python linear-regression least-squares

使用 python,我试图找到最适合我的数据的直线方程。但是,我的 x 和 y 数据点有错误。请注意,我的错误不是对称的。这是我的数据点的样子:

   x    x_upper_err    x_lower_err    y        y_upper_err    y_lower_err
-0.120  0.280           0.280       0.074484    0.000140    -0.000077
 0.210  0.170           0.270       0.091828    0.000414    -0.001600
-0.280  0.300           0.300       0.041035    0.002209    -0.000771

我尝试使用 kmpfit 包,但该包假设我的错误遵循高斯分布。 http://www.astro.rug.nl/software/kapteyn/kmpfittutorial.html#fitting-data-when-both-variables-have-uncertainties

还有其他方法吗?我遇到了 ODR(正交距离回归)方法,但是该方法还考虑到误差呈正态分布。

感谢任何帮助。谢谢

更新

为了测试数据上的误差是否呈正态分布,我做了一个Q-Q 图。这是我的结果:

自变量的 Q-Q 图 Q-Q plot of independent variable

因变量的 Q-Q 图

Q-Q plot of dependent variable

我可以假设我的独立变量是正态分布,但我不能为我的相关错误假设这一点。

问题 1:知道我的相关错误不是正态分布的,下一步应该做什么?

问题 2:使用 ODR 来解决我的问题是否可行?

最佳答案

是什么让您如此确定您的残差不是正态分布的?检查此假设的一种方法是使用 Q-Q plot 。从实用的角度来看,大多数人只会查看数据的散点图来查看残差是否呈正态分布。通常,违反此假设并不重要,但这取决于您想要做什么。

与普通最小二乘法(可能是您正在使用的)相反,使用正交距离回归并不能解决问题。您可能会在 stats.stackexchange.com 上获得更好的答案,特别是 this question可能对你有帮助。

关于python - x 和 y 上有误差的线性拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28004307/

相关文章:

python - os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir)) 是什么意思? Python

python - 使用 Python 从 netCDF 文件打印一个变量

python - 如何在缺少元素的情况下在 python 中进行线性回归

matlab - 使用 MATLAB 优化工具箱进行最小二乘圆拟合

objective-c - Objective-C 中的线性回归

vim 中的 android 远程 python 脚本

python - PyObject_GetItem 和 PyObject_SetItem 是否适用于 PyType_List 和 PyType_Dict 类型?

python-3.x - 随机梯度下降是 hell

python - 分段线性回归的优化

algorithm - 球面到点的线性最小二乘法拟合