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

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

相关文章

MyBatis与其使用方法示例详解

《MyBatis与其使用方法示例详解》MyBatis是一个支持自定义SQL的持久层框架,通过XML文件实现SQL配置和数据映射,简化了JDBC代码的编写,本文给大家介绍MyBatis与其使用方法讲解,... 目录ORM缺优分析MyBATisMyBatis的工作流程MyBatis的基本使用环境准备MyBati

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Nginx中location实现多条件匹配的方法详解

《Nginx中location实现多条件匹配的方法详解》在Nginx中,location指令用于匹配请求的URI,虽然location本身是基于单一匹配规则的,但可以通过多种方式实现多个条件的匹配逻辑... 目录1. 概述2. 实现多条件匹配的方式2.1 使用多个 location 块2.2 使用正则表达式

Python如何快速下载依赖

《Python如何快速下载依赖》本文介绍了四种在Python中快速下载依赖的方法,包括使用国内镜像源、开启pip并发下载功能、使用pipreqs批量下载项目依赖以及使用conda管理依赖,通过这些方法... 目录python快速下载依赖1. 使用国内镜像源临时使用镜像源永久配置镜像源2. 使用 pip 的并

前端bug调试的方法技巧及常见错误

《前端bug调试的方法技巧及常见错误》:本文主要介绍编程中常见的报错和Bug,以及调试的重要性,调试的基本流程是通过缩小范围来定位问题,并给出了推测法、删除代码法、console调试和debugg... 目录调试基本流程调试方法排查bug的两大技巧如何看控制台报错前端常见错误取值调用报错资源引入错误解析错误

Springboot控制反转与Bean对象的方法

《Springboot控制反转与Bean对象的方法》文章介绍了SpringBoot中的控制反转(IoC)概念,描述了IoC容器如何管理Bean的生命周期和依赖关系,它详细讲解了Bean的注册过程,包括... 目录1 控制反转1.1 什么是控制反转1.2 SpringBoot中的控制反转2 Ioc容器对Bea

C++实现回文串判断的两种高效方法

《C++实现回文串判断的两种高效方法》文章介绍了两种判断回文串的方法:解法一通过创建新字符串来处理,解法二在原字符串上直接筛选判断,两种方法都使用了双指针法,文中通过代码示例讲解的非常详细,需要的朋友... 目录一、问题描述示例二、解法一:将字母数字连接到新的 string思路代码实现代码解释复杂度分析三、

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Spring Boot 中正确地在异步线程中使用 HttpServletRequest的方法

《SpringBoot中正确地在异步线程中使用HttpServletRequest的方法》文章讨论了在SpringBoot中如何在异步线程中正确使用HttpServletRequest的问题,... 目录前言一、问题的来源:为什么异步线程中无法访问 HttpServletRequest?1. 请求上下文与线