2024年6月21日,星期五

如何在Excel中运行蒙特卡罗模拟:5个关键步骤

数据内容和产品推荐在编辑上是独立的。当你点击我们合作伙伴的链接时,我们可能会赚钱。了解更多信息.

蒙特卡罗模拟是一种用于不同行业和领域的数学技术,用于模拟难以预测的场景和结果。尽管他们的名字叫什么,但你不必是一个赌徒才能体会到他们的价值。事实上,蒙特卡洛模拟的目的是通过预测不确定或不可预见事件的广泛潜在结果,将赌注从战略决策过程中抽离出来。

电子表格非常适合这种数据建模,学习如何在Microsoft Excel或类似软件中运行蒙特卡罗模拟可以为决策工具集添加强大的预测工具。接下来,我将使用正态分布创建蒙特卡罗模拟,以生成随机变量,从而学习如何在您自己的工作中使用这一有价值的技术。

什么是蒙特卡罗模拟?

简单地说,蒙特卡罗模拟是任何统计过程的虚拟表示,它使用随机生成的数字来解决问题——更具体地说,它通常指生成一系列结果,称为任何统计问题的分布,其中包括一系列反复采样的输入。

想象一下自己在掷骰子。如果你把它们扔了几十万次甚至几百万次,你就会开始理解某些组合出现的几率。Monte Carlo Simulations复制了这一想法,让我们能够快速高效地执行相同类型的统计分析。通过改变输入,您可以对各种可能的结果进行建模并进行比较,以帮助您在现实世界中做出决策,使其成为一个受欢迎的强大的企业预测工具.

步骤1:设置蒙特卡洛模拟

假设您正在创建一份有关您所在行业中其他类似公司薪资水平的人力资源报告。要构建此报告,您需要一个虚构但准确的竞争公司每个员工的年薪表示。

你有数据表明平均年薪为40000美元,标准差为10000美元。您希望根据具有指定平均值和标准偏差的正态分布生成随机薪资值-每次重新计算公式时,它都应生成一个遵循给定分布的新随机薪资。

第一步是在空白处设置模拟Microsoft Excel表如下:

  • 创建标记为“试验编号”和“正常随机变量”的两列
  • 为“模拟平均值”和“模拟标准偏差”创建两个具有相应标签的字段

Excel工作表屏幕截图。

平均值通常被称为算术平均值或平均值,是一种中心趋势的统计度量,表示一组值的总和除以该组观测值的总数。

标准偏差和平均值/平均值计算对于确保模拟符合预期是必不可少的。

标准偏差

标准偏差通过量化数据集中单个值偏离平均值的程度来衡量一组值的变化量或离散度。

  • 较低的标准偏差表明这些值趋向于接近平均值。
  • 高标准偏差表明这些值分布在更大的范围内。

标准偏差的计算方法是取方差的平方根,即每个数据点与平均值之间的平方差的平均值。当一起使用时,平均值/平均值和标准偏差提供了数据集特征的更完整图片。这允许您评估数据点的分布,并对分析数据集的可变性和可靠性做出明智的结论。

正态/高斯分布

蒙特卡罗模拟基于特定类型的统计分布生成一系列随机观测值。这些分布可以表示为确定特定结果可能性的概率曲线。

我为这个示例创建的蒙特卡罗模拟使用正态分布或高斯分布,因此,您可以预计大约68%的数据在平均值的一个标准偏差内,95%在两个标准偏差之内,大约99.7%在三个标准偏差以内。

正态分布或高斯分布形成标准钟形曲线的形状。
正态分布或高斯分布形成标准钟形曲线的形状。

正态分布或高斯分布可能因其标准钟形曲线的视觉表现而最为人所知;绘制时,该函数的特征是每侧分布均匀,尾部在X轴上延伸到无穷远。

在正态分布中,中值和平均值是相同的,即零偏差和对称图。正态分布适用于高于或低于平均值的可能性相等的连续数据,通常用于测量徘徊在平均值附近的连续数据。例如,教师通常会在正态分布曲线上给学生的考试成绩打分,以确保公平性。

第2步:为试验或迭代创建行

