航空公司票价——应该使用什么分析来检测有竞争力的定价行为和价格相关性?

数据挖掘 数据挖掘 数据集 回归 相关性 可视化
2021-09-28 04:21:43

我想调查航空公司的定价行为——特别是航空公司对竞争对手定价的反应。

正如我所说,我对更复杂分析的了解非常有限,我已经完成了大部分基本方法来收集数据的整体视图。这包括已经有助于识别相似模式的简单图表。我也在使用 SAS Enterprise 9.4。

但是我正在寻找一种基于数字的方法。

数据集

我正在使用的(自己)收集的数据集包含大约 54.000 票价。所有票价均在 60 天的时间窗口内每天收集(每晚 00:00)。收集方法

因此,该时间窗口内的所有票价都会发生n时间取决于票价的可用性以及航班的出发日期,当它超过票价的收取日期时。 (当航班的出发日期为过去时,您无法收取该航班的票价)

未格式化的基本上是这样的:(假数据)

+--------------------+-----------+--------------------+--------------------------+---------------+
| requestDate        | price| tripStartDeparture | tripDestinationDeparture | flightCarrier |
+--------------------+-----------+--------------------+--------------------------+---------------+
| 14APR2015:00:00:00 | 725.32    | 16APR2015:10:50:02 | 23APR2015:21:55:04       | XA            |
+--------------------+-----------+--------------------+--------------------------+---------------+
| 14APR2015:00:00:00 | 966.32    | 16APR2015:13:20:02 | 23APR2015:19:00:04       | XY            |
+--------------------+-----------+--------------------+--------------------------+---------------+
| 14APR2015:00:00:00 | 915.32    | 16APR2015:13:20:02 | 23APR2015:21:55:04       | XH            |
+--------------------+-----------+--------------------+--------------------------+---------------+

“DaysBeforeDeparture”通过以下方式计算I=sc在哪里

  • I & 间隔(出发前几天)
  • s & 票价日期(航班出发)
  • c & 收取票价的日期

以下是 I (DaysBeforeDep.) 分组数据集的示例(假数据!):

+-----------------+------------------+------------------+------------------+------------------+
| DaysBefDeparture | AVG_of_sale | MIN_of_sale | MAX_of_sale | operatingCarrier |
+-----------------+------------------+------------------+------------------+------------------+
| 0               | 880.68           | 477.99           | 2,245.23         | DL           |
+-----------------+------------------+------------------+------------------+------------------+
| 0               | 904.89           | 477.99           | 2,534.55         | DL           |
+-----------------+------------------+------------------+------------------+------------------+
| 0               | 1,044.39         | 920.99           | 2,119.09         | LH               |
+-----------------+------------------+------------------+------------------+------------------+

到目前为止我想出了什么

查看折线图,我已经可以估计几条线将具有很高的相关因子。因此,我尝试首先对分组数据使用相关性分析。但这是正确的方法吗?基本上我现在尝试对平均值而不是单个价格进行相关性?还有其他方法吗?

我不确定哪个回归模型适合这里,因为价格不会以任何线性形式移动并且看起来是非线性的。我是否需要为航空公司的每个价格发展拟合一个模型

PS:这是一堵长长的文字墙。如果我需要澄清任何事情,请告诉我。我是这个潜艇的新手。

任何人的线索?:-)

2个回答

一位前航空公司收入管理分析师的警告:你可能会用这种方法来找错树。为后面的文字墙道歉,但这些数据比乍一看要复杂得多,也更嘈杂,所以想提供一个简短的描述来说明它是如何生成的;有备则无患。

航空公司票价有两个组成部分:航空公司在特定航线上可用的所有实际票价(包括票价规则和你有什么),其中大部分由航空公司票价出版公司公布(少数特殊用途的票价是不是,但这些是例外而不是规则)以及航空公司日常执行的实际库存管理。

票价可以每天四次以固定的时间间隔提交给 ATPCO,当航空公司这样做时,通常会包括对现有票价的添加、删除和修改。当一家航空公司发起定价行动时(假设他们的竞争对手没有试图在这里采取自己的行动),他们通常必须等到下一次更新,看看他们的竞争对手是否跟随/响应。当竞争对手发起定价行动时,反之亦然,因为航空公司必须等到下一次更新才能做出回应。

现在,就票价而言,这一切都很好,但问题是,因为这一切都在 ATPCO 上公布,票价是公共信息的下一个最好的东西……你所有的竞争对手都可以看到你有什么进入您的武器库,因此混淆的尝试并非闻所未闻,例如发布实际上永远不会分配任何库存的票价,将所有票价列为出发日等。

在许多方面,秘诀归结为实际的库存分配,即每个航班上你愿意以给定的票价出售多少个座位,而这些信息是不公开的。您可以通过抓取网络信息获得一些信息,但是出发时间/日期和票价规则的潜在组合非常多,并且可能会迅速升级,超出您轻松跟踪的能力。

通常情况下,航空公司只愿意以极低的票价出售少数座位,而抢到这些座位的人必须提前很长时间预订,以免票价规则将他们拒之门外,或者其他旅客直接击败他们。航空公司将愿意以更高的票价出售更多的座位,依此类推。他们会很乐意以他们公布的最高票价出售所有座位,但这通常是不可行的。

离出发日越近,票价越高,您所看到的只是廉价座位被预订得越远的自然过程,而剩余的库存逐渐变得更贵。当然,这里有一些警告。RM 流程是积极管理的,人工干预非常普遍,因为 RM 团队通常努力实现其收入目标并最大限度地提高每次飞行的收入。因此,快速填满的航班可能会通过关闭低价票价来“收紧”。预订缓慢的航班可能会通过分配更多座位以降低票价来“放松”。

在这一领域,航空公司之间存在着持续的相互作用和竞争,但您不太可能仅从拼凑票价中捕捉到实际动态。不要误会我的意思,我们有这样的工具供我们使用,尽管它们有局限性,但它们非常有价值,但它们只是用于决策过程的一个数据源。您需要访问 RM 团队每天做出的数百甚至数千个运营决策,以及他们当时看到的世界状态信息。如果您找不到可与之合作的航空公司合作伙伴来获取此数据,则可能需要考虑备用数据源。

我建议考虑从官方航空公司指南(或他们的竞争对手之一)获取 O&D 票价数据,并尝试将其用于您的分析。它是基于样本的(约占所有售出机票的 10%),并且聚合的水平高于理想水平,因此必须仔细选择航线(我建议有很多航空公司,每天多次直飞,大型飞机),但您可能能够更好地了解实际售出的商品(平均票价)和售出的商品数量(载客率),而不仅仅是在给定时间点出售的商品。使用这些信息,您至少可以更好地探索航空公司定价策略的结果,并据此做出推断。

除了描述性和可视化的探索性数据分析 (EDA) 之外,我会尝试使用时间序列分析作为更全面复杂的分析。具体来说,我会执行时间序列回归分析时间序列分析是一个庞大的研究和实践领域,因此,如果您不熟悉基础知识,我建议您从上面链接的 Wikipedia 文章开始,逐步搜索更具体的主题并阅读相应的文章、论文和书籍。

由于时间序列分析是一种非常流行的方法,它得到了大多数开源和闭源商业数据科学统计 环境(软件)的支持,例如RPythonSASSPSS等。如果您想为此使用R,请查看我关于一般时间序列分析时间序列分类和聚类的答案。我希望这会有所帮助。