【问题标题】:use date as independent variable for mutli-target/multi-variate regression python使用日期作为多目标/多变量回归python的自变量
【发布时间】:2021-05-14 02:17:25
【问题描述】:

我需要对我的项目使用多元线性回归,其中我有两个因变量:mean_1 和 mean_2。自变量是 YYYY-mm-dd 格式的日期。我一直在浏览各种 stackoverflow 帖子,以了解如何在回归中使用日期作为变量。有人建议将日期转换为数值(https://stackoverflow.com/a/40217971/13713750),而另一种选择是将日期转换为虚拟变量。

我不明白的是如何将数据集中的每个日期转换为虚拟变量并将其用作自变量。是否有可能或有更好的方法将日期用作自变量?

注意:我更喜欢使用日期格式的日期,以便绘制和分析回归结果。此外,我正在使用 pyspark,但如有必要,我可以切换到 pandas。因此任何实现示例都会有所帮助。谢谢!

【问题讨论】:

  • 转换为 unix 时间戳应该可以完成这项工作吗?

标签: python pandas pyspark regression


【解决方案1】:

如果您想将日期转换为数字(但我不推荐),您可以这样做:

pd.to_timedelta(df.date).dt.total_seconds().astype(int)

您也可以这样做,但要使用总秒数:

pd.to_timedelta(df.date).dt.total_seconds()

此外,您可以使用基线日期并从您的日期变量中减去该日期并获得天数,这将为您提供一个有意义的整数(更大的差异意味着未来的日期,而较小的差异表明较早的日期)。这个值对我来说可以用作模型中的自变量。

首先,我们创建一个基线日期(可以是任何你想要的),并将其添加到数据框的静态列中:

df['static'] = pd.to_datetime(datetime.date(2017, 6, 28))

然后我们获得静态日期与您的日期的天数之差

df['days'] = (df['static'] - df['date']).dt.days

然后你将有一个准备好用作自变量的数字

【讨论】:

  • 感谢您的调查。你的想法表明我使用 no。天数作为自变量,但我希望有一个解决方案,我仍然可以使用日期作为日期(而不是天数)进行进一步分析,例如散点图等 – Sameeksha Sohal 13 小时前
  • 只是为了我的理解,您希望在线性回归中预测日期?
  • 不,在我的情况下,日期是自变量。我需要使用回归分析日期对 mean_1 和 mean_2 的影响/关系。
  • 在这种情况下,时间序列不是比使用线性回归好得多吗?因为那样你就可以使用日期而不改变它们
  • 你能分享一些例子吗?因为我一直在尝试找到一些时间序列回归模型,我可以在其中使用多个因变量,但找到了多个自变量的模型。
【解决方案2】:

您可以创建新列yearmonthday_of_yearday_of_monthday_of_week。您还可以添加一些二进制列,例如is_weekdayis_holiday。在某些情况下,添加第三方数据是有益的,例如每日天气统计数据(我正在研究一个额外的每日天气数据证明非常有用的案例)。真的取决于您正在处理的域。这些列中的任何一个都可以揭示数据背后的一些模式。
至于虚拟变量,将monthday_of_week 转换为虚拟变量是有意义的。
另一种选择是,为每个月构建一个模型。

【讨论】:

  • 感谢您的调查。不幸的是,我无法将日期归类为 is_weekday 或 is_holiday,因为这对我的情况没有帮助。
猜你喜欢
  • 2020-11-22
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 2016-05-04
  • 2012-12-18
  • 1970-01-01
相关资源
最近更新 更多