gpt4 book ai didi

python - 如何找到两个变量之间的相关性但跨越不同的时间线('lagged correlation')

转载 作者:太空宇宙 更新时间:2023-11-03 20:54:06 26 4
gpt4 key购买 nike

假设我销售的商品是互补品。我正在尝试找出不同销售日期的商品销售之间的相关性。

(因为我认为 item01 在 d-day 的销量可能会影响 item02~99d+30 的销量)

dataframe 看起来像这样。

.    Item01  Item02  Item03 Item04  ... 

day1 120 130 140 200 ...

day2 200 200 150 119 ...

day3 162 110 180 220 ...

day4 170 130 160 190 ...

... ... ... ... ... ...

我学习了使用 pandas dataframe 的 .corr() 的方法但我想找到跨时间的相关性。

我应该创建自己的回归函数吗?

非常感谢

df_sales = pd.DataFrame(dic_sales)

corr = df_sales.corr(method = 'pearson')

校正值

.            item01 Item02 ...

item01(d+30) 0.75 0.46 ...

item02(d+30) 0.44 0.84 ...

... ... ...

最佳答案

创建时移 30 天滞后期的新列,然后对这些列运行 corr 方法。

df_shifted = df_sales.shift(periods=30)
df_shifted.columns = ['Item01_30','Item02_30','Item03_30','Item04_30']

会将所有记录向上移动 30 行,并在观测值 0-29 中保留 NaN 值。然后将 30 个 NaN 值添加到原始数据帧的末尾:

empty_row = pd.Series([Nan,Nan,Nan,Nan], index=['Item01','Item02','Item03','Item04'])
for i in range(30):
df_sales = df_sales.append(empty_row)

接下来,将 df_shifted 和 df_sales 合并到一个数据帧中:

frames = [df_sales, df_shifted]
df_sales_with_shift = pd.concat(frames, axis=1)

仅对没有 NaN 值的行运行 corr 方法:

df_sales_with_shift[30:len(df_sales_with_shift.index)-30].corr(method ='pearson')

这将要求您根据选择移动的时间段数量来减少数据集,因此根据您的样本大小,您可能需要注意不要选择太长的时间段。

关于python - 如何找到两个变量之间的相关性但跨越不同的时间线('lagged correlation'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56121248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com