![]() |
谦和的小熊猫 · AccessibilityService.R ...· 11 月前 · |
![]() |
绅士的大脸猫 · 如何使用 Bash 连接字符串-bash ...· 1 年前 · |
![]() |
风流倜傥的木瓜 · angular checkbox全选-掘金· 1 年前 · |
![]() |
豪情万千的豆腐 · 用于从特定字符串中提取数字的Mysql正则表 ...· 1 年前 · |
![]() |
会开车的山楂 · API函数ShellExecute与Shel ...· 1 年前 · |
我有跨两年的周周期(7天)的时间序列。我有58个价值观。开始为:
2017-08-05
,结束为:
2018-09-08
。我需要在R中处理这个时间序列-使用SARIMA模型等进行预测。但是我在R中定义周期/频率有问题。当我使用分解函数时,我得到错误:
"time series has no or less than 2 periods"
。Arima函数不能正常工作。详细信息如下。我可以用什么方式导入我的数据,以便以请求的频率在R中使用?
我的数据(小例子):
文件: sessions2.csv
date count
11.11.2017 55053
18.11.2017 45256
25.11.2017 59091
2.12.2017 50030
9.12.2017 41769
16.12.2017 63042
23.12.2017 51838
30.12.2017 47652
6.1.2018 18731
13.1.2018 54470
20.1.2018 22514
27.1.2018 63818
3.2.2018 51605
10.2.2018 26312
17.2.2018 11111
data1.csv仅包含值。例如:
53053
45256
59091
50045
41769
65042
51838
我在R中尝试过:
sessions1 <- scan("data1.csv")
sessionsTS <- ts(sessions1, frequency=52, start=decimal_date(ymd("2017-11-11")))
输出sessionsTS和错误:
> sessionsTS
Time Series:
Start = 2017.59178082192
End = 2018.68418328598
Frequency = 52
请用什么时间格式表示这些数字(开始、结束)?我可以用什么方法来转换成十进制日期呢?
> sessionsComponents <- decompose(sessionsTS)
Error in decompose(sessionsTS) :
time series has no or less than 2 periods
> arima(sessionsTS, order = c(0, 1, 0), seasonal = list(order = c(2, 0, 0), period = 52), xreg = NULL, include.mean = TRUE)
Error in optim(init[mask], armaCSS, method = optim.method, hessian = FALSE, :
initial value in 'vmmin' is not finite
> fit <- Arima(sessionsTS, order = c(0, 1, 0), seasonal = list(order = c(2, 0, 0), period = 52))
Error in optim(init[mask], armaCSS, method = optim.method, hessian = FALSE, :
initial value in 'vmmin' is not finite
> sarima(sessionsTS,1,1,0,2,0,0,52)
Error in sarima(sessionsTS, 1, 1, 0, 2, 0, 0, 52) :
unused arguments (0, 0, 52)
接下来,我尝试了:
dataSeries <- read.table("sessions2.csv", header=TRUE, sep = ";", row.names=1)
dataTS <- as.xts(dataSeries , frequency=52, start=decimal_date(ymd("2017-11-11")))
> sessionsComponents2 <- decompose(dataTS)
Error in decompose(dataTS) : time series has no or less than 2 periods
> model = Arima(dataTS, order=c(0,1,0), seasonal = c(2,0,0))
> model
Series: dataTS
ARIMA(0,1,0)
在这种情况下,Arima的使用没有季节性...
非常感谢您的帮助。
发布于 2019-05-31 02:23:54
您的数据是每周采样一次的,因此如果周期也是一周,则需要设置
frequency=1
,但在这一点上,没有必要进行季节性建模。有一个每年的周期是有意义的,就像您通过设置
frequency=52
所做的那样,但是您没有足够的周期来做任何估计,为此您将需要至少104个观察值(至少两个周期,正如错误消息所解释的那样)。
所以简而言之,除非你得到更多的数据,否则你不能做你想做的事情。
部分回答您关于
ts()
和时间格式的问题。如果你这样做:
tt <- read.table(text="
date count
11.11.2017 55053
18.11.2017 45256
25.11.2017 59091
2.12.2017 50030
9.12.2017 41769
16.12.2017 63042
23.12.2017 51838
30.12.2017 47652
6.1.2018 18731
13.1.2018 54470
20.1.2018 22514
27.1.2018 63818
3.2.2018 51605
10.2.2018 26312
17.2.2018 11111", header=TRUE)
tt$date <- as.Date(tt$date, format="%d.%m.%Y")
ts(tt$count, frequency=52, start=c(2017, 45))
![]() |
谦和的小熊猫 · AccessibilityService.RootInActiveWindow Property (Android.AccessibilityServices) | Microsoft Learn 11 月前 |
![]() |
绅士的大脸猫 · 如何使用 Bash 连接字符串-bash 字符串拼接 1 年前 |
![]() |
风流倜傥的木瓜 · angular checkbox全选-掘金 1 年前 |