R 如何确定时间序列中的最佳频率?

R 如何确定时间序列中的最佳频率?,r,statistics,time-series,forecasting,holtwinters,R,Statistics,Time Series,Forecasting,Holtwinters,我有一个按天分组的数据库指标,我需要预测未来3个月的数据。这些数据具有季节性(我认为季节性是以一周中的几天为单位) 我想使用Holt Winters方法使用R,我需要创建一个时间序列对象,它要求频率(我认为是7)。 但我怎么知道我是否确定?是否具有识别最佳频率的功能 我正在使用: FID_TS <- ts(FID_DataSet$Value, frequency=7) FID_TS_Observed <- HoltWinters(FID_TS) FID\u TS看起来您有每日数据

我有一个按天分组的数据库指标,我需要预测未来3个月的数据。这些数据具有季节性(我认为季节性是以一周中的几天为单位)

我想使用Holt Winters方法使用R,我需要创建一个时间序列对象,它要求频率(我认为是7)。 但我怎么知道我是否确定?是否具有识别最佳频率的功能

我正在使用:

FID_TS <- ts(FID_DataSet$Value, frequency=7)

FID_TS_Observed <- HoltWinters(FID_TS)

FID\u TS看起来您有每日数据,并且您希望预测未来三个月。这里的问题是,你需要每日预测、每周预测还是每月预测?我想你可能需要每日或每周的预测。如果需要每周预测,则可能更容易先按周分组数据,然后运行预测

Facebook的新Prophet软件包是一个非常好的日常数据处理工具。它将使用dataframe而不是ts项目,这使得它更容易处理。您可以通过一些内置函数(如plot_组件)快速获取每日(如果您有每小时的数据左右)、每周和每月的季节性。这里是一个快速入门教程。他们有Python和R的API

下面是一些快速代码,用于绘制Prophet每周和每月的季节性(是否有)

library(prophet)
library(dplyr)
df <- FID_DataSet %>% rename(ds = date, y = Value)
m <- prophet(df)
future <- make_future_dataframe(m, periods = 365)
forecast <- predict(m, future)
plot(m, forecast) # plot out the forecast
prophet_plot_components(m, forecast) # plot out the components: trend, weekly and yearly seasonality if there is any.
库(prophet)
图书馆(dplyr)
df%重命名(ds=日期,y=值)
m通常,频率(或季节性,您在帖子中似乎可以互换使用这些词)是由领域知识决定的。例如,如果我在餐馆工作,并且我在分析每小时的客户数据集,我知道我将有一个24小时的频率,在午餐时间和晚餐时间出现峰值,另外还有一个168小时的频率(24*7),因为我的客户将有一个每周的模式

如果出于某种原因,您不具备领域知识,您可以使用ACF和PACF以及Fourier分析为您的数据找到最佳频率

有没有办法把频率按星期几和月份排列

在霍尔特冬季,第HW号只包含一个季节性成分。对于多个季节性组件,您应该尝试TBAT。正如吴晓喜指出的,FB Prophet可以模拟多个季节性因素,谷歌的BSTS包也可以

另一件事,我把去年的一整年或者只是其中的一部分用在霍尔特-温特斯方法中,会有什么不同吗


是的。如果你想对季节性进行建模,那么你需要至少两倍的季节周期才能对其进行建模(最好是更多),否则你的模型无法知道尖峰是季节性变化还是一次性冲动。例如,要对每周的季节性进行建模,您需要至少14天的训练数据(加上您将用于测试的任何数据,对于每年的季节性,您需要至少730天的数据,等等……

查看
库(预测)
它有
msts
功能,可以使用多个频率。谢谢@Sotos,可能是这样的?(每周7次,每月30次)
FID\TS看看谢谢@Sotos,我试过这个:07(每周间隔次数)05(每月间隔次数,假设每月30天).
FID\TS检查此项:您好@xiaoxi wu感谢您的帮助。我想按天进行预测,但有些数据在一周内会有变化,例如,对于某些类型,每周一都比其他几天大,但这不是所有的规则。我想知道是否有办法查看数据是否有季节性,以及哪个是周期。F或者是没有季节的数据,这是最好的方法。提前谢谢。@XiaoxiWu我用R上的prophet library做了预测,但我对趋势有一个问题。我怎么能忽略趋势或设置趋势?我想降低趋势的力量。否则我的结果会变成负数,我不能有这个。谢谢!@EvanBessa你可以试试看使用逻辑作为趋势,而不是线性,如prophet(df,growth='logistic'),然后您可以设置上限和下限,以确保它确实为负值。@ArtjomB。我附上了一些示例代码,说明如何绘制季节性成分。