包含日期的数据的回归

机器算法验证 r 时间序列 多重回归
2022-04-02 16:19:23

我有一个数据集,其中包含三年期间在 100 多个国家/地区运营的三个供应商的数百笔交易。

我们发现,销售国不是影响价格的重要因素(产品或多或少是全球商品)。随着时间的推移,所有价格都大幅下降。任何一天都可以从同一供应商(即在不同国家/地区)以不同的价格进行多笔交易。

我想测试不同供应商收取的价格是否存在统计学上的显着差异。

数据看起来像这样:

    Country X  1/1/2010  $200 Supplier A
    Country Y  1/1/2010  $209 Supplier A
    Country Z  1/1/2010  $187 Supplier A
    Country A  1/1/2010  $200 Supplier B
    Country X  1/2/2010  $188 Supplier B

关于如何做到这一点的任何想法?......

4个回答

听起来您需要使用时间序列方法,例如 ARMA 或 ARIMA,让您可以使用时间作为自变量来计算回归,而不会违反 OLS 的独立观察假设。

您可能想尝试两步分析: - 首先将时间用作单个预测变量并使用合适的时间序列方法 - 二看两个供应商之间的残差是否存在任何有意义的差异。(一个简单的 t 检验可能就足够了。)

有几种方法。一种选择是将日期转换为第一天之后的天数。此外,您可能还有一周中的几天(一周内的趋势)和月份(查看一年中某些时间的趋势)的其他变量。通过这样做,您可以使用多元回归。

要获得变量“第一天后的天数”,我相信(excel和R)你可以简单地从后一个日期中减去较早的数据并获得日差。因此,也许可以尝试从所有日期中减去 1/1/2010。您还应该使用 as.numeric() 告诉 R 新值是数字

编辑:R 似乎是在第一年阅读的,所以你可能不得不稍微弄乱日期。看到这个:https ://stackoverflow.com/questions/2254986/how-to-subtract-days-in-r

时间序列分析是另一种方法,但我不太熟悉它。

我可以建议您对时间变量使用非线性函数,因为每增加一个时间单位,价格下跌的幅度就会较小。否则价格最终将跌至零以下。此外,可能存在趋势向上变化的时期。因此,我建议对时间变量使用三次样条。

经验告诉我,我会检查以下模型:
Y = country_parameter * price(t) * e

其中 price(t) 是一个函数,最好是三次样条,但它也可以是任意的,甚至是线性趋势。请注意,模型中有乘号,而不是和。

选择一个参考日期,比如 2010 年 1 月 1 日,并创建一个新变量time,它是日期和参考日期之间的差异,其中的差异以天为单位计算。

现在运行一个线性回归(或类似的东西),其中timesupplier作为两个预测变量和price作为响应变量。

这只是一个起点。