如何显示两个系列之间随时间变化的幅度?

机器算法验证 时间序列 数据可视化 Python matplotlib
2022-04-07 07:29:04

免责声明:我对统计一无所知。我在寻找问题的答案时遇到了麻烦,因为我对统计术语知之甚少。

我目前正在尝试使用两组差异很大的值绘制图表。这并不重要,但我在 Python 中使用 matplotlib 库执行此操作。

我的一组价值观是一家公司几天内的股价。我的第二组数据的值要小得多,但我希望能够并排比较两条线。我对变化的幅度比对实际值更感兴趣。

目前,我唯一的想法是:

  • 平均第一个值。

  • 平均第二个值。

  • 将第一个平均值除以第二个平均值,以找到一个系数。

  • 将第一组数据中的每个值除以该系数。

现在,这看起来不错,但我对统计一无所知,所以这是正确的吗?如果不是,有什么更好的方法来做到这一点?

4个回答

如果您对分数的变化感兴趣,则只需绘制值的对数。对数空间中的固定距离是固定的分数变化,因此如果一条线比另一条线更陡,它的变化更快。

对数刻度还可以让您方便地将两组值放在一个图表上,而无需以任何方式对值进行标准化。

你问“这是正确的吗?” 和“有更好的方法吗?” 但这些问题的答案取决于你到底想做什么。统计图只有在扭曲数据时才是“错误的”;如果难以阅读等,那就是“坏”。

您对两种股票价格之间的差异感兴趣吗?然后从另一个中减去一个并绘制它。你对这个比例感兴趣吗?然后将较大的除以较小的并绘制它。(克利夫兰表明,解释一条线比解释两条线之间的关系更容易;他的例子是随着时间的推移从某个国家(英格兰,IIRC)的进出口)。

两个系列都需要吗?好吧,您可以标准化(请参阅前面的答案),或者您可以将一个系列乘以某个方便的数字(一定要说明这一点!) - 后者可能更容易让您的听众掌握。

强烈推荐威廉克利夫兰的书。

在财经媒体中,以允许比较随时间变化的方式显示两个或多个时间序列(例如 GDP 或 - 与原始问题相关 - 股票价格)的常用方法是rebase选择一个基准时间,并缩放系列的值,使它们在那里都为 100。如果第一个系列在基期是 40 欧元,但在之后是 48 欧元,则它们变为 100 和 120(这表明自基期以来上涨了 20%)。如果第二个系列在基期为 500 欧元,之后为 450 欧元,则分别为 100 和 90(下降 10%)。这是《经济学人》中的一个示例(如果是付费墙,这是指向图像本身的链接)。

或者,可能只显示百分比变化。所以在我的示例中,第一个系列将从 0 开始并向上移动到 20,而第二个系列将从 0 开始并向下移动到 -10。这是金融时报的一个例子图片链接)。

通常选择图表中最左边的第一个时间作为基期。偶尔我们会看到重新调整基数的图,因此最终值为 100,就像这个(取自BBC 这篇文章)。我还看到图表已经重新定位到图表中间的一个时期。如果您比较金融危机前后两个国家的 GDP 序列,这可能是有道理的——为了使结果具有可比性,您可以将它们重新设定为危机前 GDP 峰值时期。请注意,在危机爆发前增长较快的经济体在危机左侧的曲线图会更陡峭,但这意味着它的曲线图将下降到下方它被比较的那个。对于不了解如何解释图表垂直比例的人来说,这可能表明它是危机前较弱的经济!通过向左重新定位可以避免这种混淆,但这并不总是合适的。

仅绘制两个系列的比率有一些优点。一个是可以将此概念扩展到同一图表上的两个以上系列(请参阅BBC 的此示例- 摘自本文)。

但要注意变基的缺点 - 基期的选择很重要,因为它会使系列任意交叉。通常人们会重新设置基准,以便所有图表都从 100 开始,如果他们回到“原始”比率,该系列将再次出现交叉。但除非有充分的理由从那里开始绘制系列图——也许是因为股票价格图从上市开始,或者 GDP 图从国家独立开始——那么起点并不能真正代表任何真正原创或特殊的东西. 如果您对从数据系列中的哪个位置开始图表做出了不同的选择,那么后续交叉等功能看起来可能会大不相同。两个时间序列的y轴。我也赞成彼得弗洛姆的回答,解释一条比两条更容易,所以如果只有两个系列的比率很有趣,那么只需要绘制系列的比率!

尝试为每个 Y 轴使用不同的比例绘制两个数字?(我不知道 Python 的 matplotlib 库,但如果它不能处理,我会感到惊讶。)这个想法是让股票价格的 Y 轴介于所见的最低和最高价格之间,而其他值的范围也是看到的最低/最高值。