在本例中,让我们模拟平均值为40000、标准偏差为10000的正态随机变量的100次试验或迭代。以下是如何在Excel工作表中进行设置:

  • 在“试验编号”列中,手动将前两个连续值(1和2)插入标题下方的前两行。
  • 突出显示这两个值——可拖动的绿色边缘将显示在选择的右下角。
  • 将绿色边缘向下拖动到列中,以在“试验编号”列中创建100个连续行值。

Excel工作表屏幕截图。

步骤3:生成随机值变量

Excel中的蒙特卡罗模拟特别依赖于两个函数:RAND()和NORM.INV。第一个函数RAND。第二个是NORM.INV,在本例中返回指定平均值和标准偏差的正态累积分布的倒数,分别为40000和10000。

要生成这些值:

  • 在“正常随机变量”列的第一个字段中插入以下公式:

=正常发票(兰德(),4000010000)

  • 选择该值并将绿色边缘向下拖动到列中,直到有100个正常的随机变量作为行值。

Excel工作表屏幕截图。

第四步:验证你的价值观

如果您粗略地看一下结果值,您会注意到它们在分布方面看起来相当正常,这是应该的。我们可以通过计算蒙特卡罗模拟中整个生成数据集的平均值/平均值和标准偏差来验证这一点:

  • 在“模拟平均值”标签旁边的字段中插入以下公式,以获得平均值/平均值:

=平均值(B2:B101)

确保用电子表格中的实际数据范围替换“B2:B101”。

  • 在“标准偏差”标签旁边的字段中插入以下公式,以获得数据集的标准偏差:

=STDEV(B2:B101)

同样,确保将“B2:B101”替换为电子表格中的实际数据范围。

完成这些步骤后,您的蒙特卡洛模拟结果应该与下图中的输出类似。

Excel工作表屏幕截图。

在将硬编码的指定平均值/平均值和标准偏差值与模拟数据集生成的平均值/均值和标准偏差进行比较时,您将看到这些值似乎符合预期。

平均值(平均值) 标准偏差
明确规定 40,000 10,000
模拟 38504.53 9418.857

第5步:可视化蒙特卡洛模拟结果

由于我们使用NORM.INV函数来创建正态随机变量值,因此该图应类似于标准的bell-curve分布。您可以通过在Excel中绘制直方图来验证这一点;

  • 要验证结果是否符合预期的正态分布曲率,请选择“正态随机变量”列中的所有值。
  • 接下来,选择“插入”菜单,然后单击小箭头以展开功能区并显示所有可用的图表选项。
  • 选择“所有图表”,然后从列表中选择直方图。
  • 生成的直方图直观地表示了结果的分布,并将结果分组到各个箱子中,如下图所示。

Excel工作表屏幕截图,带有插图。

如您所见,您的蒙特卡罗模拟符合标准分布—您可以在直方图的外边缘上跟踪钟形曲线的线条轮廓。

显示钟形曲线的图表。

请记住,我们的目标是创建一个与您类似的公司的年薪虚拟表示,以生成有关竞争企业的薪资水平的HR报告,而您的数据显示平均年薪为40000美元,标准偏差为10000美元。

使用我们的蒙特卡罗模拟结果,您可以获得一个科学推导的假设竞争对手工资样本数据集,以与您自己的工资进行比较。

在Excel中使用其他蒙特卡罗模拟分布类型

除了正态分布/高斯分布外,Excel还提供了许多统计分布类型,可用于蒙特卡洛模拟。您可以在公式菜单下找到它们,方法是选择“更多函数”,然后选择“统计”。我发现有几个函数比其他函数更有用,因为它们代表了更常见的分布类型。

均匀分布

在均匀分布中,最小值和最大值之间的可能性相等。从视觉上看,均匀分布在图形上绘制时看起来像一个矩形。均匀分布通常用于生成随机数,以及在其他涉及同样可能发生的事件的场景中。

均匀分布在图形上绘制时看起来像一个矩形。
均匀分布在图形上绘制时看起来像一个矩形。

对数正态分布

顾名思义,对数正态分布有一个具有平均值和标准偏差的正态分布对数。对数正态分布向右倾斜,非常适合建模速率描述,例如维修时间、设备故障率和收入分布。

对数正态分布向右倾斜,非常适合建模速率描述。
对数正态分布向右倾斜,非常适合建模速率描述。

泊松分布

泊松分布非常适合于处理靠近起点的大分布,这些分布在一侧迅速消散为长尾。它们最适合预测给定时间段内发生的事件数量,例如,客户每季度的购买量或每天的交易量。

