如何最好地使用Numpy/Scipy为一组不同的线性方程组找到最佳公共系数?

如何最好地使用Numpy/Scipy为一组不同的线性方程组找到最佳公共系数?,numpy,scipy,numpy-ndarray,scipy-optimize,Numpy,Scipy,Numpy Ndarray,Scipy Optimize,我有n(大约500万)组特定的(k,m,v,z)*参数来描述一些线性关系。我想找到使绝对值相加最小的最佳正a、b和c系数,如下所示: 我事先知道a、b和c的范围,所以我可以用它来加快速度。但是,我不知道如何正确地实现这个问题,以便最好地利用Numpy(或Scipy/etc) 我在考虑使用不同的a、b和c系数(基于一个步长)进行迭代检查,最后保持提供最小和的组合。但在Numpy中正确地实现这一点是另一回事 * (k,m,v为0或正,实际上为k,m,v,i,j,p) (z也可以是负数) 欢迎任何提

我有n(大约500万)组特定的(k,m,v,z)*参数来描述一些线性关系。我想找到使绝对值相加最小的最佳正a、b和c系数,如下所示:

我事先知道a、b和c的范围,所以我可以用它来加快速度。但是,我不知道如何正确地实现这个问题,以便最好地利用Numpy(或Scipy/etc)

我在考虑使用不同的a、b和c系数(基于一个步长)进行迭代检查,最后保持提供最小和的组合。但在Numpy中正确地实现这一点是另一回事

* (k,m,v为0或正,实际上为k,m,v,i,j,p) (z也可以是负数)


欢迎任何提示

要么我遗漏了什么,要么
a==b==c==0
是最佳选择。因此,
(a,b,c)
的正解一般不存在。您可以通过将分位数设置为
0.5
(k,m,v)
上的
0
分位数回归来明确验证这一点

import numpy as np
from statsmodels.regression.quantile_regression import QuantReg

x = np.random.rand(1000, 3)
a, b, c = QuantReg(np.zeros(x.shape[0]), x).fit(0.5).params

assert np.allclose([a, b, c], 0)

要么我遗漏了什么,要么
a==b==c==0
是最佳选择。因此,
(a,b,c)
的正解一般不存在。您可以通过将分位数设置为
0.5
(k,m,v)
上的
0
分位数回归来明确验证这一点

import numpy as np
from statsmodels.regression.quantile_regression import QuantReg

x = np.random.rand(1000, 3)
a, b, c = QuantReg(np.zeros(x.shape[0]), x).fit(0.5).params

assert np.allclose([a, b, c], 0)

是的,你是对的,我过分简化了。我更改了描述,添加了Z值,这些值是残差(没有附加系数),可以是正的,也可以是负的。在这种情况下,
QuantReg(残差,x)。fit(0.5)。params
应该可以工作,其中
x=(k,m,c)
。可能有更快的方法专门用于最小绝对差异回归,这听起来像你想要的。是的,你是对的,我过分简化了。我更改了描述,添加了Z值,这些值是残差(没有附加系数),可以是正的,也可以是负的。在这种情况下,
QuantReg(残差,x)。fit(0.5)。params
应该可以工作,其中
x=(k,m,c)
。可能有更快的方法专门用于最小绝对差异回归,这听起来像是您想要的。