我正在尝试使用 R 中的 HoltWinters 函数进行大量时间序列预测。为此,我使用 for 循环并在内部调用该函数,并将预测保存在 data.frame 中。
问题是 HoltWinters 函数的一些结果给出了错误,特别是优化错误:
Error en HoltWinters(TS[[i]]) : optimization failure
Run Code Online (Sandbox Code Playgroud)
这个错误打破了循环。
所以我需要的是“尝试”之类的东西:如果它可以使 HoltWinters 函数,则保存预测,否则保存错误。
下面的代码复制了这个问题:
data <- list()
data[[1]] <- rnorm(36)
data[[2]] <-
c(
24,24,28,24,28,22,18,20,19,22,28,28,28,26,24,
20,24,20,18,17,21,21,21,28,26,32,26,22,20,20,
20,22,24,24,20,26
)
data[[3]] <- rnorm(36)
TS <- list()
Outputs <- list()
for (i in 1:3) {
TS[[i]] <- ts(data[[i]], start = 1, frequency = 12)
Function <- HoltWinters(TS[[i]])
TSpredict <- predict(Function, n.ahead = 1)[1]
Outputs[[i]] <-
data.frame(LastReal = TS[[i]][length(TS[[i]])], Forecast = TSpredict)
}
Run Code Online (Sandbox Code Playgroud)
其中 i <- …
我正在使用 formattable 包直接从 R 制作一些报告,我需要使用 normalize_bar“样式”的列具有相同的宽度,以便可以比较列之间的值。
以下示例显示了具有非常相似的值(最小值和最大值相等)但宽度不同的两列,丢失了条形图的图形细节(“Test.number.1.score”和“test2_score”)。
library(formattable)
df <- data.frame(
id = 1:10,
name = c("Bob", "Ashley", "James", "David", "Jenny",
"Hans", "Leo", "John", "Emily", "Lee"),
age = c(28, 27, 30, 28, 29, 29, 27, 27, 31, 30),
grade = c("C", "A", "A", "C", "B", "B", "B", "A", "C", "C"),
Test.number.1.score = c(8.9, 9.5, 9.6, 8.9, 9.1, 9.3, 9.3, 9.9, 8.5, 8.6),
test2_score = c(9.1, 9.1, 9.2, 9.1, 8.9, 8.5, 9.9, 9.3, 9.1, 8.6),
final_score = c(9, 9.3, 9.4, 9, …Run Code Online (Sandbox Code Playgroud) r ×2
for-loop ×1
forecasting ×1
formattable ×1
holtwinters ×1
htmlwidgets ×1
optimization ×1
report ×1