R Сегментированный: есть ли способ заставить точки останова? - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь провести ежегодный анализ процентных изменений через Segmented в 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.

Есть ли способ принудительно сегментировать киспользовать определенные точки останова на каждом или есть другой пакет, который может это сделать?

1 Ответ

0 голосов
/ 05 февраля 2019

Может быть, вы можете попробовать использовать:

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 +

Вам следует тогдабыть в состоянии добавить эти уровни в свой лм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...