费米估算(一种数据分析的快速估算方法)【附实际案例】

2023-10-13 10:59

本文主要是介绍费米估算(一种数据分析的快速估算方法)【附实际案例】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、概念

二、原理

三、估算遵循的一般步骤

四、实际案例分析

案例1.芝加哥有多少个钢琴调音师?

案例2.北京市一年所有KFC店铺的营业额

附:一些估算市场规模时可能用到的数据


一、概念

费米估算是一种快速估计的方法,通常用于研究早期阶段或缺乏准确数据的问题

由于其简单性和粗略性,不适用于对精确结果有严格要求的情况。然而,在许多情况下,尤其是信息不完全时,费米估算提供了一个有用的起点,可以帮助人们快速了解一个问题的大致范围和趋势。

二、原理

费米估算指的是解决少量信息的复杂估算问题,将复杂的问题拆解成常识性和已知的小问题,进而进行计算得到结果,所以解决问题的关键,主要有2个方面:
1.问题拆解
将未知的数逐步拆解成已知的部分,从而将一个未知结果的问题逐步变得清晰。问题拆解要按照一定的原则进行,比如使用MECE原则(不重复、不遗漏的拆解问题方法),将复杂问题层层拆解为简单的子问题,从而解决问题。

【MECE原则相关内容链接】

MECE原则(一种工作项目分解方法)_暗与的博客-CSDN博客

BTW:不要将问题拆解为无法估算的子问题。如估算江苏省有多少饭店时,对饭店进行分解,分成高档、中档、低档三类,就会发现分析难以继续,因为把饭店分成高档、中档、低档三类并没有什么意义,很难继续展开有效分析。

2.常识数据准确
当拆解到实际子问题的时候,确保实际常识代表的数据是有生活经验的支撑,而非凭空担造的。

三、估算遵循的一般步骤

进行费米估算通常包括以下步骤

1.确定问题的关键参数或变量:

       首先,需要明确定义问题,拆解复杂问题为子问题,并确定对结果有重要影响的关键参数或变量。这些参数可能是需要估计的数量、影响结果的因素等。

2.进行近似和假设:

       为了简化问题,需要进行一些近似和假设。这些近似和假设通常是基于经验、常识或已知的信息。它们帮助将复杂的问题转化为更易于处理的形式。

3.估计参数数量级:

       根据问题的背景知识和假设,对每个参数估计其数量级。这可以通过合理的推测、类比、已知数据或领域专家的意见来进行。目标是获得一个粗略的估计,而不需要准确的数值。

4.进行简单的计算:

        将估计的参数数量级结合起来,进行简单的计算以得出结果的数量级估计。这可以是加法、乘法、指数等简单运算。计算的目的是获得一个粗略的答案,而不是准确的结果。

5.检查和调整估算结果:

       需要对估算结果进行检查和调整。评估结果是否合理,并根据需要进行修正。这可能涉及到重新评估参数的数量级、修改假设或重新考虑近似方法等。

四、实际案例分析

案例1.芝加哥有多少个钢琴调音师?

这是最经典的费米估算问题,费米由此提出了天才的大数估算法:对于小问题的估算,不要估算其本身,而是先估算其上下界,然后在10倍的范围内估算出数值。下面是费米的估算过程:

费米将原问题按照总人数=总时长/单个时长的逻辑,分解为:

①每年芝加哥全部调音师的工作时长:

<1>芝加哥有多少架钢琴?

<2>每架钢琴多久调一次音?

<3>一位调音师每次调多久?

②一位调音师每年的工作时间:

<1>一位调音师每年工作几天?

<2>一位调音师每天工作多久?

此时,就完成了【确定问题的关键参数或变量】的过程。

第一个基本问题,如何知道芝加哥的钢琴数,费米先估算了芝加哥总居民数是300万(这个不用估算,数据可直接获取),平均每个家庭有4个人(美国四口家庭居多),那么芝加哥估计会有75万个家庭。

这些家庭中有多少拥有钢琴呢?在当时的美国,钢琴属于半稀缺物品,拥有钢琴的家庭应该不会超过1/2,也不会低于1/10,因此费米估算为1/3,那么全市大概会有25万架钢琴。

