我需要使用多元线性回归为我的项目,我有两个因变量:mean_1和mean_2。自变量为date,格式为YYYY-mm-dd。我一直在通过各种stackoverflow帖子来了解如何使用日期作为回归中的变量。有人建议将日期转换为数值(https://stackoverflow.com/a/40217971/13713750),而另一种选择是将日期转换为虚拟变量。
我不明白的是如何将数据集中的每个日期转换为虚拟变量并将其用作自变量。有可能或者有更好的方法把日期作为自变量吗?
注意:我更喜欢使用日期格式的日期,这样很容易绘制和分析回归的结果。此外,我正在使用pyspark,但如果有必要,我可以切换到pandas。所以任何实现的例子都会很有帮助。谢谢!
可以新建列year
,month
,day_of_year
,day_of_month
,day_of_week
。您还可以添加一些二进制列,如is_weekday
,is_holiday
。在某些情况下,添加第三方数据是有益的,例如每日天气统计数据(我正在研究一个额外的每日天气数据证明非常有用的案例)。这取决于你研究的领域。这些列中的任何一列都可能揭示数据背后的某种模式。
对于Dummy变量,将month
和day_of_week
转换为Dummy是有意义的。
另一种选择是,每个月建立一个模型。
如果您想将日期转换为数字(但我不建议),您可以这样做:
pd.to_timedelta(df.date).dt.total_seconds().astype(int)
你可以做同样的事情,但是总秒数:
pd.to_timedelta(df.date).dt.total_seconds()
同样,您可以使用基线日期并从日期变量中减去它并获得天数,这将为您提供一个有意义的整数(较大的差异意味着更未来的日期,而较小的差异显示更早的日期)。这个值对我来说是有意义的,可以用作模型中的自变量。
首先,我们创建一个基线日期(可以是您想要的任何日期),并将其添加到列static的数据框架中:df['static'] = pd.to_datetime(datetime.date(2017, 6, 28))
然后我们得到静态日期和你的日期的天数之差
df['days'] = (df['static'] - df['date']).dt.days
你就有了一个可以用作自变量的数字