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

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

相关文章

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

Java循环创建对象内存溢出的解决方法

《Java循环创建对象内存溢出的解决方法》在Java中,如果在循环中不当地创建大量对象而不及时释放内存,很容易导致内存溢出(OutOfMemoryError),所以本文给大家介绍了Java循环创建对象... 目录问题1. 解决方案2. 示例代码2.1 原始版本(可能导致内存溢出)2.2 修改后的版本问题在

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha

golang1.23版本之前 Timer Reset方法无法正确使用

《golang1.23版本之前TimerReset方法无法正确使用》在Go1.23之前,使用`time.Reset`函数时需要先调用`Stop`并明确从timer的channel中抽取出东西,以避... 目录golang1.23 之前 Reset ​到底有什么问题golang1.23 之前到底应该如何正确的

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex