R Segmented:有没有办法强制断点?

时间:2019-02-05 14:25:45

标签: r

我正在尝试通过Segmented in R进行年度百分比变化分析。我已经知道我要在哪里出现断点,但是我似乎找不到找到一种方法来强迫Segmented使用这些点。

我有166周的每周费率数据,并将其分为3个周期。有两个断点将这三个时段划分为52和53周以及115和116周。

据我所知,断点的唯一输入是“ psi =”参数。但是,这只能让我输入起点,根据该起点,分段可以估算出最合适的断点。

相反,我已经知道断点出现在什么地方,并且我希望在模型中设置这些断点。

weekly <- read.csv("data.csv")

lm <- lm(Rate ~ Week, data = weekly)
summary(lm)

segment <- segmented(lm,
                     seg.Z = ~ Week,
                     psi = list(Week = c(53, 116)))

fitted <- fitted(segment)
model <- data.frame(Week = weekly$Week, Rate = fitted)

这最终给了我一个模型,该模型适合发现的分段估计值,而不是适合于53和116的预期断点。

是否有一种方法可以强制分段使用每个断点,或者是否有另一个软件包可以做到这一点?

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用:

weekly <- as.factor(cut(weekly$week, c(0, 53, 116))

levels(weekly$week) 
0-53, 53-116, 116+

lm <- lm(Rate ~ Week, data = weekly)

现在每周$ week是一个因素,其水平将等于0-53、53-116、116 +

然后您应该能够将这些级别添加到lm中。