Reputation: 2949
I have time-series data as:
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))
The object ob
is hourly time-series object. Now, I want to do spline regression over it. I want to place knots at 7 A.M and 4 P.M.
Does the following statement in R
ensure this
ns(ob,knots = c(7,16)) # 7 corresponds to 7 AM and 16 corresponds to 4 PM
Also, how should I cross check that knots are placed at the said times?
Upvotes: 0
Views: 223
Reputation: 73265
You are sort of on the wrong track. It seems you want to regress observation on time, so you should really feed time index rather than observations ob
to ns
.
y <- as.vector(ob) ## observations
x <- 1:24 ## 24 hourse
Then consider a model:
y ~ ns(x, knots = c(7, 16))
As you can see, there is really no need to use "xts" object here.
ns
generates a design matrix. Have a check on
X <- ns(x, knots = c(7, 16))
You will see attributes:
#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"
The "knots" field gives you information on location of internal knots.
Upvotes: 2