将日期用作多目标/多元回归的自变量

2024-05-16 04:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 项目httpscomdate格式线性meanstackoverflow
2条回答

如果要将日期转换为数字(但我不推荐),可以执行以下操作:

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

您也可以这样做,但总秒数为:

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

此外,您可以使用基准日期,并从日期变量中减去基准日期,然后获得天数,这将为您提供一个有意义的整数(差值越大表示日期越晚,而差值越小表示日期越早)。对于我来说,将此值用作模型中的自变量是有意义的

首先,我们创建一个基线日期(可以是您想要的任何日期),并将其添加到dataframe的static列中:

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

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

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

这里有一个数字,可以用作自变量

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

相关问题 更多 >