近期因为要做一个流失回访的问题,涉及到随机抽样。说来惭愧,身为一个数据狗,居然之前没有接过这方面的需求,第一期抽样,我基本上按限定条件手工拉的,拉完的结果是:
本来是我是抽流失的用户,结果7月回流的用户特别多后面想了下看来还是要用到随机函数进行处理。
(这里插一个关于随机抽样的小插曲,今年公司的年会,用到的抽奖软件,中间各种bug,一度导致年会尬场,其实这个也是个随机抽样的问题。当时人力的小伙伴们,一直不停的要把中奖了的小伙伴移出去,其实这种感觉还是不够智能,好歹也是腾讯的抽奖软件,咋设置的这么坑爹呢,后面一直抽同样的人出来,我就不知道是个神马情况了。现在轮到自己做随机抽样了,才知道这里的水很深呀!)
先想着自己用函数实现,根据条件来,例如拉4月上旬新增未参加活动的商户:
想在空白地方抽出符合条件的商户号,设想过index函数和其它函数,结果发现不行。在excelhoume找到一个巨复杂的样本,按比例抽出来,可是我没心情去研究那个复杂无比的数组函数,想了半天还是我自己来吧。
我的样本是这样的数据字段:
样本的分布如下:
抽样计划如下:
先尝试用vlookup函数实现简单的抽样。
抽一个样本 | |||
上旬 | 中旬 | 下旬 | |
未参加活动 | 258121001148188 | 258121001197522 | 258121001246721 |
激活活动 | 258121001116131 | 258121001150346 | 258121001243108 |
未激活活动 | 258121001104653 | 258121001187941 | 258121001238391 |
只抽一个样本比较好实现,简单的添加辅助列之后,即得到上述结果,附上函数
=VLOOKUP(L$2&$K3&RANDBETWEEN(1,COUNTIFS($E:$E,$K3,$F:$F,L$2)),$H:$I,2,FALSE)
但是,我想要的样本是60个,并且匹配不同的条件,后面想了下只能在randbetween的函数那里做文章了,不想重复,只能将样本分为若干等分,然后每个子样里面去抽一个。
例如我要抽上旬,未参加活动的三个商户:
=VLOOKUP(L$2&$K3&RANDBETWEEN(1,COUNTIFS($E:$E,$K3,$F:$F,L$2)/3),$H:$I,2,FALSE)
=VLOOKUP(L$2&$K3&RANDBETWEEN(COUNTIFS($E:$E,$K3,$F:$F,L$2)/3,COUNTIFS($E:$E,$K3,$F:$F,L$2)*2/3),$H:$I,2,FALSE)
=VLOOKUP(L$2&$K3&RANDBETWEEN(COUNTIFS($E:$E,$K3,$F:$F,L$2)*2/3,COUNTIFS($E:$E,$K3,$F:$F,L$2)),$H:$I,2,FALSE)
这是三个单元格中对应的函数,整体思路是分三段,每一段取一个,这个属于比较粗糙的版本,randbetween这个函数有个上下界的问题,如果前一个上界和下一个的下界相等,在某种情况下会出现重复的情况,后面引入int函数。
这种思路可行性是没问题的,但操作起来太复杂了。还要继续找简便点的方法。
回顾下昨天搜到的一些资料:
excel的数据分析库里面,是有随机抽样这个函数的,输入你要抽样的区域,输入你要抽样的个数,就可以完成抽样,但是这个只是最基本的,不能按指定条件来进行抽样。
现在想一下,这个问题其实涉及到的知识点比较多,特意上网搜了下,抽样分四种:
单纯随机抽样;
系统抽样(我上面尝试的方法属于这一种);
整群抽样(总体分群,再随机抽取几个群组成样本,群内全部调查);
分层抽样(stratified sampling)(先按对观察指标影响较大的某种特征,将总体分为若干个类别,再从每一层内随机抽取一定数量的观察单位,合起来组成样本。有按比例分配和最优分配两种方案。)
还是尝试用python或R来解决这个条件抽样的问题吧,本为题待后续解决。