创建预测

将您的历史数据扩展到未来。

Creating projections

开始您的预测

您现在已将您的数据从 Metabase 指标存储导入到电子表格中。 这构成了您的历史数据(或者在金融术语中,您的“实际值”)。

在大多数模型中,下一步是创建您的预测(也称为预报)。 请注意,预报基于预期的行动方案,而预测基于各种假设情况(但这两个术语通常可以互换使用)。

什么是预测? 为什么要进行预测?

当您创建预测时,您试图预测某些系统在未来将如何发展。 常见的例子有

  • 天气预报:预测未来几天某个地理区域的天气。
  • 通过对一段时间内感染患者数量进行建模来预测流行病的传播。
  • 对企业的客户增长进行建模。

创建预测通常有两个原因

  1. 决定如何对结果做出反应 掌握准确的天气预报后,我可以决定明天是否去远足。 或者在更极端的情况下,我可以决定是否在飓风来临前撤离。
  2. 决定如何影响结果。 很难影响明天的天气,但您可以影响某些结果。 如果您正在决定是否今天在营销活动上额外花费 10 万美元,那么了解这笔支出在未来可能对客户数量产生多大影响,可以帮助您决定该活动是否值得投资。

预测通常基于两个要素

  1. 历史观测。
  2. 了解系统如何运作。

预测从根本上不同于猜测。 您可以猜测明天是否会发生飓风,但这种猜测不足以成为您决定是否撤离家园的理由。

相反,您更愿意依赖天气预报,气象学家会根据过去和当前天气条件的详细观测,结合对天气模式如何演变的(复杂)理解来进行预报。 预报当然可能会出错,但预报越好,出错的可能性就越低。

示例:预测水库中的水位

在接下来的关于预测和场景的两个模块中,我们将通过一个示例来说明概念:管理水库中的水位。

假设您是您所在地区水库的经理。 当地居民使用水库中的水进行饮用、洗衣、水球大战等。 河流和运河会随着时间的推移补充水库。

作为一名负责任的水库管理员,您会监测水位。 您还希望预测水位随时间的变化情况。

预测水库水位可能看起来像一个随机的例子,但请耐心等待。 水流入和流出水库恰好与客户流入和流出订阅业务的情况非常相似。

您水库中月底的基本水量计算公式是

期末水位 = 期初水位 + 雨水流入量(来自河流)- 水流出量(给居民)

假设您已经很好地掌握了每个月流入的平均水量。 您有兴趣预测流出量部分。

您的基本计算公式是

水流出量 = 当地人口 * 每位居民的用水量

在电子表格模型中,您应将其设置为

月份 一月 二月 三月
当地人口 100,000 100,000 100,000
每位居民每月用水量,立方米 10 10 10
每月总水流出量,立方米 1 百万 1 百万 1 百万

如何创建预测

通常,您会从单个预测开始,这是您对未来的中心看法。

回到我们的电子表格模型,我们已经从 Metabase 导入了一堆实际值。 以我们的水库示例为例,我们的电子表格看起来像这样

月份 一月 二月 三月
实际值 (A) 或预测值 (P) (A) (A) (A)
当地人口 100,000 100,000 100,000
每位居民每月用水量,立方米 10 10 10
每月总水流出量,立方米 1 百万 1 百万 1 百万

我们有 3 个时间序列(人口、用水量和总水流出量)。 为了创建我们的预测,我们需要向前预测这些时间序列中的每一个。

识别和建模您的驱动时间序列

您如何向前预测这些时间序列? 回到您最初创建预测的原因,您想知道的数字是每月水流出量。 但水流出量很难单独预测。 通常,您会将水流出量分解为组成部分,直到得到您可以预测的内容。

在我们的例子中,我们将我们的指标分解为

水流出量 = 当地人口 * 每位居民的用水量

我们可以合理准确地预测此公式中的最后两个变量

  • 您查看当地的研究,从历史上看,当地人口每年增长 6%,预计将继续这样做(每月约 0.5%,忽略复合增长)。
  • 当您回顾过去的数据并将用水量与人口进行比较时,您会观察到每位居民的用水量一直相当稳定,为每年 10 立方米。

有了这些知识,您可以预测这两个驱动时间序列。

