我正在尝试通过 R 中的分段进行年度百分比变化分析。我已经知道我希望断点出现在哪里,但我似乎找不到一种方法来强制 Segmented 使用这些点。
我有 166 周的每周费率数据,并将它们分为 3 个周期。有两个断点将这三个周期划分为第 52 周和第 53 周以及第 115 周和第 116 周。
据我所知,断点的唯一输入是"psi ="参数。但是,这只允许我输入起点,Segmented 将从这些起点估计它认为最合适的断点。
相反,我已经知道我希望断点出现的位置,并且我希望在模型中设置这些断点。
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 处的预期断点。
有没有办法强制分段在每个断点处使用某些断点,或者是否有另一个包可以做到这一点?
也许你可以尝试使用:
weekly <- as.factor(cut(weekly$week, c(0, 53, 116))
levels(weekly$week)
0-53, 53-116, 116+
lm <- lm(Rate ~ Week, data = weekly)
现在每周$周是一个因素,其水平等于 0-53、53-116、116+
然后,您应该能够将这些级别添加到您的 lm 中。