#r #time-series #regression #spline #cubic-spline
#r #временные ряды #регрессия #сплайн #кубический сплайн
Вопрос:
У меня есть данные временных рядов в виде:
library(xts)
library(splines)
set.seed(123)
time <- seq(as.POSIXct("2015-09-01"),as.POSIXct("2015-09-01 23:59:59"),by="hour")
ob <- xts(rnorm(length(time),150,5),time))
Объект ob
является объектом часового временного ряда. Теперь я хочу выполнить сплайн-регрессию над ним. Я хочу завязывать узлы в 7 утра и 4 вечера.
Гарантирует ли это следующее утверждение в R
ns(ob,knots = c(7,16)) # 7 corresponds to 7 AM and 16 corresponds to 4 PM
Кроме того, как я должен перепроверить, что узлы размещаются в указанное время?
Ответ №1:
Вы вроде как на неверном пути. Кажется, вы хотите регрессировать наблюдение вовремя, поэтому вам действительно следует ob
вводить ns
временной индекс, а не наблюдения.
y <- as.vector(ob) ## observations
x <- 1:24 ## 24 hourse
Затем рассмотрим модель:
y ~ ns(x, knots = c(7, 16))
Как вы можете видеть, здесь действительно нет необходимости использовать объект «xts».
ns
генерирует матрицу проектирования. Проверьте на
X <- ns(x, knots = c(7, 16))
Вы увидите атрибуты:
#attr(,"degree")
#[1] 3
#attr(,"knots")
#[1] 7 16
#attr(,"Boundary.knots")
#[1] 1 24
#attr(,"intercept")
#[1] FALSE
#attr(,"class")
#[1] "ns" "basis" "matrix"
Поле «узлы» предоставляет информацию о расположении внутренних узлов.