【发布时间】:2017-09-03 18:58:57
【问题描述】:
我在strucchange 包中找到了带有breakpoints() 函数的断点。我的解释变量是纬度,响应变量是 beta 多样性值。
然后,我使用这些断点拟合回归线,并使用 segmented 包中的 segmented() 绘制它。分段提供断点估计,当我再次运行该函数时会发生变化。但是,断点函数的断点不会改变。我想,断点会随着更大的数据集而变化,就像我的一样。我需要报告这些断点。
如何稳定segmented() 函数的断点?
分段函数的断点不会随着少量数据而改变,正如您在此示例中看到的那样。
我使用了相同的示例代码。
例子:
set.seed(12)
xx <- 1:100
zz <- runif(100)
yc <- 2+1.5*pmax(xx-35,0)-1.5*pmax(xx-70,0)+15*pmax(zz-.5,0)+
rnorm(100,0,2)+1.5*pmax(xx-20,0)+15*pmax(zz-.2,0)+
rnorm(100,0,2)
plot(xx, yc)
# Seeking breakpoints
varbp <- breakpoints(yc ~ xx)
bp <- xx[varbp$breakpoints]
# Using segmented to fit regression line
modvars <- lm(yc ~ xx)
seg.var <- segmented(modvars, seg.Z = ~xx, psi = c(25,78))
summary(seg.var)
# Estimated Break-Point(s):
# Est. St.Err
# psi1.xx 25.694 1.240
# psi2.xx 72.786 2.086
# Plotando
plot(seg.var, add = T)
abline(v=25.694, col="green", lwd = 2)
abline(v = 72.786, col="green", lwd = 2)
【问题讨论】:
-
虽然我自己对
segmented的经验与您声称它不稳定的说法不谋而合。但是你的这个例子不支持它。我用不同的 psi 值运行了很多次,结果非常相似。
标签: r breakpoints