1

我试图在segmented包的帮助下对我的数据进行 3 件回归,但我有点迷失了......

首先:这是一个可重现的例子:

y=c(520.0000, 620.0000, 653.3333, 853.3333, 1220.0000, 1553.3333, 1586.6667, 1586.6667, 1586.6667, 1586.6667, 1586.6667)
x=c(33320, 41020, 49020, 56920, 69220, 76320, 86320, 95420, 103720, 111520, 120320)
plot(y~x)
out=lm(y~x)

我的数据有 2 个可见断点:

在此处输入图像描述

- 首先我尝试用 K=2 指定已知数量的断点:

mdl2=segmented(out, seg.Z =~x, psi=NA, control=seg.control(K=2,n.boot=0,it.max=500,stop.if.error=FALSE,display=T))
plot(mdl2)
points(y~x)

这给了我 1 个断点结果: 在此处输入图像描述

- 但是如果我设置2<K<8(所以一个错误的值......),我能够检测到正确数量的断点:

在此处输入图像描述

- 最后一点让我感到困惑:

如果我设置 K=4,display=T 选项会显示带有 3 个断点的结果,但在函数输出中我仍然有两个断点...

在此处输入图像描述

****** 2016 年 9 月 19 日的编辑******

我也尝试psi直接指定,因为我在断点位置上有一些先验(但这不是我的目标),结果仍然很糟糕segmented......

对于一些回归,我必须在算法成功之前多次运行该函数以结束一个解决方案。此外,提出的解决方案通常存在重现性问题......

有谁知道稳健估计这些断点的方法?看起来我的数据并不难拟合,不是吗?

4

0 回答 0