Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ts对象不适用于R中的日常数据-非常混乱_R_Timestamp_Time Series_Forecast - Fatal编程技术网

ts对象不适用于R中的日常数据-非常混乱

ts对象不适用于R中的日常数据-非常混乱,r,timestamp,time-series,forecast,R,Timestamp,Time Series,Forecast,我花了一天的时间来寻找这个问题的答案,但仍然无法弄清楚它是如何工作的(对R来说相对较新) 数据: 我有一家商店的每日收入。开始日期为2017年11月,结束日期为2020年2月。(这不是每年1月至12月的典型数据)。没有遗漏价值,每天的销售额都会被记录下来。共有两列:日期(正确的日期格式)和收入(数字格式) 我正试图为我的销售数据建立一个时间序列预测模型。一个先决条件是,我需要将数据转换为ts对象。我在网上看到的所有帖子都涉及年度或月度数据,但我还没有看到有人提到每日数据 我试图以这种方式将数据转

我花了一天的时间来寻找这个问题的答案,但仍然无法弄清楚它是如何工作的(对R来说相对较新)

数据: 我有一家商店的每日收入。开始日期为2017年11月,结束日期为2020年2月。(这不是每年1月至12月的典型数据)。没有遗漏价值,每天的销售额都会被记录下来。共有两列:日期(正确的日期格式)和收入(数字格式)

我正试图为我的销售数据建立一个时间序列预测模型。一个先决条件是,我需要将数据转换为ts对象。我在网上看到的所有帖子都涉及年度或月度数据,但我还没有看到有人提到每日数据

我试图以这种方式将数据转换为ts对象(我将数据命名为“d”):


d_ts该
ts
功能可以在任何时间间隔内工作,该时间间隔由起点和终点定义。当您使用日期时,一个单位对应一天,因为这是它们在内部存储的方式。位于
?ts
的帮助文件还显示了如何使用年度或季度数据的示例

要正确读取每日数据,您需要设置
frequency=1
。使用与您所拥有的数据结构类似的数据:

#Compile a dataframe like yours
library(lubridate)
set.seed(0)
d <- data.frame(date=seq.Date(dmy("01/11/2017/"), by="day", length.out=892))
d$revenue <- runif(892)

head(d)
#date   revenue
# 1 2017-11-01 0.8966972
# 2 2017-11-02 0.2655087
# 3 2017-11-03 0.3721239
# 4 2017-11-04 0.5728534
# 5 2017-11-05 0.9082078
# 6 2017-11-06 0.2016819

#Convert to timeseries object
d_ts <- ts(d$revenue, start=min(d$date), end = max(d$date), frequency = 1)

d_ts
# Time Series:
#   Start = 17471 
# End = 18362 
# Frequency = 1 
# [1] 0.896697200 0.265508663 0.372123900 0.572853363 0.908207790 0.201681931 0.898389685 0.944675269 0.660797792
# [10] 0.629114044 0.061786270 0.205974575 0.176556753 0.687022847 0.384103718 0.769841420 0.497699242 0.717618508
#编译一个类似您的数据帧
图书馆(lubridate)
种子集(0)

dts
功能可以在任何时间间隔内工作,该时间间隔由起点和终点定义。当您使用日期时,一个单位对应一天,因为这是它们在内部存储的方式。位于
?ts
的帮助文件还显示了如何使用年度或季度数据的示例

要正确读取每日数据,您需要设置
frequency=1
。使用与您所拥有的数据结构类似的数据:

#Compile a dataframe like yours
library(lubridate)
set.seed(0)
d <- data.frame(date=seq.Date(dmy("01/11/2017/"), by="day", length.out=892))
d$revenue <- runif(892)

head(d)
#date   revenue
# 1 2017-11-01 0.8966972
# 2 2017-11-02 0.2655087
# 3 2017-11-03 0.3721239
# 4 2017-11-04 0.5728534
# 5 2017-11-05 0.9082078
# 6 2017-11-06 0.2016819

#Convert to timeseries object
d_ts <- ts(d$revenue, start=min(d$date), end = max(d$date), frequency = 1)

d_ts
# Time Series:
#   Start = 17471 
# End = 18362 
# Frequency = 1 
# [1] 0.896697200 0.265508663 0.372123900 0.572853363 0.908207790 0.201681931 0.898389685 0.944675269 0.660797792
# [10] 0.629114044 0.061786270 0.205974575 0.176556753 0.687022847 0.384103718 0.769841420 0.497699242 0.717618508
#编译一个类似您的数据帧
图书馆(lubridate)
种子集(0)

d对于日常数据,最好使用
tsibble
类,而不是
ts
类。可通过
fable
软件包获得建模和预测工具

