简单随机抽样及其进阶分层随机抽样方法展示

2020/6/8 16:24:50

一、分享简单随机抽样的几种方法

1、抽样分析工具抽样

2、INDIRECT+RANDBETWEEN函数抽样

3、RAND+排序抽样

4、SAS抽样

二、分层抽样方法

1、Python分层抽样

2、SAS分层抽样

3、EXCEL函数及功能分层抽样


简单随机抽样的几种方法

方法一:抽样分析工具抽样

如果你的EXCEL尚未安装数据分析,采用以下方法调出“数据分析”工具:

EXCEL2013版:

“文件”——“选项”——“加载项”——“分析工具库”,然后确定,即可添加在EXCEL工具栏。

EXCEL2007版:

“选项”——“加载项”——“分析工具库”进行加载即可。

640 (1).png

(以2013版为例:)

举例:某企业有客户10万,现需要通过电话回访的方式进行客户满意度调查,了解客户对企业产品和服务的评价。如果直接对10万客户进行回访,时间成本、人员成本都难以估算,经过专家论证、客户认可,现决定从10万名客户中抽取1000名作为调查样本进行回访,为了保证结果的客观性,采取随机抽样的方式进行抽查。

1、打开需要抽样的EXCEL表格

2、选“数据”——“数据分析”——“抽样”

1.png

3、根据要求选:

  • “输入区域”的数据

  • 抽样方法选“随机”

  • 输出选项选“输出区域”(以此为例)

2.png

4、结果如图:(从10万名客户里随机抽取1000名客户进行调研,抽取结果如下)

3.png

然后通过计算可得出抽样的情况,从而可以推断出总体情况。

备注:

1、抽样样本越多,所得的结果,越接近真实结果;

2、用抽样分析工具抽样,只能对数值型数据进行抽样,对于其他类型的抽样无法完成。

方法二:INDIRECT+RANDBETWEEN函数抽样

举例:某企业有客户2万,现需要通过电话回访的方式进行客户满意度调查,了解客户对企业产品和服务的评价。如果直接对2万客户进行回访,时间成本、人员成本都难以估算,经过专家论证、客户认可,现决定从2万名客户中抽取100名作为调查样本进行回访,为了保证结果的客观性,采取随机抽样的方式进行抽查。

1、 打开需要抽样的EXCEL表格

2、在EXCEL的空白区域写入,暂以E列为例,在E2写入

=INDIRECT("a"&RANDBETWEEN(2,20001)),下拉100个单元格,结果如下:

2.1.png

3、然后通过计算可得出抽样的情况,从而可以推断出总体情况。


方法三:用RAND函数加排序功能

举例:某企业有客户10万,现需要通过电话回访的方式进行客户满意度调查,了解客户对企业产品和服务的评价。如果直接对10万客户进行回访,时间成本、人员成本都难以估算,经过专家论证、客户认可,现决定从10万名客户中抽取1000名作为调查样本进行回访,为了保证结果的客观性,采取随机抽样的方式进行抽查。

1、在B1中输入“=RAND()”,向下填充至C1000000

3.14.png

2、 选择C列,点击工具栏中的数据→升序,在弹出的窗口中选择“扩展选定区域”,再点击“排序”按钮

3、 此时A列中的序号已经打乱了,直接看A2至A10001中的值就可以达成“随机抽查10个客户”的要求了,然后通过计算可得出抽样的情况,从而可以推断出总体情况。


方法四:利用SAS软件进行随机抽样

PROC SURVEYSELECT一般形式:

Proc surveyselect data=<原数据集>

      Method=<srs|sys|urs|  /*抽样方法选择*/

      out=<抽取样本存放的数据集>

n=<抽取数量>(or samprate=抽样比例)

seed=n;

       strata <指定分层变量>;

        id <指定抽取的样本所保留的源数据集变量>;

run;

1.从数据集text.bclass中不重复随机抽取20条记录,保留所有变量

proc surveyselect data=text.bclass out=srsa1 method = srs

                sampsize =20;

     run;

2. 从数据集text.bclass中重复随机抽取20条记录,保留所有变量

proc surveyselect data=text.bclass out=srsa1 method= urs

                sampsize =20;

     run;

3. 随机抽取总体的10%作为样本,保留所有变量

proc surveyselect data=sashelp.prdsale out=srs415 method = srs

                samprate = 0.1;

     run;

简单随机抽样进阶——分层抽样方法

方法一:利用Python进行分层抽样

import pandas as pd

df = pd.read_excel(r"地址及名称.xlsx")

data = pd.DataFrame(df)

gbr = data.groupby("分层变量")

tdict={"变量1":1500,"变量2":1500,"变量3":1500,"变量4":1500,"变量5":1500,"变量6":1500,"变量7":1500}/*分层变量,及每个变量需要抽取的数量 */

def sampling(group,tdict):

    name = group.name

    n = tdict[name]

    return group.sample(n=n)

resut = data.groupby("分层变量",group_keys=False).apply(sampl

ing,tdict)

resut.to_excel(r"输入地址及名称.xlsx")

方法二:利用SAS软件进行随机抽样

1、手工设置抽样比例或者抽样数

proc sort data=test1;

by 分层变量;

run;/*先用分层变量对总体样本进行排序*/

proc surveyselect  data=test1 out=results3 method=srs

 samprate=(0.1,0.3,0.5,0.2);/*根据分层情况设置每一层要抽取的比例*/

strata 分层变量;

run;/*根据分层变量不等比例从总体中抽取样本*/

proc surveyselect  data=test1 out=results3 method=srs

sampsize=(30,20,50,40);/*根据分层情况设置每一层要抽取的样本数*/

strata 分层变量;

run;            

2、根据抽样表进行不等比例抽样

proc sort data=test1;

by 分层变量;

run;/*先用分层变量对总体样本进行排序*/

proc surveyselect  data=test1 out=results3 method=SRS

samprate=samp_table;/*通过抽样比例数据集进行抽样,samp_table数据集中要包括分层变量,以及每一分层对应的抽样比例或者数量,如果按比例抽样变量必须用_rate_来命名抽样比例,如果是按数量抽样必须用_nsize_来命名抽样数量*/

strata 分层变量;

run; 

方法三:利用excel函数及相关功能进行分层随机抽样

1、利用rand()函数,添加辅助列随机

640 (2).png

2、去除rand()函数公式,升序、降序排列都可以

640 (3).png

3、利用countif(A$2$:A2,A2)添加辅助列,并去除公式

4、将每个类型需要抽取的数量放到任意区域

5、利用Excel中数据-高级功能进行随机抽取

640 (4).png


作者:渠道研究部冯乙

Python方法:胡扬指导

SAS方法:杨家辉指导