
使用R进行统计分析—概率计算
R语言中提供了很多概率函数,可以方便的计算事件发生的概率。如二项分布概率函数和泊松分布概率函数。本篇文章介绍如果使用R语言中的这些函数求解事件发生的概率。
概率函数和前缀
R语言中每个概率分布都有对应的函数名称,例如二项分布是binmo,泊松分布是pois,正态分布是norm等等。每个函数都分别有四个不同的前缀,加上前缀可以生成随机数,求解概率和临界值等等。下面是四个前缀对应功能的说明。
r = random = 随机
d= density = 密度
p= probability = 概率
q =quantile = 分位
二项分布概率
假设网站的Landingpage页面中共有20个入口,那么我们预估每个入口被点击的概率为1/20,即P=0.05。(实际情况会复杂一些,每个入口在页面中的位置和展现的形式都 会不一样,一般首屏的入口比后面的入口会获得更多点击,图片和按钮形式的入口比文字类的入口更容易受到关注,导航和焦点图和Action按钮比其他类型的入口更容易 被点击。如有要获得最真实的点击概率,需要参考这个页面中每个入口的历史点击概率数据,这里我们只是假设一种理想情况来说明计算过程。)那么在10000次点击中, 关键按钮获得550次的概率是多少?
先来简单介绍下R语言中的二项分布函数和其中参数的含义,二项分布函数为binom,前缀d表示求密度,前缀p表示求累计概率。参数中X表示实验的成功次数,size表示实验次数,prob表示概率值。在这个例子中成功次数是550,实验次数是10000,概率为0.05。
#点击率0.05的情况下10000次点击中关键按钮恰好被点击550次的概率
> dbinom(x = 550,size = 10000,prob = 0.05)
[1] 0.001362855
经过计算10000次点击中关键按钮恰好被点击550次的概率为0.0013,这只是550次这个事件发生的概率值,并不包含549次点击和551次点击。但实际情况中恰好获得550并不是我们实际的目标。因此我们换一种计算方法再来看下。
#点击率0.05的情况下10000次点击中关键按钮被点击1-550次的概率
> sum(dbinom(x = 1:550,size = 10000,prob = 0.05))
[1] 0.9889429
在成功次数X中从之前的550变成了1:550,然后进行sum求和。获得从1点点击到550次点击的累计概率。从结果中可以看到概率高达0.98。这能说明10000次点击中关键按钮获得550次点击的概率非常高吗?我们能信心满满的说获得550次点击是个高概率事件吗?恐怕还不行。因为这是一个累计概率值,是从1次到550次的汇总。但我们的目标是获得550次或更多的点击,那么550次以下的点击量概率其实是我们不需要的。因此实际的概率值没有这么高。
> pbinom(q = 550,size = 10000,prob = 0.05)
[1] 0.9889429
计算积累概率值还有一个更简单的方法就是在二项分布概率函数的前面加前缀p,就可以自动获得550次点击的累计概率值了。结果与前面的方法一致。
#点击率0.05的情况下10000次点击中关键按钮获得500次到550次区间的点击的概率
> sum(dbinom(x = 500:550,size = 10000,prob = 0.05))
[1] 0.4953496
前面两种方法获得的概率值一个太低,一个太高。还有一种方法是只计算某个区间的概率值,这里我们将获得点击的次数限定在500次——550次之间,来求这一区间的概率值。从结果来看10000次点击中关键按钮获得500次——550次点击的概率为0.49。
#点击率0.05的情况下10000次点击中关键按钮分别获得500次到550次点击的概率
> dbinom(x = 500:550,size = 10000,prob = 0.05)
[1] 0.018301669 0.018265138 0.018190454 0.018078155 0.017929014 0.017744025 0.017524393 0.017271524 0.016987006 0.016672594 0.016330195
[12] 0.015961845 0.015569690 0.015155968 0.014722985 0.014273095 0.013808680 0.013332131 0.012845824 0.012352105 0.011853270 0.011351550
[23] 0.010849097 0.010347966 0.009850108 0.009357356 0.008871418 0.008393869 0.007926149 0.007469553 0.007025237 0.006594211 0.006177343
[34] 0.005775361 0.005388857 0.005018291 0.004663995 0.004326183 0.004004957 0.003700313 0.003412150 0.003140280 0.002884435 0.002644275
[45] 0.002419399 0.002209352 0.002013632 0.001831702 0.001662993 0.001506913 0.001362855
以上是点击量500次——到550次分解的概率值,0.49的概率值由以上的各个概率汇总而来。
#点击率0.05的情况下10000次点击中关键按钮获得550次以上点击的概率
> sum(dbinom(x = 551:10000,size = 10000,prob = 0.05))
[1] 0.01105708
再来看最开始的问题,10000次点击中关键按钮获得550次点击的概率。550次以下的点击不是我们希望的结果,因此我们再来看下点击量超过550次的概率有多少。从结果 来看获得点击量在551次——10000次的概率仅为0.011,因此获得超过550次以上的点击的概率比较低。
#点击率0.05的情况下10000次点击中关键按钮获得550次以上点击的概率
> 1-pbinom(q = 550,size = 10000,prob = 0.05)
[1] 0.01105708
由于从0到10000次点击的所有概率为1,因此用1减550次以下的概率值也能获得相同的结果。
泊松分布概率
假设在一次市场活动中,上一个小时中有40个用户注册,那么下一个小时有50个用户注册的概率是多少?
这里需要使用泊松分布概率函数,泊松分布函数是pois,第一个参数x是下一个时间段事件发生的次数,lambda是上一个时间段事件发生的次数。在这个例子中x=50, lambda=40。
#上一小时产生40个注册用户,下一小时产生恰好50个注册用户的概率
> dpois(x =50,lambda=40)
[1] 0.01770702
经过计算,下一个小时恰好有50个注册用户的概率为0.017。与二项分布中的问题一样,0.017是恰好50个用户的概率。不是49个用户也不是51个用户的概率。
#上一小时产生40个注册用户,下一小时产生1-50个注册用户的概率
> sum(dpois(x =1:50,lambda=40))
[1] 0.947372
把下一小时注册用户的数量改为1:50,并进行求和,获得了下一个小时获得1-50个注册用户的累计概率值。这个值有0.94。但我们的目标是50个注册用户,虽然概率很高 但低于50的事件发生并不是我们的目标。
> ppois(q =50,lambda=40)
[1] 0.947372
这是另一种计算方法,把泊松分布函数的前缀换为p,计算50个注册用户的累计概率值,结果与前面的方法一致。
#上一小时产生40个注册用户,下一小时产生40-50个注册用户区间的概率
> sum(dpois(x =40:50,lambda=40))
[1] 0.4684008
前一小时40个注册用户,后一个小时目标50个注册用户,我们来看下下一个小时注册用户是40-50这个区间的概率是多少。经过计算这个区间发生的概率为0.46。
#上一小时产生40个注册用户,下一小时分别产生40-50个注册用户的概率
> dpois(x =40:50,lambda=40)
[1] 0.06294704 0.06141175 0.05848738 0.05440686 0.04946078 0.04396514 0.03823056 0.03253664 0.02711387 0.02213377 0.01770702
这里显示了40-50个注册用户分别的发生概率,0.46的概率值由以上各个概率值汇总计算获得。
#上一小时产生40个注册用户,下一小时产生50个注册用户以上的概率
>1-ppois(q =50,lambda=40)
[1] 0.05262805
最后再来看下下一个小时注册用户数量超过50的概率。用1减去50个用户的累计概率值就是超过50个注册用户发生的概率,计算结果是0.052,因此下一个小时获得超过50个注册用户的概率不高。文章来源:cda数据分析师官网
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在神经网络模型设计中,“隐藏层层数” 是决定模型能力与效率的核心参数之一 —— 层数过少,模型可能 “欠拟合”(无法捕捉数据 ...
2025-10-14在数字化浪潮中,数据分析师已成为企业 “从数据中挖掘价值” 的核心角色 —— 他们既要能从海量数据中提取有效信息,又要能将分 ...
2025-10-14在企业数据驱动的实践中,“指标混乱” 是最常见的痛点:运营部门说 “复购率 15%”,产品部门说 “复购率 8%”,实则是两者对 ...
2025-10-14在手游行业,“次日留存率” 是衡量一款游戏生死的 “第一道关卡”—— 它不仅反映了玩家对游戏的初始接受度,更直接决定了后续 ...
2025-10-13分库分表,为何而生? 在信息技术发展的早期阶段,数据量相对较小,业务逻辑也较为简单,单库单表的数据库架构就能够满足大多数 ...
2025-10-13在企业数字化转型过程中,“数据孤岛” 是普遍面临的痛点:用户数据散落在 APP 日志、注册系统、客服记录中,订单数据分散在交易 ...
2025-10-13在数字化时代,用户的每一次行为 —— 从电商平台的 “浏览→加购→购买”,到视频 APP 的 “打开→搜索→观看→收藏”,再到银 ...
2025-10-11在机器学习建模流程中,“特征重要性分析” 是连接 “数据” 与 “业务” 的关键桥梁 —— 它不仅能帮我们筛选冗余特征、提升模 ...
2025-10-11在企业的数据体系中,未经分类的数据如同 “杂乱无章的仓库”—— 用户行为日志、订单记录、商品信息混杂存储,CDA(Certified D ...
2025-10-11在 SQL Server 数据库操作中,“数据类型转换” 是高频需求 —— 无论是将字符串格式的日期转为datetime用于筛选,还是将数值转 ...
2025-10-10在科研攻关、工业优化、产品开发中,正交试验(Orthogonal Experiment)因 “用少量试验覆盖多因素多水平组合” 的高效性,成为 ...
2025-10-10在企业数据量从 “GB 级” 迈向 “PB 级” 的过程中,“数据混乱” 的痛点逐渐从 “隐性问题” 变为 “显性瓶颈”:各部门数据口 ...
2025-10-10在深度学习中,“模型如何从错误中学习” 是最关键的问题 —— 而损失函数与反向传播正是回答这一问题的核心技术:损失函数负责 ...
2025-10-09本文将从 “检验本质” 切入,拆解两种方法的核心适用条件、场景边界与实战选择逻辑,结合医学、工业、教育领域的案例,让你明确 ...
2025-10-09在 CDA 数据分析师的日常工作中,常会遇到这样的困惑:某电商平台 11 月 GMV 同比增长 20%,但究竟是 “长期趋势自然增长”,还 ...
2025-10-09Pandas 选取特定值所在行:6 类核心方法与实战指南 在使用 pandas 处理结构化数据时,“选取特定值所在的行” 是最高频的操作之 ...
2025-09-30球面卷积神经网络(SCNN) 为解决这一痛点,球面卷积神经网络(Spherical Convolutional Neural Network, SCNN) 应运而生。它通 ...
2025-09-30在企业日常运营中,“未来会怎样” 是决策者最关心的问题 —— 电商平台想知道 “下月销量能否达标”,金融机构想预判 “下周股 ...
2025-09-30Excel 能做聚类分析吗?基础方法、进阶技巧与场景边界 在数据分析领域,聚类分析是 “无监督学习” 的核心技术 —— 无需预设分 ...
2025-09-29XGBoost 决策树:原理、优化与工业级实战指南 在机器学习领域,决策树因 “可解释性强、处理非线性关系能力突出” 成为基础模型 ...
2025-09-29