如何利用SAS进行随机抽样
利用SAS进行随机抽样
在构建数据挖掘模型过程中,有时我们无法对所有的整体进行全面研究,有时我们希望将整体划分为训练集、验证集、测试集三份用于不同目的的数据集,甚至在K-折交叉验证中,我们需要把样本随机的划分为K份数据子集。本文介绍SAS的SURVEYSELECT过程和RANUNI函数在随机抽样方面的应用。
0、读入数据集,并对数据集按分层变量进行排序。本文数据集采用students.txt:
* 从students.txt读入文件到数据集students;
DATA students;
INFILE ‘C:\students.txt’;
INPUT id class $ gender $ math english history chem phys literat;
RUN;
* 查看数据集内容;
PROC PRINT DATA = students;
TITLE ‘Students”s class gender & scores’;
RUN;
* 对二维列联表(班级、性别)进行频数统计;
PROC FREQ DATA = students;
TABLES class * gender /NOPERCENT NOROW NOCOL;
RUN;
* 首先对数据集按分层变量进行排序;
PROC SORT DATA = students;
BY class gender;
RUN;
1、利用SURVEYSELECT过程进行等比例分层抽样
* 利用SURVEYSELECT过程对数据集进行等比例分层抽样;
PROC SURVEYSELECT DATA = students out = samp1 method = srs samprate = .5 seed = 9876;
STRATA class gender;
RUN;
* 查看分层抽样的结果;
PROC FREQ DATA = samp1;
TABLES class * gender /NOPERCENT NOROW NOCOL;
RUN;
2、利用SURVEYSELECT过程进行不等比例分层抽样
* 利用SURVEYSELECT过程对数据集进行等不比例分层抽样;
PROC SURVEYSELECT DATA = students out = samp2 method = srs samprate = (.4 .6 .4 .6 .4 .6)seed = 9876;
STRATA class gender;
RUN;
* 查看分层抽样的结果;
PROC FREQ DATA = samp2;
TABLES class * gender /NOPERCENT NOROW NOCOL;
RUN;
3、利用SURVEYSELECT过程根据抽样数量进行分层抽样
* 利用SURVEYSELECT过程对数据集进行指定数量的分层抽样;
PROC SURVEYSELECT DATA = students out = samp3 method = srs n = (8 4 6 8 5 7) seed =9876;
STRATA class gender;
RUN;
* 查看分层抽样的结果;
PROC FREQ DATA = samp3;
TABLES class * gender /NOPERCENT NOROW NOCOL;
RUN;
4、利用随机数函数RANUNI对数据集进行粗略划分
* 利用RANUNI函数将数据集粗略的划分为N=5份;
DATA s1 s2 s3 s4 s5;
SET students;
r = RANUNI(991889);
IF r<0.2 THEN OUTPUT s1;
ELSE IF r<0.4 THEN OUTPUT s2;
ELSE IF r<0.6 THEN OUTPUT s3;
ELSE IF r<0.8 THEN OUTPUT s4;
ELSE OUTPUT s5;
DROP r;
RUN;
5、利用随机数函数RANUNI对数据集进行精确划分
* 根据数据集创建视图students_v,增加随机数列;
DATA students_v /view=students_v;
SET students;
srt = RANUNI(999890);
RUN;
* 按照随机数列对数据集进行排序,创建数据集students_srt,删除随机数列;
PROC SORT DATA = students_v OUT = students_srt(DROP = srt);
BY srt;
RUN;
* 将数据集精确地划分为N=5份;
DATA s1 s2 s3 s4 s5;
RETAIN per ;
SET students_srt NOBS= total;
IF _N_ = 1 THEN per = INT(total/5);
if _N_<= per then output s1;
ELSE IF _N_<= 2 * per THEN OUTPUT s2;
ELSE IF _N_<= 3 * per THEN OUTPUT s3;
ELSE IF _N_<= 4 * per THEN OUTPUT s4;
ELSE OUTPUT s5;
DROP per;
RUN;
数据分析咨询请扫描二维码
数据收集与整理 - 从各种来源收集数据,清洗和整理以确保数据质量和可用性。 数据分析与建模 - 运用统计学方法和机器学习模型对 ...
2024-11-26技术技能 - 编程能力: 数据分析师需要掌握至少一门编程语言,如Python、R或SQL。这些语言对于数据处理、建模和分析至关重要。例 ...
2024-11-26数据分析领域涵盖多样性岗位,根据工作职责和技能需求划分。这些角色在企业中扮演关键角色,帮助组织制定战略、优化流程并实现商 ...
2024-11-26数据分析是一种通过收集、处理、解释和展示数据,以获得见解和决策支持的过程。这个领域涉及使用统计学、计算机科学和商业智能等 ...
2024-11-26数据分析领域正日益成为当今商业世界中不可或缺的一环。随着数据量的爆炸式增长,企业越来越需要能够从这些海量信息中提炼出宝贵 ...
2024-11-26数据分析师需要学习的课程内容非常广泛,涵盖了从基础理论到实际应用的多个方面。在追求这一职业道路上,合适的教育和培训至关重 ...
2024-11-26数据分析师作为当今信息时代中关键的职业之一,扮演着解释、预测和推动决策的重要角色。他们需要多方位技能来处理各种复杂的数据 ...
2024-11-26数据分析师在今天的商业环境中扮演着至关重要的角色。他们需要应对各种复杂的数据分析任务和业务需求,这要求他们具备广泛的技能 ...
2024-11-26在当今快速变化的技术和市场环境中,数字化转型是企业利用数字技术全面重新设计和改造业务的重要过程。这一转型旨在通过整合云计 ...
2024-11-26数字化转型: 是企业在现代技术和市场环境不断变化的背景下,利用数字技术对其业务进行全面的重新设计和改造的过程。其核心目标是 ...
2024-11-26理论基础与高级学习 数学专业理论基础: 学生首先需要掌握数学的基础理论,包括数学分析、高等代数、几何学、常微分方程、实变函 ...
2024-11-26数字化转型:现代企业蜕变的引擎 数字化转型已然成为当今企业持续发展的关键支柱。这一过程并非简单的技术升级,更是涉及企业文 ...
2024-11-26# 数据科学与大数据技术专业学什么?就业前景与行业需求 **数字化转型:引领企业进步的关键** 数字化转型是现代企业发展的必经 ...
2024-11-26理论部分 - 基础数学理论: - 学生首先需要掌握数学的基础理论,包括数学分析、高等代数、几何学、常微分方程等。 - 这些课程 ...
2024-11-26在选择数据科学和大数据技术专业时,了解不同领域的职责和技能需求至关重要。数据治理工程师是这一领域中不可或缺的角色之一,承 ...
2024-11-26基础课程 统计学基础 - 统计学是数据分析的基石,包括概率、假设检验、回归分析等基本知识,有助于理解数据背后的意义。 - ...
2024-11-26数据分析是一门综合性学科,涉及多个领域的知识和技能。要全面掌握数据分析,需要学习以下内容: 基础课程 统计学基础:统计学 ...
2024-11-26数据治理工程师在当今信息时代扮演着至关重要的角色,负责确保组织内数据的质量、安全性和可用性。他们需要具备一系列技能和才能 ...
2024-11-26在当今数字化时代,数据被誉为新的石油,是企业最有价值的资产之一。因此,建立有效的数据战略规划对于企业的成功至关重要。数据 ...
2024-11-26<section id=
2024-11-26