月份 三月 四月 五月
实际值 (A) 或预测值 (P) (A) (P) (P)
当地人口 100,000 100,500 101,000
每位居民每月用水量,立方米 10 10 10
每月总水流出量,立方米 1 百万 ? ?

从这里,您可以使用以下公式预测您的依赖时间序列,即每月总水流出量(请参阅“公式”列)

月份 三月 四月 五月 公式
实际值 (A) 或预测值 (P) (A) (P) (P)  
当地人口 100,000 100,500 101,000 A
每位居民每月用水量,立方米 10 10 10 B
每月总水流出量,立方米 1 百万 1.005 百万 1.01 百万 A * B

概括来说,我们从我们想知道的内容开始,即我们的依赖时间序列(每月水流出量),并将水流出量分解为我们可以独立预测的组成部分,这些组成部分就是我们的驱动时间序列。

什么才是好的驱动时间序列?

从根本上说,驱动时间序列需要是您可以独立预测的内容。 这里存在一定的判断成分。 对于当地人口,假设您有可靠的来源来证明每年 6% 的增长率。 这样看来是合理的。

但是,如果您无法直接预测您选择的驱动因素,则需要将其分解为它们自己的驱动时间序列。 例如,您可能希望将每位居民的用水量分解为其自身的驱动因素

每位居民的用水量 = 每位居民的饮用水量 + 每位居民的平均后院面积 * 每单位后院面积的用水量

请注意,您可以继续这样做,进一步细分驱动因素。 细分到什么程度的决定将决定您模型的复杂程度。 但这里存在一个权衡。 通常,您的模型越复杂,您将花费更多的时间来构建、更新和调试它——而这些工作可能不会产生更好的预测。

选择您可以影响的驱动因素也很有帮助。 例如,在财务模型中,产品的成本是一个很好的驱动因素,因为您可以决定产品的成本。 此外,您可能希望看到价格变化的影响,因此最好使用产品成本作为驱动因素。

预测驱动时间序列的方法

让我们介绍一下如何为基线模型创建预测。 也就是说,您正在尝试根据驱动因素过去的行为尽可能忠实地预测它们。 在下一个模块中,我们将讨论如果您想偏离此基线该怎么办(例如,如果您正在考虑使用场景来创建未来的替代视图。)

有一些常用的预测方法用于预测电子表格模型中的驱动因素。

常数法

常数法假设您的驱动因素不会随时间变化。

实施常数法的一种方法是假设该数字在一段时间内具有相同的、单一的绝对值

月份 三月 四月 五月
实际值 (A) 或预测值 (P) (A) (P) (P)
驱动因素指标 10 10 10

在电子表格模型中使用常数法

  • 在工作表顶部的输入单元格中写入指标的绝对值(在本例中为单元格 B2)
  • 将驱动因素预测单元格链接回该输入单元格
  A B C D
1 假设      
2 指标 1 值 10    
3        
4 预测      
5 月份 三月 四月 五月
6 实际值 (A) 或预测值 (P) (A) (P) (P)
7 驱动因素指标 10 =B2 美元 =B2 美元

或者,您可以使用常数法,方法是取最近期间的平均值。 常用的范围是最近 12 个月、6 个月或 3 个月。

月份 一月 二月 三月 四月 五月
实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
驱动因素指标 9 11 10 10 10

在电子表格模型中执行此操作

  • 在预测单元格中使用 average 公式,参考后面的单元格
  • 使用公式中的 $ 符号锁定参考(如下所示)并将其填充到整个区域
  A B C D E F
1 假设          
2 指标 1 值 10        
3            
4 预测          
5 月份 一月 二月 三月 四月 五月
6 实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
7 驱动因素指标 9 11 10 =AVERAGE(B2 美元:D2 美元) =AVERAGE(B2 美元:D2 美元)

移动窗口法

移动窗口法假设您未来的指标的变化率与您最近的指标相同。

实际值和预测值的组合用于进行下一个预测。 例如,您可以取前三个月的移动平均值

月份 一月 二月 三月 四月 五月
实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
驱动因素指标 10 15 20 15 16.6

三个月移动平均预测将取最近三个实际值的平均值(如果存在这些实际值)(例如,四月份的预测)。 但是,如果这些月份尚未发生,则预测将取实际值预测值的平均值(例如,五月份的预测)。

