Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用泊松和(或)二项分布分析劈裂试验(A/B)

用泊松和(或)二项分布分析劈裂试验(A/B)
EN

Data Science用户
提问于 2014-08-08 05:44:52
回答 3查看 4.1K关注 0票数 2

从交叉验证的交叉张贴:

我以前见过这个问题,但我还没有找到一个明确的消息来源来回答以下具体问题:

  • 应用于小型A/B测试的最合适的统计测试是什么?
  • 分析小型A/B测试的R代码和解释是什么?

我正在做一个小测试,看看哪些广告表现得更好。我有以下结果:

位置1:

variation,impressions,clicks row-1,753,26 row-3,767 7

位置2:

variation,impressions,clicks row-1,753,16 row-3,767 13

位置3:

variation,impressions,clicks row-1,753,2 row-3,767 7

我认为可以肯定地说,这些数字很小,很可能不是正态分布的。此外,它是点击数据,所以有一个二元的结果点击与否和试验是独立的。

合适的测试

在分析每个位置的重要性,我认为比较二项式或泊松分布是最有意义的。

根据OpenIntro统计 (和其他来源)的书,变量遵循泊松分布“.如果考虑的事件是罕见的,人口就很大,并且事件是相互独立发生的。”

同一来源对二项式变量进行了大致相同的分类,并补充说,成功的概率是相同的,试验的次数是固定的。

我理解这不是一个任意/或一个决定,可以使用这两个发行版进行分析。

鉴于A/B (拆分)测试是一门已经实践了几年的科学,我想有一个规范的测试。然而,环顾互联网,我大部分时间都会遇到使用标准正态分布的分析。这似乎是错误的:)

对于点击次数较小的S的A/B测试,是否有标准测试?

解释与R码

我使用了以下R代码来测试每个职位的重要性:

立场1:

代码语言:javascript
运行
AI代码解释
复制
binom.test(7, 767, p=(26/753))

Exact binomial test

data:  7 and 767
number of successes = 7, number of trials = 767, p-value = 1.077e-05
alternative hypothesis: true probability of success is not equal to 0.03452855
95 percent confidence interval:
 0.003676962 0.018713125
sample estimates:
probability of success 
           0.009126467

我将这一结果解释为:试验组的成功概率确实不同于对照组,其95%的置信区间为.368%和1.87%之间。

代码语言:javascript
运行
AI代码解释
复制
ppois(((26-1)/753), lambda=(7/767), lower.tail = F)
[1] 0.009084947

我对这个结果的解释是:假设泊松分布的点击率为每767次试验7次,那么在同一分布中,每753次试验中有26次或更多次的点击率为0.9%。在广告示例中,在上下文化的情况下,控制广告实际上执行与测试广告相同的.1%可能性。

以上解释正确吗?测试和解释是否随着不同的位置而变化(即泊松测试的结果是否更适合于位置3,给定较小的数目)?

EN

回答 3

Data Science用户

发布于 2014-08-17 06:17:41

好的,这是你的数据。

代码语言:javascript
运行
AI代码解释
复制
dd <- data.frame(position=rep(1:3, each=2), 
                 variation=rep(c(1,3), 3), 
                 impressions=rep(c(753, 767), 3), 
                 clicks=c(26,7,16,13,2,7))

这就是

代码语言:javascript
运行
AI代码解释
复制
  position variation impressions clicks
1        1         1         753     26
2        1         3         767      7
3        2         1         753     16
4        2         3         767     13
5        3         1         753      2
6        3         3         767      7

你正在考虑的两个模型假设是二项式的

代码语言:javascript
运行
AI代码解释
复制
mod.bin <- glm(cbind(clicks, impressions-clicks) ~ variation + position,
               family=binomial, data=dd)

其中,因变量被构造为在第一列中有兴趣事件的计数,以及Poisson

代码语言:javascript
运行
AI代码解释
复制
md.pois <- glm(clicks ~ variation + position + offset(log(impressions)), 
               family=poisson, data=dd)

当试验次数因观察而异时,log(impressions)偏移是必要的。这意味着系数可以用比率的变化来解释,而不是在计数上的变化,这就是你想要的。

第一个模型将binom.test概括为一个具有协变量的设置,这就是您所拥有的。这可以让你更直接地回答你的问题,更好地(如果不是完美的)测量相关的不确定性。

Notes

