Creepy.trend <- function(vector, k, parallel = FALSE) {
if (parallel) {
Clust <- makeCluster (detectCores(), type = "PSOCK")
registerDoParallel(Clust)
clusterCall(Clust, function(){library(RcppArmadillo)})
table <- data.frame(matrix(nrow = length(vector), ncol = (length(vector) - k + 1)))
X <- 1:length(vector)
smoothed.values <- c()
table <- foreach (i = 1:(length(vector) - k + 1), .combine = data.frame) %dopar% {
model <- fastLm(vector[i:(k + i - 1)], X[i:(k + i - 1)])
begin <- sample(NA, i - 1, replace = TRUE)
end <- sample(NA, length(vector) - k - length(begin), replace = TRUE)
table <- c(begin, model$fitted.values, end)
}
smoothed.values <- apply(table, 1, mean, na.rm = TRUE)
smoothed.values <- apply(table, 1, mean, na.rm = TRUE)
stopCluster(Clust)
gc(verbose = F)
return(smoothed.values)
}
else {
table <- data.frame()
X <- 1:length(vector)
smoothed.values <- c()
for (i in 1:(length(vector) - k + 1)) {
model <- fastLm(vector[i:(k + i - 1)], X[i:(k + i - 1)])
table[i:(i+k-1), i] <- model$fitted.values
}
smoothed.values <- apply(table, 1, mean, na.rm = TRUE)
return(smoothed.values)
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.