R中的predict()方法给出了不一致的结果

R中的predict()方法给出了不一致的结果,r,svm,R,Svm,我正在使用kernlab的KSVM来预测未来的值。生成模型后,predict()方法用于获取未来值 代码如下所示: data=read.csv('D:\\MyData.csv') forecastInterval=2000 col=2 dataLength=length(data[,1]) plot(data[,col],xlim=c(0,8000),ylim=c(-200,200), type='l') svmX=seq(1,dataLength,1) regm <- ksvm(svm

我正在使用
kernlab
的KSVM来预测未来的值。生成模型后,
predict()
方法用于获取未来值

代码如下所示:

data=read.csv('D:\\MyData.csv')
forecastInterval=2000
col=2

dataLength=length(data[,1])
plot(data[,col],xlim=c(0,8000),ylim=c(-200,200), type='l')
svmX=seq(1,dataLength,1)
regm <- ksvm(svmX,data[,col],type='eps- bsvr',kernel='anovadot',epsilon=0.5,kpar="automatic",cross=3)
newSvmX=seq(dataLength+1, dataLength+forecastInterval,1)
predict=predict(regm,newdata=data.frame(newSvmX))

lines(newSvmX,predict,col="green")
lines(seq(1,dataLength+forecastInterval,1),predict(regm,seq(1,dataLength+forecastInterval,1)), col='blue')
虽然实际数据的最后一个值为
8.462130
,但由于这一点,实际数据和预测值的图表出现了中断

另一个问题是,当我使用

lines(newSvmX,predict,col="green")
然后,该“绿色”线与实际数据断开。如果我使用:

lines(seq(1,dataLength+forecastInterval,1),predict(regm,seq(1,dataLength+forecastInterval,1)), col='blue')
那么这条“蓝色”线与原始数据是连续的

请帮助我解决这个问题,即为什么
predict()
方法给出的值与原始数据不连续,以及为什么在相同数据上运行的两个“line()”方法生成不同的图形

附件是该图的屏幕截图。 regm不同预测范围的变量“>


谢谢

行不匹配,因为您对
x
-值使用了不同的值。我说不出来,因为您没有提供源数据,但可能您生成的外推值超出了数据集的范围--这总是一个危险的举动。顺便说一句,不要命名变量(
predict
)与函数相同。这会导致麻烦。@Carl Witthoft:谢谢你的回答。那么这是否意味着
x
-值的起点必须始终从1开始,而不是黑色图形的结尾,因为两个图形(蓝色和绿色)都是从1开始的正在对相同范围进行预测,但其预测值不同。蓝色图形的预测似乎更一致。但是,如果训练数据非常大(如我的情况),则从1中获取值会导致
ksvm()
方法需要很长的计算时间。请建议在这种情况下使用哪种方法进行预测(蓝色图形方法或绿色方法)。我不知道-您需要确保访问的是
预测变量的正确组件(.我不知道由
kvsm
生成的
regm
的类别,但很可能您需要指定要在绿线plot调用中绘制的
predict
的哪个列表元素或矩阵组件。
lines(seq(1,dataLength+forecastInterval,1),predict(regm,seq(1,dataLength+forecastInterval,1)), col='blue')