Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用R中的支持向量回归预测未来值_R_Time Series_Svm_Forecasting_Periodicity - Fatal编程技术网

如何使用R中的支持向量回归预测未来值

如何使用R中的支持向量回归预测未来值,r,time-series,svm,forecasting,periodicity,R,Time Series,Svm,Forecasting,Periodicity,我试图预测一个周期性位置的未来值,它依赖于时间(x~time),使用支持向量回归进行单变量预测。该模型在列车数据上拟合良好,但在测试数据上进行评估时,该模型会沿着直线运行。在下面的代码中,我使用50个观察值进行训练(红色周期曲线的前半部分,SVR完美拟合),50个观察值进行测试(红色曲线的后半部分,SVR无法预测) 库(lubridate) 图书馆(purrr) 图书馆(GG2) 图书馆(指标) 图书馆(插入符号) 图书馆(dplyr) 图书馆(e1071) #列车数据有50个观测值 #评估数据

我试图预测一个周期性位置的未来值,它依赖于时间(x~time),使用支持向量回归进行单变量预测。该模型在列车数据上拟合良好,但在测试数据上进行评估时,该模型会沿着直线运行。在下面的代码中,我使用50个观察值进行训练(红色周期曲线的前半部分,SVR完美拟合),50个观察值进行测试(红色曲线的后半部分,SVR无法预测)

库(lubridate)
图书馆(purrr)
图书馆(GG2)
图书馆(指标)
图书馆(插入符号)
图书馆(dplyr)
图书馆(e1071)
#列车数据有50个观测值
#评估数据有100个观测值(前半部分是列车数据)

func您可以使用
caretForecast
包。您可以使用
caret
支持的任何ML模型,包括SVM

要安装软件包:
devtools::install\u github(“Akai01/caretForecast”)

示例代码
库(caretForecast)
图书馆(预测)

培训数据错误:未能从GitHub安装“caretForecast”:(从警告转换而来)无法删除先前安装的包“rlang”@IsmailE.Dawoodjee。显然,无法安装包
rlang
。您能否尝试安装.packages(“rlang”,dependencies=TRUE)
?然后
devtools::install\u github(“Akai01/caretForecast”)
Ok软件包现在可以工作了。我设法做出了预测,并尝试了一些调整。
library(lubridate)
library(purrr)
library(ggplot2)
library(Metrics)
library(caret)
library(dplyr)
library(e1071)

# train_data has 50 observations
# eval_data has 100 observations (the first half is train_data)
 
func <- x ~ abs_time # position x dependent on time
svr_model <- svm(func, train_data, type = "eps-regression", 
                 kernel="radial", gamma=13, cost=10, epsilon = 0.01)

k_hat <- predict(svr_model, eval_data)
  
plot(x = eval_data$abs_time, y = eval_data$x, type = "l", col="red") # true position
points(x = eval_data$abs_time, y = k_hat, col = "blue") # SVR predicted position
library(caretForecast)
library(forecast)

training_data <- window(AirPassengers, end = c(1960, 1))

testing_data <- window(AirPassengers, start = c(1960, 2))


fit <- ARml(training_data, maxlag = 12, caret_method = "svmLinear",
            lambda = "auto")

forecast(fit, h = length(testing_data), level = NULL)-> fc

accuracy(fc, testing_data)


fc_plot(fc) + 
  autolayer(testing_data, series = "testing_data")

get_var_imp(fc)

get_var_imp(fc, plot = F)