前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel实战技巧:从Excel预测的正态分布中返回随机数

Excel实战技巧:从Excel预测的正态分布中返回随机数

作者头像
fanjy
发布2023-02-24 20:28:13
1.9K0
发布2023-02-24 20:28:13
举报
文章被收录于专栏:完美Excel完美Excel

两种类型的随机模拟

粗略地说,我们可以将随机模拟分为两种类型:表格和扩展。

表格模拟

使用表格模拟,可以在电子表格一行的多个单元格中创建整个模型,其中一些单元格包括随机数。

要创建模拟,可以将公式行向下复制到数千行。然后,为了分析模拟,需要分析模拟表每一行中由这些随机数生成的许多不同结果。

例如,假设你的公司每月投放数量不等的在线广告,从而为你的网站生成数量不等的访问者。并假设需要可变数量的访问者来产生可变数量的每次销售。

因此,在一行的多个单元格中,可以模拟一个月的活动,使用随机数来定义每个可变程度。可以将这些公式复制到它们的列中,以创建一个包含数千个可能结果的表格。然后,分析表格以确定一段时间内的平均销售额,以及该估计值的可变性。

扩展模拟

扩展的方法是不同的。在这种方法中,可以创建一个可以像你希望的那样详细的模型。可以在任意数量的工作表中为模型使用任意数量的行,然后多次运行该模型并汇总结果。

通常,这称为蒙特卡罗分析。

但与大多数在Excel中创建的模型不同,蒙特卡罗分析使用随机数来生成关键假设。

例如,如果你一个月的最佳销售量是120,而最坏的销售量是80,你将使用随机数在这些限制之间进行选择。或者,如果你的最高可能销售成本是40%,而最低可能成本是30%,将使用另一个随机数在这些限制之间进行选择。

使用这种方法,每次重新计算工作簿时,模型都会为你提供修改后的预测。

可以轻松地根据需要多次重新计算此模型,并从每次计算中获取结果……自动地,无需编程即可完成。在下一篇文章中,在如何使用Excel数据表创建蒙特卡罗模型和预测中会展示如何做到这一点。

现在,让我们深入研究这两种模拟的关键要素:随机数。首先,将向你展示一个显而易见的方法,你很少会在模拟中使用它。接着,将向你展示大部分时间应该使用的方法。

Excel的两个随机数函数

Excel 提供了两个生成随机数的函数:

  • RAND函数返回一个介于0和1之间的随机数。
  • RANDBETWEEN(bottom,top)返回参数bottom和参数top之间的随机整数。

这两个函数返回的结果出现在bottom和top之间任何地方的机会相同。

为了说明这一点,我复制了RAND函数并将其粘贴到一列中的10000个单元格中,然后将这些值分成10组大小相等区间,创建了一个直方图,显示一个值在每个区间中出现的次数。

图1

图2

图1显示了第一次按F9重新计算工作簿后的结果,图2显示了再次按下F9后的结果。如你所见,每个分组的结果均为1000左右,即结果份额相等。

如果使用RANDBETWEEN而不是RAND,会看到类似的结果。

使用RAND或RANDBETWEEN进行模拟的问题在于,我们需要如下图3所示的Excel图表的结果。

图3

也就是说,一旦我们定义了假设的边界,就通常希望随机数是中心加权的。那么,如何才能做到这一点呢?如何从正态分布中返回一个随机数?

来自正态分布的随机数

要从正态分布返回随机数,主要依赖NORM.INV函数,该函数使用以下语法:

=NORM.INV(probability, Mean, standard_dev)

参数probability很容易指定,概率的值从0到1,就像RAND函数生成的那样。因此,如果我们能弄清楚如何计算均值和标准差,就可以使用这个公式从正态分布中返回一个随机数:

=NORM.INV(RAND(), Mean, standard_dev)

再看看图3所示的图表,浅蓝色区域在均值的每一侧显示一个标准偏差。正如图表下方的第一个标签所示,浅蓝色区域约占总面积的68%。

浅蓝色和中蓝色区域一起显示均值的两个标准偏差内的值。图表下方的第二个标签显示,这代表了总面积的95%左右。

所以想想这意味着什么。假设最初的预测显示下个月的销售额将是100,但是如果你的工作依赖于此,那么你认为这些销售额的最佳情况和最坏情况估计是什么?仔细考虑之后,假设你估计销售额可能高达120,低至70。

这两个数字定义了图中中蓝色区域的外边界。也就是说,你的估计表明实际销售额大约有95%的可能性在70到120之间。

因此,

  • 均值是120和70的平均值,在本例中为95。
  • 标准差是120和70之间的差值除以4个标准差,在本例中为12.5。

因此,这是从均值为95且标准差为12.5的正态分布中返回随机数的公式:

=NORM.INV(RAND(), 95, 12.5)

现在让我们检查一下这个公式是否提供给了我们预期的结果。

用直方图检查结果

下面的两个图并不花哨,但它们讲述了在你创建Excel模型或预测时需要了解的事。

图4计算了上一个公式如何成功地从正态分布返回数字。

图4

在单元格中输入公式:

A1:=NORM.INV(RAND(),95,12.5)

将该公式向下复制直到单元格A10000。

在列C中显示列A中的最大值和最小值。

C2:=MIN($A$1:$A$10000)

C3:=MAX($A$1:$A$10000)

列D中输入9个数字作为向导。

在列E中按下面操作: E2:=C2

E3:=E2+($C$3-$C$2)/9

将E3向下复制至E11。注意,单元格E11中的数值应该等于单元格C3中的最大值。

配置直方图数据

列F中包含要在新的直方图中显示的数据,我们使用FREQUENCY函数来生成这些数据。

首先,选择单元格区域F3:F11,然后输入数组公式:

=FREQUENCY(A1:A10000,E3:E11)

注意,是数组公式!因此,应该以Ctrl+Shift+Enter组合键结束公式输入。

创建直方图

选择单元格区域F3:F11,单击功能区“插入”选项卡“图表”组中的“柱形图——簇状柱形图”,创建如下图5所示的图表。

图5

当然,你可以让这个图表更好看些,但这对于测试来说不是必需的。该图表很容易证明我们已经通过组合NORM.INV函数和RAND函数完成了我们想要的:我们现在有一种方法可以从正态分布中返回随机数。

下一篇文章,在如何使用Excel数据表创建蒙特卡罗模型和预测中,会向你展示如何在此基础上使用蒙特卡罗方法创建概率模拟。

注:本文学习整理自exceluser.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档