在电子表格模型中使用移动窗口法

  • 在预测单元格中使用 average 公式,参考后面的单元格。
  • 将其填充到整个区域,无需使用 $ 锁定单元格引用。
  A B C D E F
1 假设          
2 指标 1 值 10        
3            
4 预测          
5 月份 一月 二月 三月 四月 五月
6 实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
7 驱动因素指标 9 11 10 =AVERAGE(B2:D2) =AVERAGE(C2:E2)

线性增长法

使用线性增长法,您可以预测您的数字以固定速率增长。 对于我们的用水需求模型,您可能需要考虑您所在地区的洗车业务数量。 平均而言,每四个月开设一家新的洗车店,即每月 0.25 家洗车店。

您的驱动时间序列可能如下所示

月份 一月 二月 三月 四月 五月
实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
洗车业务 35 35 35 35.25 35.5

是否应舍入小数是一个个人风格问题。 如果您暗示有四分之一的洗车店,一些建模者可能会崩溃,但通常不舍入数字不会影响模型的结果。

在电子表格模型中执行此操作

  • 在顶部创建一个输入单元格,其中包含您的指标每月增加的量。 如果您的模型按季度或年度运行,请使用您的指标每季度或每年增加的量。
  • 在您的时间序列预测单元格中,您将构建如下所示的公式
    • =D7 美元:这里您参考的是我们实际值的最后一个数字,即您的预测起点。
    • +COUNTA(E6 美元:E6) * B2 美元:这里您将每月新增洗车店的数量乘以您的预测中的月数。 请注意,您正在使用 $ 锁定对范围 E6 美元:E6 第一部分的引用,以便随着范围的扩大,计数的月数会增加。
  • 将公式向右填充。
  A B C D E F
1 假设          
2 每月新增洗车店 0.25        
3            
4 预测          
5 月份 一月 二月 三月 四月 五月
6 实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
7 驱动因素指标 35 36 36 =D7 美元 + COUNTA(E6 美元:E6) * B2 美元 =D7 美元 + COUNTA(E6 美元:F6) * B2 美元

指数增长法

某些指标自然会以指数方式增长。 也就是说,每个月您都会在前一个月的价值基础上增加固定百分比。 为了说明我们用水示例中的指数增长效应,让我们假设当地人口每月增长 5%。

月份 三月 四月 五月
实际值 (A) 或预测值 (P) (A) (P) (P)
人口 100,000 105,000 110,250

在此示例中,四月份的值表示比五月份的值增长 5%,依此类推。

在电子表格中对指数增长进行建模

  • 在顶部创建一个输入单元格,其中包含您的指标的每月增长率。 如果您的模型按季度或年度运行,则此数量将为季度或年度增长率。
  • 在您的时间序列预测单元格中,您应将前一个单元格的值乘以 1 + 每月增长率。 您应加上 1,以便将前一个单元格的值乘以 105%,而不是 5%。
  • 将公式向右填充。
  A B C D E F
1 假设          
2 人口每月增长率 5%        
3            
4 预测          
5 月份 一月 二月 三月 四月 五月
6 实际值 (A) 或预测值 (P) (A) (A) (A) (P) (P)
7 驱动因素指标 100,000 105,000 110,250 =D7 * (1+B2 美元) =E7 * (1+B2 美元)

提取您的假设

在大多数这些方法中都存在假设。 例如,每月新增洗车店的数量或当地人口增长率。 良好的建模做法是在模型的顶部创建一个假设(或输入)部分,并将您的公式链接回这些单元格。

此部分为您提供了一个更新假设的统一位置,而无需遍历和编辑每个单独的公式。 将数值输入直接写入公式称为“硬编码”,这被认为是一种不良做法,因为它使模型难以更新。

想象一下,您将一个数字硬编码到一个公式中,然后将该值填充到一行中的 50 个单元格中。 然后您对模型中的所有 100 行执行此操作,其中每一行都有自己的输入。 如果您想更改一个输入数字,您必须梳理每一行,更新数字,然后确保您没有遗漏旧数字的任何实例。 将其与必须更新单个输入单元格进行比较。

当您查看下一个模块中的场景时,在一个位置拥有您的假设将派上用场。

感谢您的反馈!

财务模型

下一页 →