我有两个向量 x 和 y,我想计算它们的滚动回归,例如 (x(1:4),y(1:4)), (x(2:5) 上的 a ),y(2:5)), ...
已经有这个功能了吗?我想到的最佳算法是 O(n),但对每个子数组应用单独的线性回归将是 O(n^2)。
我正在使用 Matlab 和 Python (numpy)。
最佳答案
不,没有任何函数可以进行滚动回归,返回您想要的所有统计数据,并且高效地完成。
这并不意味着您不能编写这样的函数。这样做意味着多次调用转换或过滤器等工具。这就是 Savitsky-Golay 工具的工作原理,它可以完成您想要的大部分工作。对每个回归系数进行一次调用。
使用更新和更新工具来使用/修改先前的回归估计不会像调用 conv 那样有效,因为当您使用 conv 进行工作时,您只需要分解线性系统一次。无论如何,没有必要进行更新,只要系列中的点均匀分布即可。这就是 Savitsky-Golay 起作用的原因。
关于python - 进行滚动线性回归的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15636796/