库(tsible)
图书馆(寓言)
种子(1)
d_tsibble%
as_tsible(索引=日期)
杜易布尔
#>#一个易位:892x2[1D]
#>日期收入
#>           
#>  1 2017-11-01  -0.626
#>  2 2017-11-02   0.184
#>  3 2017-11-03  -0.836
#>  4 2017-11-04   1.60 
#>  5 2017-11-05   0.330
#>  6 2017-11-06  -0.820
#>  7 2017-11-07   0.487
#>  8 2017-11-08   0.738
#>  9 2017-11-09   0.576
#> 10 2017-11-10  -0.305
#>#…还有882行
d_tsibble%>%
模型(
arima=arima(收入)
) %>%
预测(h=“14天”)
#>#寓言:14 x 4[1D]
#>#键:。型号[1]
#>.模型日期收入.分配
#>                           
#>1 arima 2020-04-11-0.0178 N(-1.8e-02,1.1)
#>2 arima 2020-04-12-0.0117 N(-1.2e-02,1.1)
#>3 arima 2020-04-13-0.00765 N(-7.7e-03,1.1)
#>4 arima 2020-04-14-0.00501北纬(-5.0e-03,1.1)
#>5 arima 2020-04-15-0.00329 N(-3.3e-03,1.1)
#>6 arima 2020-04-16-0.00215 N(-2.2e-03,1.1)
#>7 arima 2020-04-17-0.00141 N(-1.4e-03,1.1)
#>8 arima 2020-04-18-0.000925N(-9.2e-04,1.1)
#>9 arima 2020-04-19-0.000606 N(-6.1e-04,1.1)
#>10 arima 2020-04-20-0.000397 N(-4.0e-04,1.1)
#>11 arima 2020-04-21-0.000260牛顿(-2.6e-04,1.1)
#>12 arima 2020-04-22-0.000171N(-1.7e-04,1.1)
#>13 arima 2020-04-23-0.000112N(-1.1e-04,1.1)
#>14 arima 2020-04-24-0.0000732 N(-7.3e-05,1.1)

由(v0.3.0)

创建于2020-04-01,具有每日数据,您最好使用
tsibble
类,而不是
ts
类。可通过
fable
软件包获得建模和预测工具

库(tsible)
图书馆(寓言)
种子(1)
d_tsibble%
as_tsible(索引=日期)
杜易布尔
#>#一个易位:892x2[1D]
#>日期收入
#>           
#>  1 2017-11-01  -0.626
#>  2 2017-11-02   0.184
#>  3 2017-11-03  -0.836
#>  4 2017-11-04   1.60 
#>  5 2017-11-05   0.330
#>  6 2017-11-06  -0.820
#>  7 2017-11-07   0.487
#>  8 2017-11-08   0.738
#>  9 2017-11-09   0.576
#> 10 2017-11-10  -0.305
#>#…还有882行
d_tsibble%>%
模型(
arima=arima(收入)
) %>%
预测(h=“14天”)
#>#寓言:14 x 4[1D]
#>#键:。型号[1]
#>.模型日期收入.分配
#>                           
#>1 arima 2020-04-11-0.0178 N(-1.8e-02,1.1)
#>2 arima 2020-04-12-0.0117 N(-1.2e-02,1.1)
#>3 arima 2020-04-13-0.00765 N(-7.7e-03,1.1)
#>4 arima 2020-04-14-0.00501北纬(-5.0e-03,1.1)
#>5 arima 2020-04-15-0.00329 N(-3.3e-03,1.1)
#>6 arima 2020-04-16-0.00215 N(-2.2e-03,1.1)
#>7 arima 2020-04-17-0.00141 N(-1.4e-03,1.1)
#>8 arima 2020-04-18-0.000925N(-9.2e-04,1.1)
#>9 arima 2020-04-19-0.000606 N(-6.1e-04,1.1)
#>10 arima 2020-04-20-0.000397 N(-4.0e-04,1.1)
#>11 arima 2020-04-21-0.000260牛顿(-2.6e-04,1.1)
#>12 arima 2020-04-22-0.000171N(-1.7e-04,1.1)
#>13 arima 2020-04-23-0.000112N(-1.1e-04,1.1)
#>14 arima 2020-04-24-0.0000732 N(-7.3e-05,1.1)

由(v0.3.0)于2020-04-01创建,关于R中的预测及其实现。在R中做任何与预测有关的事情时,我都像圣经一样使用它。我想你需要
frequency=1
,此时你正在为每天创建365个观测值。或者,您可以将日期转换为一年中的一天和一年中的一天(例如使用lubridate),频率为365。@谢谢!请确认:频率=1意味着每天观察一次(与我有一个年度周期相反)。我可以再问一个问题吗?如果我有另一列(比如说,支出),我稍后计划将其用作我的模型的外部回归器,是否可以将一个3列数据集(第1列日期、第2列收入-目标变量、第3列支出-外部回归器)放入TS对象?@user275