Nothing
# These functions make the w, F, x and g matrices
#
#
# Author: srazbash
###############################################################################
makeTBATSFMatrix <- function(alpha, beta=NULL, small.phi=NULL, seasonal.periods=NULL, k.vector=NULL, gamma.bold.matrix=NULL, ar.coefs=NULL, ma.coefs=NULL) {
# 1. Alpha Row
F <- matrix(1, nrow = 1, ncol = 1)
if (!is.null(beta)) {
F <- cbind(F, matrix(small.phi, nrow = 1, ncol = 1))
}
if (!is.null(seasonal.periods)) {
tau <- sum(k.vector) * 2
zero.tau <- matrix(0, nrow = 1, ncol = tau)
F <- cbind(F, zero.tau)
}
if (!is.null(ar.coefs)) {
p <- length(ar.coefs)
ar.coefs <- matrix(ar.coefs, nrow = 1, ncol = p)
alpha.phi <- alpha * ar.coefs
F <- cbind(F, alpha.phi)
}
if (!is.null(ma.coefs)) {
q <- length(ma.coefs)
ma.coefs <- matrix(ma.coefs, nrow = 1, ncol = q)
alpha.theta <- alpha * ma.coefs
F <- cbind(F, alpha.theta)
}
# 2. Beta Row
if (!is.null(beta)) {
beta.row <- matrix(c(0, small.phi), nrow = 1, ncol = 2)
if (!is.null(seasonal.periods)) {
beta.row <- cbind(beta.row, zero.tau)
}
if (!is.null(ar.coefs)) {
beta.phi <- beta * ar.coefs
beta.row <- cbind(beta.row, beta.phi)
}
if (!is.null(ma.coefs)) {
beta.theta <- beta * ma.coefs
beta.row <- cbind(beta.row, beta.theta)
}
F <- rbind(F, beta.row)
}
# 3. Seasonal Row
if (!is.null(seasonal.periods)) {
seasonal.row <- t(zero.tau)
if (!is.null(beta)) {
seasonal.row <- cbind(seasonal.row, seasonal.row)
}
# Make the A matrix
A <- matrix(0, tau, tau)
last.pos <- 0
for (i in 1:length(k.vector)) {
if (seasonal.periods[i] != 2) {
C <- .Call("makeCIMatrix", k_s = as.integer(k.vector[i]), m_s = as.double(seasonal.periods[i]), PACKAGE = "forecast")
} else {
C <- matrix(0, 1, 1)
}
S <- .Call("makeSIMatrix", k_s = as.integer(k.vector[i]), m_s = as.double(seasonal.periods[i]), PACKAGE = "forecast")
# C <- matrix(0,k.vector[i],k.vector[i])
# for(j in 1:k.vector[i]) {
# l <- round((2*pi*j/seasonal.periods[i]), digits=15)
# C[j,j] <- cos(l)
# }
# S <- matrix(0,k.vector[i],k.vector[i])
# for(j in 1:k.vector[i]) {
# S[j,j] <- sin(2*pi*j/seasonal.periods[i])
# }
# print(C)
# print(S)
Ai <- .Call("makeAIMatrix", C_s = C, S_s = S, k_s = as.integer(k.vector[i]), PACKAGE = "forecast")
A[(last.pos + 1):(last.pos + (2 * k.vector[i])), (last.pos + 1):(last.pos + (2 * k.vector[i]))] <- Ai
last.pos <- last.pos + (2 * k.vector[i])
}
seasonal.row <- cbind(seasonal.row, A)
if (!is.null(ar.coefs)) {
B <- t(gamma.bold.matrix) %*% ar.coefs
seasonal.row <- cbind(seasonal.row, B)
}
if (!is.null(ma.coefs)) {
C <- t(gamma.bold.matrix) %*% ma.coefs
seasonal.row <- cbind(seasonal.row, C)
}
F <- rbind(F, seasonal.row)
}
# 4. AR() Rows
if (!is.null(ar.coefs)) {
# p <- length(ar.coefs)
ar.rows <- matrix(0, nrow = p, ncol = 1)
if (!is.null(beta)) {
ar.rows <- cbind(ar.rows, ar.rows)
}
if (!is.null(seasonal.periods)) {
ar.seasonal.zeros <- matrix(0, nrow = p, ncol = tau)
ar.rows <- cbind(ar.rows, ar.seasonal.zeros)
}
ident <- diag((p - 1))
ident <- cbind(ident, matrix(0, nrow = (p - 1), ncol = 1))
ar.part <- rbind(ar.coefs, ident)
ar.rows <- cbind(ar.rows, ar.part)
if (!is.null(ma.coefs)) {
ma.in.ar <- matrix(0, nrow = p, ncol = q)
ma.in.ar[1, ] <- ma.coefs
ar.rows <- cbind(ar.rows, ma.in.ar)
}
F <- rbind(F, ar.rows)
}
# 5. MA() Rows
if (!is.null(ma.coefs)) {
ma.rows <- matrix(0, nrow = q, ncol = 1)
if (!is.null(beta)) {
ma.rows <- cbind(ma.rows, ma.rows)
}
if (!is.null(seasonal.periods)) {
ma.seasonal <- matrix(0, nrow = q, ncol = tau)
ma.rows <- cbind(ma.rows, ma.seasonal)
}
if (!is.null(ar.coefs)) {
ar.in.ma <- matrix(0, nrow = q, ncol = p)
ma.rows <- cbind(ma.rows, ar.in.ma)
}
ident <- diag((q - 1))
ident <- cbind(ident, matrix(0, nrow = (q - 1), ncol = 1))
ma.part <- rbind(matrix(0, nrow = 1, ncol = q), ident)
ma.rows <- cbind(ma.rows, ma.part)
F <- rbind(F, ma.rows)
}
return(F)
}
# makeWMatrix <- function(small.phi=NULL, seasonal.periods=NULL, ar.coefs=NULL, ma.coefs=NULL) {
#
# the.list <- .Call("makeBATSWMatrix", smallPhi_s = small.phi, sPeriods_s = as.integer(seasonal.periods), arCoefs_s = ar.coefs, maCoefs_s = ma.coefs, PACKAGE = "forecast")
#
#
# return(the.list)
#
# }
# makeGMatrix <- function(alpha, beta=NULL, gamma.vector=NULL, seasonal.periods=NULL, p=0, q=0) {
# li <- .Call("makeBATSGMatrix", alpha, beta, gamma.vector, as.integer(seasonal.periods), as.integer(p), as.integer(q), PACKAGE="forecast")
#
# return(li)
# }
makeFMatrix <- function(alpha, beta=NULL, small.phi=NULL, seasonal.periods=NULL, gamma.bold.matrix=NULL, ar.coefs=NULL, ma.coefs=NULL) {
# 1. Alpha Row
F <- matrix(1, nrow = 1, ncol = 1)
if (!is.null(beta)) {
F <- cbind(F, matrix(small.phi, nrow = 1, ncol = 1))
}
if (!is.null(seasonal.periods)) {
tau <- sum(seasonal.periods)
zero.tau <- matrix(0, nrow = 1, ncol = tau)
F <- cbind(F, zero.tau)
}
if (!is.null(ar.coefs)) {
p <- length(ar.coefs)
ar.coefs <- matrix(ar.coefs, nrow = 1, ncol = p)
alpha.phi <- alpha * ar.coefs
F <- cbind(F, alpha.phi)
}
if (!is.null(ma.coefs)) {
q <- length(ma.coefs)
ma.coefs <- matrix(ma.coefs, nrow = 1, ncol = q)
alpha.theta <- alpha * ma.coefs
F <- cbind(F, alpha.theta)
}
# 2. Beta Row
if (!is.null(beta)) {
beta.row <- matrix(c(0, small.phi), nrow = 1, ncol = 2)
if (!is.null(seasonal.periods)) {
beta.row <- cbind(beta.row, zero.tau)
}
if (!is.null(ar.coefs)) {
beta.phi <- beta * ar.coefs
beta.row <- cbind(beta.row, beta.phi)
}
if (!is.null(ma.coefs)) {
beta.theta <- beta * ma.coefs
beta.row <- cbind(beta.row, beta.theta)
}
F <- rbind(F, beta.row)
}
# 3. Seasonal Row
if (!is.null(seasonal.periods)) {
seasonal.row <- t(zero.tau)
if (!is.null(beta)) {
seasonal.row <- cbind(seasonal.row, seasonal.row)
}
# Make the A matrix
for (i in seasonal.periods) {
if (i == seasonal.periods[1]) {
a.row.one <- matrix(0, nrow = 1, ncol = i)
a.row.one[i] <- 1
a.row.two <- cbind(diag((i - 1)), matrix(0, nrow = (i - 1), ncol = 1))
A <- rbind(a.row.one, a.row.two)
} else {
old.A.rows <- dim(A)[1]
old.A.columns <- dim(A)[2]
a.row.one <- matrix(0, nrow = 1, ncol = i)
a.row.one[i] <- 1
a.row.two <- cbind(diag((i - 1)), matrix(0, nrow = (i - 1), ncol = 1))
Ai <- rbind(a.row.one, a.row.two)
A <- rbind(A, matrix(0, nrow = dim(Ai)[1], ncol = old.A.columns))
A <- cbind(A, matrix(0, nrow = dim(A)[1], ncol = dim(Ai)[2]))
A[((old.A.rows + 1):(old.A.rows + dim(Ai)[1])), ((old.A.columns + 1):(old.A.columns + dim(Ai)[2]))] <- Ai
}
}
seasonal.row <- cbind(seasonal.row, A)
if (!is.null(ar.coefs)) {
B <- t(gamma.bold.matrix) %*% ar.coefs
seasonal.row <- cbind(seasonal.row, B)
}
if (!is.null(ma.coefs)) {
C <- t(gamma.bold.matrix) %*% ma.coefs
seasonal.row <- cbind(seasonal.row, C)
}
F <- rbind(F, seasonal.row)
}
# 4. AR() Rows
if (!is.null(ar.coefs)) {
# p <- length(ar.coefs)
ar.rows <- matrix(0, nrow = p, ncol = 1)
if (!is.null(beta)) {
ar.rows <- cbind(ar.rows, ar.rows)
}
if (!is.null(seasonal.periods)) {
ar.seasonal.zeros <- matrix(0, nrow = p, ncol = tau)
ar.rows <- cbind(ar.rows, ar.seasonal.zeros)
}
ident <- diag((p - 1))
ident <- cbind(ident, matrix(0, nrow = (p - 1), ncol = 1))
ar.part <- rbind(ar.coefs, ident)
ar.rows <- cbind(ar.rows, ar.part)
if (!is.null(ma.coefs)) {
ma.in.ar <- matrix(0, nrow = p, ncol = q)
ma.in.ar[1, ] <- ma.coefs
ar.rows <- cbind(ar.rows, ma.in.ar)
}
F <- rbind(F, ar.rows)
}
# 5. MA() Rows
if (!is.null(ma.coefs)) {
ma.rows <- matrix(0, nrow = q, ncol = 1)
if (!is.null(beta)) {
ma.rows <- cbind(ma.rows, ma.rows)
}
if (!is.null(seasonal.periods)) {
ma.seasonal <- matrix(0, nrow = q, ncol = tau)
ma.rows <- cbind(ma.rows, ma.seasonal)
}
if (!is.null(ar.coefs)) {
ar.in.ma <- matrix(0, nrow = q, ncol = p)
ma.rows <- cbind(ma.rows, ar.in.ma)
}
ident <- diag((q - 1))
ident <- cbind(ident, matrix(0, nrow = (q - 1), ncol = 1))
ma.part <- rbind(matrix(0, nrow = 1, ncol = q), ident)
ma.rows <- cbind(ma.rows, ma.part)
F <- rbind(F, ma.rows)
}
return(F)
}
makeXMatrix <- function(l, b=NULL, s.vector=NULL, d.vector=NULL, epsilon.vector=NULL) {
x.transpose <- matrix(l, nrow = 1, ncol = 1)
if (!is.null(b)) {
x.transpose <- cbind(x.transpose, matrix(b, nrow = 1, ncol = 1))
}
if (!is.null(s.vector)) {
x.transpose <- cbind(x.transpose, matrix(s.vector, nrow = 1, ncol = length(s.vector)))
}
if (!is.null(d.vector)) {
x.transpose <- cbind(x.transpose, matrix(d.vector, nrow = 1, ncol = length(d.vector)))
}
if (!is.null(epsilon.vector)) {
x.transpose <- cbind(x.transpose, matrix(epsilon.vector, nrow = 1, ncol = length(epsilon.vector)))
}
x <- t(x.transpose)
return(list(x = x, x.transpose = x.transpose))
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.