这两种模型都假定变化与位置之间不存在交互作用(“独立效应”)。这可能是合理的,也可能不是合理的。你会想要更多的复制品来正确地调查这个问题。将+替换为*

在这个数据中,summary证实了这两个模型给出了相当相似的结果,因此对泊松与二项式的关注似乎并不重要。

在野外,计数数据通常是过分散的,也就是说:比您预期的更多的变量来自具有恒定速率的泊松或具有恒定点击概率的二项分布,这通常是由于未建模的单击率/概率的决定因素。如果是这样的话,那么这些模型的预测间隔就太窄了。

票数 2
EN

Data Science用户

发布于 2014-09-25 23:47:45

正确的模型是二项式的,泊松和正态都是近似的。二项式pdf定义在零和试验次数之间的整数上。poisson定义在0到无穷之间的整数上,法向定义在+/-无穷远之间的所有实变量上。

换句话说,对于泊松来说,有一个(可能很小)但非零的概率,有更多的点击,而不是印象。对于高斯,你甚至可以有负点击。当然,特定的参数决定了它的影响有多大.可能值得绘制相应的pdfs。

票数 1
EN

Data Science用户

发布于 2014-08-08 11:23:33

本文给出了近似二项式(k,n,p) ~=泊松(k,s) (S= n*p)的假设条件:

( 1) n >> k(说n!/(n-k)!~= n^k),

2) p <<1 (即(1-p)^(N) ~= (1-p)^n)。

这取决于你是否足够满意。如果能快速完成精确的计算,在我看来,保持这一点是很好的。

另外,如果第3行样本的概率与第1行样本的概率不同,那么它几乎肯定位于较低的一侧。也许你最好用

binom.test(7,767,p=(26/753),alternative=' less ')最后一个选项,表明你的零假设的替代方法是概率小于26/753,不等于。当然,这只是从0到7的二项式概率之和(你可以自己检查一下),解释是,如果概率真的是26/753,这是最多从随机机会得到7圈的概率。

记住对最后一句的解释。当我们知道我们所比较的内在概率时,通常会使用这类测试(例如,看看硬币翻转的概率是否与1/2的概率有很大的不同,这就是我们对公平硬币的期望)。在这种情况下,我们不知道我们比较的概率是多少,我们只是粗略地猜测,第1行的26/753结果反映了真实的概率。在这种情况下,它比常规的常规t检验要好,但是,除非您对第1行有更高的样本大小,否则不要将太多的库存投入其中。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/946