第二个基本问题,每架钢琴每年需要调音几次,调音师不是常见的岗位,调音次数应该不会超过1年3次,也不会低于10年1次,因此费米估算为3年1次,也就是每年0.33次,那么每年全市有8.3万架钢琴需要调音。

第三个基本问题,调音一次要花多久,不会超过10小时,也不会低于1小时,因此费米估算为3小时。

这样第一个大问题就解决了,总钢琴的总调音时长大约是3*83000=249000h

对于第二个大问题:每年每位调音师工作多久?

假设调音师一年工作250天,除去每天工作地点的往返时间,那么一年的工作时间就是250*24*0.6=3600h

此时,所有的问题都已经估算出了结果,最终调音师数量=249000/3600=69位

此过程中,完成了【进行近似和假设】、【估算参数数量级】&进行简单的计算】。

经过费米和学生们事后进行电话号码验证,大概芝加哥市有80位调音师,除去一些号码重复情况,其结果跟费米估算的相差无几。【检查和调整估算结果

BTW:平均律原则

如果将费米估算中家庭拥有钢琴率改为1/5,而不是1/3,其结果就会改变。

因此,费米在估算法中涉及到了一个数据概念:平均律

原理:在任何一组计算中,估算带来的错误都可以相互抵消,所做的假设越多,被抵消的概率就会越大

换成数据分析的语言就是,在假设或者猜测某一个小事件的时候,做出的推测假设有可能有的过高,有可能有的过低,如果这些假设的数量足够,最终误差就会被相互抵消,整体结果最终会呈现为一个平均值,这就是平均律原理。

根据费米的大数估算法,估算问题时,确定一个估算上边界,以及一个估算下边界,所有落在这个范围里面的点都会趋向于平均值,落在平均值上的点和平均值下的点就会相互抵消消除,其结果就趋于一个准确值。

案例2.北京市一年所有KFC店铺的营业额

这类问题通常从需求侧供给侧进行分析,这种双重分析有助于提供更全面的视角,考虑到需求和供给之间的相互作用和影响。

需求侧分析关注消费者的需求和行为,通过对目标群体的数量、消费频率和消费金额的估计,来评估市场的需求量和潜在的消费额。这种分析提供了对市场需求的了解,有助于确定潜在的消费者群体、他们的消费习惯和消费水平。需求侧分析的关键是确定目标群体和他们的消费行为,并估计他们对产品或服务的需求量和支付能力

供给侧分析关注供应商、生产者或服务提供者的角度,通过考察供给市场的情况,包括竞争对手、市场份额和营业额等因素,来估计市场的供给量和潜在的销售额。这种分析提供了对市场供给的了解,有助于确定竞争环境、供应商数量和他们的销售能力。供给侧分析的关键是确定供应市场的情况,包括竞争程度和市场占有率,并估计供应商的销售能力和市场份额

需求侧分析:

我们要估算北京市一年所有KFC店铺的营业额。【明确问题】

假设北京市的人口分为老人、青年和儿童,并且每个年龄段的人均消费金额和消费次数相对稳定。【近似和假设】

根据北京市的人口数据,我们假设老人(60岁及以上)占总人口的20%,青年人(18-59岁)占总人口的60%,儿童(0-17岁)占总人口的20%。同时,我们估计每个年龄段的人均KFC消费次数和金额。老人每月的消费次数为1次,人均消费金额为50元人民币;青年每月的消费次数为5次,人均消费金额为60元人民币;儿童每月的消费次数为2次,人均消费金额为30元人民币。【估计参数的数量级】

首先,计算老人口的数量:总人口 * 20% = 2150万 * 20% = 430万人。然后,计算老人的年消费总额:430万人 * 12个月 * 1次/月 * 50元/次 = 2580万元人民币。

接下来,计算青年人口的数量:总人口 * 60% = 2150万 * 60% = 1290万人。然后,计算青年的年消费总额:1290万人 * 12个月 * 5次/月 * 60元/次 = 46,440万元人民币。

最后,计算儿童人口的数量:总人口 * 20% = 2150万 * 20% = 430万人。然后,计算儿童的年消费总额:430万人 * 12个月 * 2次/月 * 30元/次 = 3096万元人民币。【进行简单的计算】

据此,估算北京市的总需求为2580万元人民币(老人)+ 46440万元人民币(青年)+ 3096万元人民币(儿童)= 52016万元人民币。

供给侧分析:

