R使用dowjones数据集调用accuracy函数报非数值参数错误原因
报错原因解析
核心问题是你调用forecast::accuracy()函数时参数传入顺序颠倒,该函数的标准调用规则为:
- 第一个参数:
rwf()/snaive()等预测函数返回的forecast类对象 - 第二个参数:测试集的实际观测时间序列
你在dowjones的代码里写的是accuracy(dj60.od, dj60.rwf.drift),把测试集dj60.od放在了第一个参数位,预测对象放在了第二个参数位,不符合函数的参数要求。而visnights的示例代码里accuracy(snaive_vn_Melbourne_train1, vn_Melbourne_test1)的参数顺序是正确的,所以可以正常运行。
报错逻辑说明
当你把普通时间序列对象传入accuracy()的第一个参数位时,函数内部会按照处理forecast类对象的逻辑,尝试提取该对象内的预测值、残差等特定字段,提取结果不符合数值向量的预期,在做误差计算的减法运算时,就会抛出non-numeric argument to binary operator的错误。
修复方案
将dowjones代码中的accuracy调用行修改为如下内容即可正常运行:
accuracy(dj60.rwf.drift, dj60.od)
内容的提问来源于stack exchange,提问作者Englishman Bob
相关产品推荐
相关产品推荐

