r语言 - 时间序列建模:"train"具有方法"nnet"的函数未给出令人满意的结果



我试图在 R 中使用 nnet 作为每月消耗数据的方法来实现train函数的使用。但是输出(预测值)都显示等于某个平均值。

我有 24 个时间点的数据

(每个时间点代表一个月的数据),我使用前 20 个时间点进行训练,其余 4 个用于测试模型。这是我的代码:

 a<-read.csv("...",header=TRUE)
    tem<-a[,5]
    hum<-a[,4]
    con<- a[,3]
    require(quantmod) 
    require(nnet)
    require(caret)
    y<-con
    plot(con,type="l")
    dat <- data.frame( y, x1=tem, x2=hum)
    names(dat) <- c('y','x1','x2')
    #Fit model
    model <- train(y ~ x1+x2, 
                   dat[1:20,], 
                   method='nnet',
                   linout=TRUE, 
                   trace = FALSE)
    ps <- predict(model2, dat[21:24,])
plot(1:24,y,type="l",col = 2)
lines(1:24,c(y[1:20],ps), col=3,type="o")
legend(5, 70, c("y", "pred"), cex=1.5, fill=2:3)

关于如何替代解决此问题的任何建议?有没有办法更有效地使用神经网络?或者还有其他更好的方法吗?

问题可能是数据不足。 对于任何机器学习问题,24个数据点都相当低。如果数据的曲线/形状/表面是例如一个简单的正弦波,那么 24 就足够了。
但对于任何更复杂的函数,数据越多越好。你能准确地建模,例如 sin^2 x * cos^0.3 x/sinh x 只有 6 个数据点吗?否,因为可用数据没有捕获足够的细节。
如果可以获取每日数据,请改用它。

最新更新