我们要估算北京市一年所有KFC店铺的营业额。【明确问题】

近似和假设:假设不同区域的KFC店铺数量和每个店铺同类型竞品的年平均营业额存在差异。【近似和假设】

估计参数的数量级:我们需要考虑不同区域的店铺数量和每个店铺同类型竞品的年平均营业额的数据。假设北京市核心区(如海淀区、西城区等人口密集区域,单个店铺的营业额高于平均水平)有30家KFC店铺,每家店铺同类型竞品的年平均营业额为1000万元人民币;假设北京市非核心区或稍偏远地区(如通州区、昌平区等)有20家KFC店铺,每家店铺同类型竞品的年平均营业额为600万元人民币。【估计参数的数量级】

将每个区域的店铺数量乘以每家店铺同类型竞品的年平均营业额,然后将各区域的营业额相加。

北京市核心区KFC店铺的年营业额:30家店铺 * 1000万元/家 = 30000万元人民币;

北京市非核心区KFC店铺的年营业额:20家店铺 * 600万元/家 = 12000万元人民币。

所有区域的年营业额总和为:30000万元人民币 + 12000万元人民币 = 42000万元人民币。【进行简单的计算】

根据供给侧分析,估算北京市所有KFC店铺的年营业额为30000万元人民币(核心区)+ 12000万元人民币(非核心区)= 42000万元人民币。

可以看到需求侧的总消费额(52016万元人民币)大于供给侧的营业额(42000万元人民币),此时需要判断估计参数是否符合实际,进行估算的适当调整。【检查和调整估算结果

面对需求侧的总消费额超过供给侧的营业额,北京区域的KFC可以通过扩大供给能力、调整定价策略、拓展新区域、加强市场调研和与竞争对手合作等方式来应对这一挑战,以实现供需的平衡并提高市场份额。

附:一些估算市场规模时可能用到的数据

费米估算常用数据(市场估计)_暗与的博客-CSDN博客

这篇关于费米估算(一种数据分析的快速估算方法)【附实际案例】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/202730

相关文章

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

SpringBoot快速搭建TCP服务端和客户端全过程

《SpringBoot快速搭建TCP服务端和客户端全过程》:本文主要介绍SpringBoot快速搭建TCP服务端和客户端全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录TCPServerTCPClient总结由于工作需要,研究了SpringBoot搭建TCP通信的过程

Pandas进行周期与时间戳转换的方法

《Pandas进行周期与时间戳转换的方法》本教程将深入讲解如何在pandas中使用to_period()和to_timestamp()方法,完成时间戳与周期之间的转换,并结合实际应用场景展示这些方法的... 目录to_period() 时间戳转周期基本操作应用示例to_timestamp() 周期转时间戳基

在 PyQt 加载 UI 三种常见方法

《在PyQt加载UI三种常见方法》在PyQt中,加载UI文件通常指的是使用QtDesigner设计的.ui文件,并将其转换为Python代码,以便在PyQt应用程序中使用,这篇文章给大家介绍在... 目录方法一:使用 uic 模块动态加载 (不推荐用于大型项目)方法二:将 UI 文件编译为 python 模

Python将字库文件打包成可执行文件的常见方法

《Python将字库文件打包成可执行文件的常见方法》在Python打包时,如果你想将字库文件一起打包成一个可执行文件,有几种常见的方法,具体取决于你使用的打包工具,下面就跟随小编一起了解下具体的实现方... 目录使用 PyInstaller基本方法 - 使用 --add-data 参数使用 spec 文件(

Python的pip在命令行无法使用问题的解决方法

《Python的pip在命令行无法使用问题的解决方法》PIP是通用的Python包管理工具,提供了对Python包的查找、下载、安装、卸载、更新等功能,安装诸如Pygame、Pymysql等Pyt... 目录前言一. pip是什么?二. 为什么无法使用?1. 当我们在命令行输入指令并回车时,一般主要是出现以

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

MySQL连接池(Pool)常用方法详解

《MySQL连接池(Pool)常用方法详解》本文详细介绍了MySQL连接池的常用方法,包括创建连接池、核心方法连接对象的方法、连接池管理方法以及事务处理,同时,还提供了最佳实践和性能提示,帮助开发者构... 目录mysql 连接池 (Pool) 常用方法详解1. 创建连接池2. 核心方法2.1 pool.q