带有日期变量的回归(python)

Posted

技术标签:

【中文标题】带有日期变量的回归(python)【英文标题】:Regression with Date variable (python) 【发布时间】:2018-05-16 13:41:46 【问题描述】:

我有一个时间序列(每日)数据集,由 1 个标签(整数)和 5 年的 15 个特征组成。我不知道特征的含义,但我必须根据这些特征预测标签。

为此,首先,我使用 pandas.tools.plotting 中的 autocorrelation_plot 来确定我的标签 (y) 中是否有任何季节性。请看下图:

然后我使用seasonal_decompose通过扫描Freq参数来查找我的标签(y)的季节性、趋势和残差:

能否告诉我哪个频率可以,为什么? 下一步是什么?我是否需要从数据中删除趋势项和季节性项,然后尝试通过回归(例如 SVR、线性等)对残差因子进行建模和预测?或者我需要通过回归来预测整个数据(不去除季节性和趋势)。我试图通过几种回归技术来预测整个数据(不去除季节性和趋势),但结果非常糟糕。最后,我如何预测最后的季节性?阿里玛好吗?趋势呢???\ 3) 我是否走在正确的轨道上(提取季节性等),或者我应该将“日期”视为其他 15 个特征之外的特征,例如: 一天中的小时(24 个布尔特征) 星期几(7 个布尔特征) 一个月中的某天(最多 31 个布尔特征) 月(12 个布尔特征) 年

【问题讨论】:

【参考方案1】:

让我向您解释一下通常如何处理季节性。

大多数时候,人们会尝试提取季节性成分并处理校正后的序列以进行分析。在北美,统计机构应用一系列对称移动平均过滤器来估计季节性、趋势周期和不规则成分,而经季节性调整的数据对应于减去估计的季节性成分的数据。通常,它们还在其他表中提供原始数据,有时,它们还在其他表中提供趋势周期。在澳大利亚,他们更喜欢呈现趋势周期。

在欧洲,分解通常基于一个模型:他们指定一个带有季节性成分的 ARIMA 模型——它允许集成季节性成分、季节性动态中的移动平均成分等——然后通过施加假设进行分解在模型上提取特定频率。

现在,您需要知道的第一件事是您的函数究竟是做什么的。如果您使用移动平均过滤器,您必须知道这些过滤器是对称的,并且它会强制使用回溯和预测(您需要在开始之前和结束之后的点来应用对称过滤器 - 它是相同的结束点例如,像 Hoddrick-Prescott 这样的过滤器所面临的问题)。因此,它需要指定一个具有季节性的良好 ARIMA 作为代理,以免端点表现太差(或为端点指定不对称过滤器),并且如果您使用校正后的数据集比较预测,对称性意味着一个小的数据窥探偏差模型(因为所有新点都包含未来信息)。如果您使用 ARIMA 模型,则过滤器是不对称的,并且不会使用未来的点构建更正的数据点。

现在,要进行预测,您有两种选择。 (1)您可以尝试预测校正值(如果您绝对需要原始值,您可以单独预测季节性); (2) 你预测原始序列。

目前尚不清楚什么是最好的方法。理论上,您需要 (2),但它可能非常复杂,例如前沿研究模型,除非您使用具有季节性成分的 ARIMA 或施加恒定的季节性并使用季节性假人。

至于“频率”的选择,我倾向于使用非正式的测试来确定什么是合适的。在移动平均文献中,我们选择过滤器需要多长时间或多短——目标是生成能够完全捕捉季节性规律的估计季节性。您可以对校正后的数据使用非参数检验,例如 Kruskal-Wallis 检验,但它相当宽容。

我认为更适合预测的建议是找到一个包,让您可以使用具有季节性的参数模型。然后,您将拥有明确的测试和信息标准,可用于在可靠的统计基础上做出决策。

【讨论】:

以上是关于带有日期变量的回归(python)的主要内容,如果未能解决你的问题,请参考以下文章

带有虚拟/分类变量的线性回归

在逻辑回归中,如何在 python 中为我的虚拟变量设置“参考水平”

Python和R之间的线性回归系数之间的差异

带有要优化的附加变量的回归

使用带有外部变量的python将数据插入mysql

Python应用实战线性回归(附Python代码)