泊松分布非常适合处理消散为长尾的大型分布。
泊松分布非常适合处理消散为长尾的大型分布。

Excel中蒙特卡罗模拟的局限性

Excel可以是许多蒙特卡洛模拟的有用工具,但该软件作为桌面或软件即服务(SaaS)应用程序的局限性值得记住。

随机数生成

Excel内置的随机数生成器使用伪随机数生成器,在某些用例中,随机性的质量可能会受到关注。高级模拟可能需要更复杂的随机数生成技术。

复杂模型的灵活性有限

Excel可能不适合高度复杂的模型涉及复杂的相互依赖、非线性关系或动态系统。在这些情况下,我建议使用专门的模拟或统计软件或编程语言。

对先进技术的支持有限

一些先进的蒙特卡罗模拟技术,如自适应采样或先进的方差减少方法,如果不诉诸复杂的解决方案,很难在Excel中实现。

缺乏并行处理

与基于云的数据仓库或统计包不同,Excel无法进行并行处理和水平扩展。这限制了它在进行模拟时的性能,因为它缺乏加快计算速度的并行化机制。

用于处理数据的Excel加载项

数据模拟-生成合成数据以密切模拟真实世界数据的属性和特征,可以让数据科学家、工程师和商业企业以真实世界数据成本的一小部分访问培训数据,并为各种预测建模、风险评估和其他好处。

蒙特卡洛模拟只是一个可能的例子,虽然Excel的广泛统计功能在许多情况下对它们来说已经足够了,但它缺乏深入分析模拟结果所需的一些更先进的统计分析工具。为此,我建议您直接从Excel中安装许多第三方和Microsoft提供的统计插件中的一个。

然而,即使有插件,桌面电子表格应用程序也不是为繁重的计算任务而设计的。随着模拟次数或模型复杂性的增加,计算时间可能会很快超过您的系统。对于大规模仿真,专用统计软件包或编程语言可能对高级建模目的.

常见问题(FAQ)

蒙特卡罗模拟的准确性如何?

蒙特卡罗模拟通过随机抽样估计数值结果,因此蒙特卡罗仿真方法的准确性随样本大小的增加而增加。也就是说,准确度还受到其他因素的影响,例如随机数生成器的质量。例如,Excel的随机数生成器在这方面是有限的。

多少蒙特卡罗模拟就足够了?

蒙特卡洛模拟的理想样本量取决于各种因素,包括所需的精度水平和建模系统/场景的特征。但您可以使用更高级的统计工具来确定理想样本量。例如,运行敏感性分析可以让您确定样本大小的变化如何影响模拟的稳定性/可靠性;这涉及使用不同样本大小运行模拟,并观察结果的变化。

蒙特卡罗模拟是否假设正态分布?

一般来说,如果你的样本量足够大,所有模拟都会假设正态分布;然而,根据模拟数据的特定上下文/性质,其他分发类型之一可能更适合您的用例。运行敏感性分析可以比较不同的数据分布对结果的影响。

我可以使用Excel以外的软件运行蒙特卡罗模拟吗?

是的,您可以使用类似的电子表格程序谷歌工作表Zoho床单运行蒙特卡洛模拟。高级统计软件包,如IBM SPSS软件SAS公司在运行蒙特卡洛模拟时提供更多功能和选项,但代价是学习曲线陡峭。

底线:在Excel中运行蒙特卡罗模拟

蒙特卡洛模拟是企业决策、风险评估和预测的简单易用的强大机制。尽管有一些限制,Excel和类似的电子表格工具仍然是进行基本蒙特卡罗模拟的有效选项,并且应该证明它是分析工具包中不可或缺的统计工具。对于更复杂的应用程序,我建议您考虑专门的模拟软件包或编程语言,如蟒蛇,R(右),或MATLAB软件.

如果您对蒙特卡洛模拟感兴趣,请了解更多有关数据建模与数据架构的区别或阅读我们的逻辑和物理数据模型综合指南.

订阅Data Insider

了解有关数据科学、大数据分析、人工智能、数据安全等方面的最新新闻和最佳实践。

类似文章

获取免费新闻稿!

订阅Data Insider以获取热门新闻、趋势和分析

最新文章