2017-08-09 37 views
1

我已经绘制在R改为点作为检索绘制changepoints

values <- c(1, 2, 3, 4, 5, 6, 7, 8, 3, 1, 2, 3) 
values.ts = ts(values, frequency = 12, start = c(2017, 1)) 
chpoints = cpt.mean(values.ts, method="PELT") 
cpts(chpoints) 
plot(chpoints) 

和绘制图形的坐标

enter image description here

cpts(chpoints)返回[1] 4 8

问题1:什么是[1] 4 8

问题2:如何获得绘制的变化点坐标,红色线的x,y坐标?

回答

0

问题1:cpts(chpoints)返回段末端位置的向量。以下示例:

​​

将添加两条垂直线,指示具有“稳定”平均值的段。没有。的细分 - 1个变化点([1] 4 8),因为最后的“变化点”是您时间系列的最后一个值。

问题2:日期坐标的第i个破发可以发现:

index(values.ts)[cpts(chpoints)[i]] 

'稳定' 的平均值被存储在这里:

param.est(chpoints) # 2.50 6.50 2.25 

我还是不明白为什么会出现是变化点之后的空白(红线不包括整个时间序列)。但是,如果我们手动计算平均值:

mean(values.ts[1:cpts(chpoints)[1]]) # 
mean(values.ts[(cpts(chpoints)[1]+1):cpts(chpoints)[2]]) 
mean(values.ts[(cpts(chpoints)[2]+1):length(values.ts)]) 

我们收到2.50 6.50 2.25如上。

+0

两件事。 1-'index(values.ts)[cpts(chpoints)[1]]'返回2017.25,2返回2017.583。这两个值都不是我的x坐标的一部分。 2-如果我将我的值乘以y轴,那么“cpts(chpoints)”返回的值是什么,以及为什么'plot(chpoints))不绘制红线? – bjan

+0

1-值2017.25和2017.583是您的x坐标的一部分。这就是时间在'ts'功能中的时间编码。检查这个:'(1:12)*(1:12)'。 2017年的第一个月是2017.0833。 – Lstat

+0

2 - 'cpts(chpoints)'只能表示中断发生时的日期。 4号对应2017.25。如果您将所有y值乘以任何非负值,这不会发生变化。红线应位于这些中断之间。但是,正如我在答复中写到的,我不明白为什么它不涵盖整个部分。 – Lstat