复制
相关文章
vue中在父组件点击按钮触发子组件的事件
1、父组件的button元素绑定click事件,该事件指向notify方法 2、给子组件注册一个ref=“child” 3、父组件的notify的方法在处理时,使用了$refs.child把事件传递给子组件的parentMsg方法,同时携带着父组件中的参数msg 4、子组件接收到父组件的事件后,调用了parentMsg方法,把接收到的msg放到message数组中
江一铭
2022/06/16
6.5K0
vue.js 父组件如何触发子组件中的方法
组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。
IT工作者
2022/02/17
4.8K0
vue 父组件调用子组件的函数_vue子组件触发父组件方法
项目里将element-ui的el-upload写成公共组件方便调用,官方的before-upload方法用于处理上传前要做的事,如:比较文件大小,限制文件类型等,通过返回true 或 false 控制是否上传。 当该组件调用父组件方法,并且要能获取到父组件方法的返回值,如何实现?
全栈程序员站长
2022/11/10
3K0
vue子组件传值给父组件_子组件调用父组件中的方法
大家好,又见面了,我是你们的朋友全栈君。 参考视频 : https://www.bilibili.com/video/av32790541/?spm_id_from=trigger_reload 原
全栈程序员站长
2022/10/04
4.3K0
vue子组件传值给父组件_子组件调用父组件中的方法
Vuejs中父组件主动调用子组件的方法
我们都知道,vue是单向流,但是有时候我们需要在父组件中主动通知子组件一些信息,使其做出一些响应变化,那么如何在父组件中去主动调用子组件的方法呢?Vue当然给我们提供了方法,如下:
飞奔去旅行
2019/06/13
5.1K0
Vue父组件调用子组件事件
Vue父组件向子组件传递事件/调用事件 不是传递数据(props)哦,适用于 Vue 2.0 方法一:子组件监听父组件发送的方法 方法二:父组件调用子组件方法 子组件: export default { mounted: function () { this.$nextTick(function () { this.$on('childMethod', function () { console.log('监听成功') })
大鹅
2021/06/11
7490
Vue父组件与子组件传递事件/调用事件
如上:通过this.$emit()来触发父组件的方法。具体就是子组件触发$emit绑定的事件watchChild,然后父组件监听watchChild,一旦watchChild被触发便会触发父组件的parentReceive方法。
IT工作者
2022/02/17
3.5K0
输入框在输入中文时回车误触发输入的回车事件
这个问题出现在:chatx.me的输入框 最近反应的人比较多,然后还是问了下前前端同事,解决了。
SingYi
2023/08/23
3500
阻止中文输入时触发input事件
做限制输入框可输入最大的长度和实时匹配输入框数据时遇到了坑 —— 当中文输入时input事件也会被触发,即假设限制的是2个字符,你要输入社会人的“社(she)”,就会直接被截取,输入框填充文本sh。或者是在中文输入法时也会一直去调接口,匹配数据,影响了页面的性能!代码如下:
全栈程序员站长
2022/09/01
1.2K0
vue 父组件调用子组件的方法_vue子组件修改父组件值
我们都知道通过$ref可以获取到某个DOM,但是它也可以用来获取子组件的实例,调用子组件的方法
全栈程序员站长
2022/11/09
2.1K0
React父组件调用子组件的方法
React组件化开发中子组件可以通过传递变量或者父组件的方法来实现和父组件的通信或者调用函数传值,但是父组件如何调用子组件的方法呢?很多介绍Hooks的文章并没有讲到useImperativeHandle,我以使用React18+TypeScript开发的项目为例,组件使用Hooks。以下是我精简过后的代码。
用户6256742
2022/07/06
5.8K0
Vue子组件调用父组件的方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
2.2K0
子组件派发事件和值给父组件
父组件通过v-on绑定子组件派发的事件,并触发一个新的事件,新的事件内可以接收传来的值
小小杰啊
2022/12/21
3040
vue父组件引入子组件_vue子组件传递方法给父组件
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/09
1.1K0
vue父组件操作子组件的方法_vue父组件获取子组件数据
我们经常分不清什么是父组件,什么是子组件。现在来简单总结下:我们将某段代码封装成一个组件,而这个组件又在另一个组件中引入,而引入该封装的组件的文件叫做父组件,被引入的组件叫做子组件。具体代码如下
全栈程序员站长
2022/09/19
7.1K0
vue父组件操作子组件的方法_vue父组件获取子组件数据
vue父组件调用子组件方法
抱怨身处黑暗,不如提灯前行。——刘同 首先是官方文档 这里使用ref属性去访问子元素 <hello-world ref="helloWorld" msg="Hello World"></hello-world> 然后打印一下 console.log(this.$refs.helloWorld); 可以看到成功获取到 再到子组件定义一个方法: 父组件访问: 效果:
阿超
2022/08/17
1.8K0
vue父组件调用子组件方法
vue子组件调用父组件方法
强迫学习的东西是不会保存在心里的。——《柏拉图论教育》 首先我们在子组件中这样定义 <template> <div> <el-button @click="callSuper">123</el-button> </div> </template> <script> export default { methods: { callSuper() { this.$emit('parentEvent', '我的'); } } }; </script> 这里的组件就只有一个el-
阿超
2022/08/16
2.1K0
vue子组件调用父组件方法
input输入中文时,拼音触发input事件
在上一篇文章中写到了函数防抖,在使用函数防抖来进行搜索框优化的时候会遇到一个问题,就是监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中时会触发input事件,会出现下图的效果
OECOM
2020/07/01
8.3K1
vue父组件调用子组件方法
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
2.6K0
vue父组件中获取子组件中的数据
<FormItem label="上传头像" prop="image"> <uploadImg :width="150" :height="150" :name="'avatar'" size="150px*150px" ref="avatar"></uploadImg> </FormItem> <FormItem label="上传营业执照" prop="businessLicence"> <uploadImg :width="350" :heigh
蓓蕾心晴
2018/04/12
7K0

相似问题

触发父组件父节点方法的子组件输出事件

38

监听VueJs中父组件触发的事件

110

如何从角2中的子组件事件触发父组件中的局部引用?

25

子组件中父组件的触发方法-- react

14

角键事件不会在子组件上触发,而只在父组件上触发。

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档