2020/6/8 16:24:50
一、分享简单随机抽样的几种方法
1、抽样分析工具抽样
2、INDIRECT+RANDBETWEEN函数抽样
3、RAND+排序抽样
4、SAS抽样
二、分层抽样方法
1、Python分层抽样
2、SAS分层抽样
3、EXCEL函数及功能分层抽样
简单随机抽样的几种方法
方法一:抽样分析工具抽样
如果你的EXCEL尚未安装数据分析,采用以下方法调出“数据分析”工具:
EXCEL2013版:
“文件”——“选项”——“加载项”——“分析工具库”,然后确定,即可添加在EXCEL工具栏。
EXCEL2007版:
“选项”——“加载项”——“分析工具库”进行加载即可。
(以2013版为例:)
举例:某企业有客户10万,现需要通过电话回访的方式进行客户满意度调查,了解客户对企业产品和服务的评价。如果直接对10万客户进行回访,时间成本、人员成本都难以估算,经过专家论证、客户认可,现决定从10万名客户中抽取1000名作为调查样本进行回访,为了保证结果的客观性,采取随机抽样的方式进行抽查。
1、打开需要抽样的EXCEL表格
2、选“数据”——“数据分析”——“抽样”
3、根据要求选:
“输入区域”的数据
抽样方法选“随机”
输出选项选“输出区域”(以此为例)
4、结果如图:(从10万名客户里随机抽取1000名客户进行调研,抽取结果如下)
然后通过计算可得出抽样的情况,从而可以推断出总体情况。
备注:
1、抽样样本越多,所得的结果,越接近真实结果;
2、用抽样分析工具抽样,只能对数值型数据进行抽样,对于其他类型的抽样无法完成。
方法二:INDIRECT+RANDBETWEEN函数抽样
举例:某企业有客户2万,现需要通过电话回访的方式进行客户满意度调查,了解客户对企业产品和服务的评价。如果直接对2万客户进行回访,时间成本、人员成本都难以估算,经过专家论证、客户认可,现决定从2万名客户中抽取100名作为调查样本进行回访,为了保证结果的客观性,采取随机抽样的方式进行抽查。
1、 打开需要抽样的EXCEL表格
2、在EXCEL的空白区域写入,暂以E列为例,在E2写入
=INDIRECT("a"&RANDBETWEEN(2,20001)),下拉100个单元格,结果如下:
3、然后通过计算可得出抽样的情况,从而可以推断出总体情况。
方法三:用RAND函数加排序功能
举例:某企业有客户10万,现需要通过电话回访的方式进行客户满意度调查,了解客户对企业产品和服务的评价。如果直接对10万客户进行回访,时间成本、人员成本都难以估算,经过专家论证、客户认可,现决定从10万名客户中抽取1000名作为调查样本进行回访,为了保证结果的客观性,采取随机抽样的方式进行抽查。
1、在B1中输入“=RAND()”,向下填充至C1000000
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()函数,添加辅助列随机
2、去除rand()函数公式,升序、降序排列都可以
3、利用countif(A$2$:A2,A2)添加辅助列,并去除公式
4、将每个类型需要抽取的数量放到任意区域
5、利用Excel中数据-高级功能进行随机抽取
作者:渠道研究部冯乙
Python方法:胡扬指导
SAS方法:杨家辉指导