运行rwf()函数报错:x与y观测数不一致问题求助
问题诊断与解决
错误原因
rwf()(随机游走预测)仅接受单变量时间序列作为输入,但你的tsla_train是包含Open/High/Low/Close/Volume等多列数据的OHLCV数据框,而非单变量的收盘价序列。函数处理多列数据时无法匹配内部计算所需的维度,因此抛出x and y should have the same number of observations错误。
你用AAPL数据时能运行,大概率是当时无意中使用了单变量序列,而非完整的OHLCV数据框。
修正方案
将训练集和测试集都限定为单变量的收盘价序列,而非完整的多列数据框,具体修改如下:
修正后的完整代码
library(forecast) library(quantmod) # 获取TSLA数据 getSymbols("TSLA",from="2022-09-01", to="2023-06-16") chartSeries(TSLA, multi.col = TRUE, theme = "white") summary(TSLA) # 提取单变量收盘价序列 Tesla <- TSLA$TSLA.Close plot(Tesla) # 均值预测(原代码正常,保留) Teslamf <- meanf(Tesla,h=6) plot(Teslamf) Teslamf Teslamf$fitted Teslamf$residuals acf(Teslamf$residuals) checkresiduals(Teslamf) # 修正:基于单变量收盘价序列划分训练/测试集 tsla_train <- Tesla[1:189] tsla_test <- Tesla[190:196] tsla_test # 执行随机游走预测 tsla_train_forecast <- rwf(tsla_train, h=6) tsla_train_forecast # 计算测试集与预测值的差值 tsla_test - tsla_train_forecast$mean
关键修改点
- 原代码中
tsla_train=TSLA[1:189]提取的是多列数据框,改为tsla_train=Tesla[1:189]后,使用的是之前定义的单变量收盘价序列Tesla。 - 测试集
tsla_test同样改为基于Tesla单变量序列提取,确保与训练集的维度一致。
这样修改后,rwf()函数就能正确处理单变量时间序列,不会再出现维度不匹配的错误。
内容的提问来源于stack exchange,提问作者bm3414
相关产品推荐
相关产品推荐

