Почему сегментированные и прогнозные пакеты дают разные результаты в R? - PullRequest
0 голосов
/ 31 марта 2020

Предположим, у нас есть кадр данных следующим образом:

set.seed(1)

df <- data.frame(
  x = seq(1,100,1),
  y = c(sample(1:20, 50, replace = T), sample(70:100, 50, replace = T))
)

Моя цель - создать модель с использованием кусочно-линейной регрессии. Следовательно, я использовал 2 разных пакета. Как видите, результаты будут разными.

########################################################################

library(segmented)
model1 <- segmented(lm(y ~ x, data = df), seg.Z = ~x, psi = list(x = 50))
predict(model1, data.frame(x = c(101:105)))
#111.5266 112.8705 114.2143 115.5582 116.9021 

#########################################################################

library(forecast)

df2 <- ts(df$y, start = 1, frequency = 1)
t <- time(df2)
t_knot <- 50
tb <- ts(pmax(0, t - t_knot), start = 1)

model2 <- tslm(df2 ~ t + tb)
t_new <- t[length(t)] + seq(5) #I feel like problem is here
tb_new <- tb[length(tb)] + seq(5) #or here

newdata <- cbind(t=t_new, tb=tb_new) %>% as.data.frame()
forecast(model2, newdata = newdata)$mean
#105.9948 107.1645 108.3343 109.5040 110.6737

Почему два пакета дают эти результаты? Спасибо.

...