对于经营分析工作来说,外呼调研是获取分析数据的重要手段,因为很多重要的信息是经分系统里没有的,比如用户是否纯新增、用户换号的原因,竞争对手的来源、入网渠道、消费偏好等等。
外呼调研是项费时费钱的工作。尽管各地移动已经有了一支看似相当大的外呼队伍,但与庞大的移动用户基数相比,依然显得十分渺小,所以外呼调研必须得靠抽样。
对于抽样外呼来说,抽取多少样本,如何抽样,如何确保外呼的随机性,都是必须关注的问题。任何一个环节出现问题,都可能使得抽样结果缺乏可信性。当然,调查问卷的设计是个更加关键的环节,这个本文暂时先不讨论。
在外呼调研的抽样问题上,个人觉得需要注意以下事项:
1、根据分析深度确定经济适用的外呼规模
学过统计的人可能还会记得,统计学上有个大数定律,公式和推算蛮复杂,但结果却是很简单,就是若样本的选取足够随机且样本值的分布不是极端悬殊外,一般只要样本量超过30个就能基本反映整体样本的平均分布情况。
那么,是否选取30个样本就足够了呢?
假如分析的目标只是获得一个整体情况,不再深入,那么从经验看,30个样本其实已经基本足够(尽管很多人会将信将疑)。但实际分析不会这么简单,我们往往还要从地区等维度做进一步的分析,这就需要保证最小分析单位的样本数能够达到30个以上。
举个例子:
假如针对某月新增用户做外呼调研,总体新增用户200万,其中最小的地区只有10万,占5%,那么为了保证这最小的地区有30个样本,那么成功外呼样本就至少应该在600个以上,否则做地区细分分析时就会出现问题。当然,这种情况下,为了保险起见,我们可能会要求1000个成功样本。
2、确保随机抽样,避免破坏整体分布规律
为了保证外呼调研的质量,样本的选取一定要做到随机抽样。
外呼调研的取数往往要靠支撑人员或厂家人员,这些技术人员优势会用简单的SELECT * FROM XX WHERE ROWNUM<N的办法,导致调研出来的结果令人难以置信,这是因为数据库里的数据就算不是顺序的,但并非就代表是随机的。
另外,有些人喜欢手工指定每个地区、每个品牌提取多少样本。这样做,貌似保证了各地区的样本量,但这样做会导致样本的地区品牌分布与总体不一致,导致无法对总体情况作分析。
比如最近我分别抽取了联通、移动和电信各一万新增用户做外呼调研,这个结果针对每个运营商是可用的,但却不能用来推算整个移动通信市场的情况,因为三家分布的比例不是1:1:1,这个抽样已经破坏了整体的情况。
所以,对于既分析地区又分析全省的情况,要将所有整体样本合在一起进行随机抽样,千万别去手工指定每个地区的样本量。
3、超额提供样本数量,确保最终结果的随机性
外呼调研是交给外呼团队来运作,为了减少返工,往往需要向外呼团队提供3-10倍的样本量。当然,这个倍率取决于调查问卷的复杂性,问卷越复杂,成功的概率就越低,所需的样本数就越高。我所知道的有个比较特殊的外呼调研,成功外呼的比例不足千分之一,提供了十来万号码,最后才有几十个成功外呼。
理想情况下,外呼团队拿到外呼清单后,应该再做随机化处理,然后抽取号码拨打,在得到足够成功外呼样本后停止外呼。
但实际中,有时并非如此。
以我上次提交的外呼调研为例,我分别提交移动、联通和电信各一万的新增用户,采取同一份问卷进行外呼,结果是有两组样本数据非常随机,但另外一组的结果却很让人失望:在大地区上过度集中,小地区上不到30个,导致地区比较的可信度受到影响。
这事情说明,外呼团队是由各个小队组成的,其水平参差不齐。
为了解决这问题,建议将外呼团队提供的样本文件就要足够随机,避免对样本进行地区或号码的排序。
若采取的是我下面写的这个随机抽样程序,可以根据“序号”排序,因为这个序号本身是随机数。
附:一个简单的随机抽样程序
由于几次帮同事取外呼调研的样本数据,自己也做外呼调研,所以自己就用PL/SQL写了一个简单的随机抽样程序,只要调用这个程序,就能实现随机抽样。
CREATE OR REPLACE PROCEDURE PUB_SAMPLE(p_总体样本表 CHAR,p_样本数 NUMBER) AS
/* =============================================================== *
功能:总体样本数据的随机抽样
说明:
1、抽样结果是生成一张在总体样本表基础上首列增加一个“序号”字段后的新表。
2、抽样表的名字为原表名后加"$"
3、因为需要动态建表,所以本程序需要CREATE ANY TABLE权限
* =============================================================== */
v_SQL VARCHAR2(2000);
v_count NUMBER(10);
v_随机数 NUMBER(20,6);
v_总数 NUMBER(10);
BEGIN
-- 检查随机数表是否存在,如果没有则创建
SELECT COUNT(1) INTO v_count FROM USER_TABLES WHERE TABLE_NAME='PUB_TOOL_RANDOM';
IF v_count = 0 THEN
v_SQL :=' CREATE TABLE PUB_TOOL_RANDOM(随机数 NUMBER(20,6),
CONSTRAINT PUB_TOOL_RANDOM PRIMARY KEY(随机数))';
EXECUTE IMMEDIATE v_SQL;
ELSE
EXECUTE IMMEDIATE 'DELETE PUB_TOOL_RANDOM';
END IF;
-- 取样本总数
EXECUTE IMMEDIATE 'SELECT COUNT(1) FROM '||p_总体样本表 INTO v_总数;
-- 生成随机数
v_count := 0;
LOOP
v_随机数 := DBMS_RANDOM.VALUE(1,v_总数);
IF v_随机数 >= 1 THEN
v_随机数 := ROUND(v_随机数);
END IF;
BEGIN
EXECUTE IMMEDIATE 'INSERT INTO PUB_TOOL_RANDOM VALUES('||TO_CHAR(v_随机数)||')';
COMMIT;
v_count := v_count + 1;
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN NULL;
END;
EXIT WHEN v_count >= p_样本数;
END LOOP;
-- 生成抽样结果表
v_SQL := 'CREATE TABLE #原表$ AS
SELECT A.*
FROM
(SELECT ROWNUM 序号,T.* FROM #原表 T) A,
(SELECT 随机数 FROM PUB_TOOL_RANDOM) B
WHERE A.序号 = B.随机数';
v_SQL := REPLACE(v_SQL,'#原表',p_总体样本表);
EXECUTE IMMEDIATE v_SQL;
COMMIT;
END;
外呼调研和随机抽样
评论
10 views