python中的递归最小二乘?

时间:2015-03-26 20:00:19

标签: python regression least-squares

有人知道在Python中实现递归最小二乘函数的简单方法吗?

我想要一种快速方法,每次更新时,从输入信号中消除线性漂移([1 2 ... n],其中n是到目前为止的时间点数)。 RLS通常用于执行此操作,因为计算时间不会随着时间点的增加而增加。

2 个答案:

答案 0 :(得分:1)

数据t [],x []的最小二乘拟合由

给出
x = xbar + (C/V)*(t-tbar)
where
xbar = Sum{ x[i]} / N
tbar = sum{ t[i]} / N
V = Sum{ (t[i]-tbar)^2 } / N
C = Sum{ (x[i]-xbar)*(t[i]-tbar) } / N

您可以像这样逐步计算xbar,tbar,V和C:

首先

N = 0
xbar = tbar = C = V = 0

合并数据t,x:

N += 1
f = 1.0/N
dx = x - xbar
dt = t - tbar
xbar += f*dx
tbar += f*dt
V = (1.0-f)*(V + f*dt*dt)
C = (1.0-f)*(C + f*dx*dt)

请注意,在您拥有至少两个数据点之前,V将为零,因此没有线。另请注意,每个x []可以是一个向量;只要xbar和C也被计算为向量,相同的公式就可以工作。

答案 1 :(得分:1)

RLS算法在Python Padasip库中实现。您可以查看github上的代码:Padasip source codes

或者您可以直接使用该库。有关Padasip RLS算法的信息,请参阅documentation