使用 R 的 changepoint 包检测均值和方差的多个变化点
Detecting multiple change points in mean and variance using R's changepoint package
我正在尝试使用 "changepoint" 程序包识别股票价格每日时间序列中的变化点。该软件包包含不同的方法来检测变化点,例如 "Binary segmentation"、"segmentation neighborhood" 和 "Pruned Exact Linear Time (PELT)",这对于稳健性检查很有用。
我使用的数据有 4170 个条目,从 2000 年 1 月 3 日开始
Prices.d <- ts(EM_indices[, 2], start = c(2000,01,03), freq = 365)
首先,我尝试使用 PELT 方法通过以下代码检测均值中的变化点:
> cpt.mean(Prices.d, pen.value = c(4,1500),penalty = "CROPS",method = "PELT")
结果应该指出了变化点的位置,但尚未报告,这是我在 returns 中得到的:
您可以看到 changepoints 位置是空的,因此通过添加 Class 的参数和参数估计来调整代码:
Change <- cpt.mean(Prices.d, pen.value = c(4,1500),penalty = "CROPS",method = "PELT", class=TRUE, param.estimates=TRUE)
然而,结果中仍然没有报告变化点位置,我应该怎么做才能解决这个问题?
当penalty设置为'penalty = "CROPS"'时,则cpt.mean()returns一个范围的分割。这就是为什么您在附加的图像中看不到变化点位置的原因。要访问这些,您可以调用 attributes(Change)$cpts.full。这将 return 一个变化点位置矩阵。
或者,如果您设置 'class = F',您可以使用 Change$changepoints 获取分段。
我正在尝试使用 "changepoint" 程序包识别股票价格每日时间序列中的变化点。该软件包包含不同的方法来检测变化点,例如 "Binary segmentation"、"segmentation neighborhood" 和 "Pruned Exact Linear Time (PELT)",这对于稳健性检查很有用。
我使用的数据有 4170 个条目,从 2000 年 1 月 3 日开始
Prices.d <- ts(EM_indices[, 2], start = c(2000,01,03), freq = 365)
首先,我尝试使用 PELT 方法通过以下代码检测均值中的变化点:
> cpt.mean(Prices.d, pen.value = c(4,1500),penalty = "CROPS",method = "PELT")
结果应该指出了变化点的位置,但尚未报告,这是我在 returns 中得到的:
您可以看到 changepoints 位置是空的,因此通过添加 Class 的参数和参数估计来调整代码:
Change <- cpt.mean(Prices.d, pen.value = c(4,1500),penalty = "CROPS",method = "PELT", class=TRUE, param.estimates=TRUE)
然而,结果中仍然没有报告变化点位置,我应该怎么做才能解决这个问题?
当penalty设置为'penalty = "CROPS"'时,则cpt.mean()returns一个范围的分割。这就是为什么您在附加的图像中看不到变化点位置的原因。要访问这些,您可以调用 attributes(Change)$cpts.full。这将 return 一个变化点位置矩阵。
或者,如果您设置 'class = F',您可以使用 Change$changepoints 获取分段。