我目前有一个大型数据集,我需要为此计算分段回归(或以某种类似的方式拟合分段线性函数)。但是,我既有大量的数据集,也有大量的数据集。
目前我有以下方法:
假设数据点x k 位于段j内,那么我可以从x k 创建一个向量
(S <子> 1 子>,S <子> 2 子> -s <子> 1 子>,S <子> 3 子> -s <子> 2 < /子>,...,X <子>ķ子> -s <子> J-1 子>,0,0,...)
要对数据点进行分段回归,我可以对每个向量进行正态线性回归。
然而,我目前的估计显示,如果我以这种方式定义问题,我将得到大约600.000个向量,每个向量大约有2.000个组件。我还没有基准测试,但我不认为我的电脑能够在任何可接受的时间内计算出这么大的回归问题。
有没有更好的方法来计算这种回归问题?一个想法是可能使用某种分层方法,即通过组合多个段来计算一个回归问题,以便我可以确定该组的起点和终点。然后为这组段计算单个分段回归。但是,我无法弄清楚如何计算这组段的回归,以便端点匹配(我只能通过修复拦截而不是两者来匹配起点或终点。)
我的另一个想法是计算每个细分的个体回归,然后仅使用该细分的斜率。但是,使用这种方法,错误可能会开始累积,我无法控制这种错误累积。
另一个想法是我可以为每个段进行单独回归,但将截距固定到前一个段的端点。但是,我仍然不确定,如果我可能通过这种方式得到某种错误积累。
澄清
不确定问题的其余部分是否清楚。我知道细分的起点和终点。最重要的部分是,我必须让每个线段在段边界与下一个段相交。
修改
也许另一个可能有帮助的事实。所有点都有不同的x值。
答案 0 :(得分:2)
我会将点分组为矩形网格区域
根据他们的立场。因此,您可以在更小的数据集上处理此任务,然后在完成所有操作后将结果合并在一起。
我会像这样处理每个小组:
仅采用最常出现的角度
他们的计数决定了组
对这些角度进行回归/直线拟合
看到这个Answer它做了非常相似(只是单行)
计算交叉点
线段之间的以获取分段折线的端点以及连接信息(加入最近的端点)
[edit1]
您知道所有细分x
的边(x0,x1,...)
坐标,因此只计算细分边缘附近点的平均y
坐标(灰色区域,绿色点),并获得细分线端点(蓝点)。粗略的,这是不合适或回归,因为丢弃所有其他点,因此它导致更大的错误(除非协调的段x
对应于回归线...)但是没有办法解决它的约束你有解决方案(至少我没有看到)。
因为如果您对段数据使用回归,那么您无法将其连接到其他段,如果您尝试合并它们,那么您得到的结果几乎与此相同:
灰色区域的大小决定输出......所以稍微玩一下......