Убедитесь, что узлы в сплайн-регрессии расположены в правильных положениях

#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"
  

Поле «узлы» предоставляет информацию о расположении внутренних узлов.