R 中时间序列中二元运算符的非数字参数

问题描述 投票:0回答:1

我有这个时间序列对象

> dftsEtab
Time Series:
Start = c(1, 1) 
End = c(2, 13) 
Frequency = 13 
 [1] 152 118  80  74  84  92  88  78  66  72  54  50  49  41  22  17  12  15  15   8
[21]   6   8  13  15   6   8

当我运行 holtwinters 函数时,它出现错误

> HWEtab <- HoltWinters(dftsEtab)
Error in `-.default`(x, trend) : non-numeric argument to binary operator

我之前用过这个函数,时间序列非常相似,没有问题

> dfts
Time Series:
Start = c(1, 1) 
End = c(2, 13) 
Frequency = 13 
 [1] 21633 21756 21343 21362 21469 22197 21757 21066 20743 20649 20123 18908 17512
[14] 17249 15672 14709 14648 14642 14296 13931 13539 13481 14180 13399 12221 11861
> HW1 <- HoltWinters(dfts)
r time-series holtwinters
1个回答
0
投票

dftsEtab
具有非数值。要复制此问题,请使用以下数值向量
d

d <- c(152, 118, 80, 74, 84, 92, 88, 78, 66, 72, 54, 50, 49, 41, 22, 
17, 12, 15, 15, 8, 6, 8, 13, 15, 6, 8)

并运行以下代码:

char_d = ts(as.character(d),c(1,1),c(2,13),frequency = 13)
HoltWinters(char_d)

输出

Error in `-.default`(x, trend) : non-numeric argument to binary operator

如果您将输入向量修复为数字,如上面的

d
,那么您应该不会有问题。

d_num = ts(d, c(1,1),c(2,13),13)
HoltWinters(d_num)

输出:

Holt-Winters exponential smoothing with trend and additive seasonal component.

Call:
HoltWinters(x = d_num)

Smoothing parameters:
 alpha: 0.9454705
 beta : 0
 gamma: 0.1

Coefficients:
           [,1]
a     1.8889398
b    -5.1274725
s1    3.9396053
s2   -9.3188186
s3   -9.8403320
s4  -10.3013657
s5   -4.2929491
s6   -0.9099720
s7    1.7095990
s8    6.7604531
s9    2.2201980
s10  13.0024964
s11  -0.1168233
s12   1.0576862
s13   6.0137687
© www.soinside.com 2019 - 2024. All rights reserved.