【问题标题】:Which R /Python package for piece wise segmented regression with automated breakpoint detection哪个 R /Python 包用于分段分段回归和自动断点检测
【发布时间】:2020-08-24 06:32:53
【问题描述】:

我正在寻找可以通过自动断点检测进行分段回归、报告线性段并以自动方式找出线性段的系数(斜率/截距)的 R/Python 包。我更喜欢 R 包,但 Python 2.7/3.X 也可以。我的数据看起来类似于图片,但有数百个这样的数据集。 谢谢

【问题讨论】:

标签: python r regression piecewise


【解决方案1】:

有一些关于更改点包herehere 的概述。尽管segmented 包功能强大且被广泛使用,但即使“被告知”,它也不会模拟拦截更改,因此请小心。

但是,您的数据似乎非常有规律,以至于检测变化点不需要推理包,因此也不需要检测斜率。变化点只是 y 大于前一个 y 的 x 值。如果 x 是您的 x 坐标,y 是您的 y 坐标:

cps = x[which(y > dplyr::lag(y, 1))]

为了说明,我模拟了一些看起来像你的数据,并用红线在顶部绘制了变化点:

# Simulate data
thresh = 6.95
x = seq(0, 1.5, by = 0.01)
y = c(6.98)  # starting
for (i in seq(length.out = length(x) - 1)) {
  y = c(y, y[i] -0.005)
  if (y[i+1] < thresh) {
    y[i+1] = y[i+1] + rnorm(1, 0.04, 0.01)
  }
}

# Detect change points and plot them
cps = x[which(y > dplyr::lag(y, 1))]
plot(x, y, type = "l")
abline(v = cps, col = "red")

现在检测斜率只需遍历变化点并计算每个段的斜率。

【讨论】:

    【解决方案2】:

    piecewise-regression package in Pythonsegmented package in R 执行您的问题,拟合线性模型并找到断点位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-05
      • 2023-04-07
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2018-02-15
      • 1970-01-01
      相关资源
      最近更新 更多