SAS实战内部培训 10页

  • 657.24 KB
  • 2021-05-17 发布

SAS实战内部培训

  • 10页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
SAS入门培训资料 (内部使用) 一、简要说明 1.关于 SAS SAS是专业统计分析工具,由于其编程的功能使很多人望而却步,但是对于感 兴趣的人来说,只要坚持学习,都会有收获。 2.关于数据处理 SAS能处理近千万条数据,对于互联网行业来说,这些都是日常性的工作,一 般的数据处理工具象 EXCEL只能处理 6万多条数据,很难满足分析人员的需要, SPSS由于其响应速度的缓慢,虽然处理数据比 EXCEL多 4个数量级(约 50 万),但是仍不是分析人员的首选。 3.关于数据分析 数据分析员首先要懂得这样一个道理:分析的首要因素不是工具(SAS, SPSS,EXCELL),也不是方法(简单统计方法,高级统计方法,人工智能方 法),而是理念(IDEA),更具体说是思路(WAY),这不是人人都能理解的 道理,但是在明确分析的思路以后,工具和方法随之就会摆在分析人员面前, 所以学会工具乃是进行下一步分析的必要条件。 4.关于分析思路 以下是我总结的一般数据分析的思路,以流程图展示: 上图每个表格中的黑体字表示流程步骤,首先是主题需求,即我们要分析 的主题是什么,这个一般是决策者关心的问题,我们需要把决策者关系的问题 给它具体化。然后是影响因素,影响因素是针对主题需求而设计的定性变量集合。 接着就是数据的获取了,数据的获取是根据影响因素去寻找相应的数据,这些 数据源可能存放在不同的地方,需要我们用各种方法去获取这些数据源(如从 EXCEL,数据库等)。接着是数据导出和数据导入,这两个步骤是针对 SAS工 具而言的,在 EXCEL里面不需要。数据导入到 SAS之后,不能立刻进行分析, 而是需要对数据进行清洗,这个过程是很复杂的,也有专业的工具来做这件事 情(如 CLEMENTINE),这里我们不做详细的分析。接下来就是数据的分析了, 分析就需要涉及到方法,有简单的统计方法,也有高级的统计方法,所有的方 法都是围绕主题来进行的。最后对于出来的结果用报告的形式发布。 二、实例操作过程 安装好特别版 SAS9.0之后,运行 EXE文件,我们会看到如下图: 上面打箭头的三个地方是分析的时候必须用到的,其它的在此不再一一说明, 请自行操作感受一下。 下面我们针对 userstatus2表进行实战演习,思路如下: 1. 主题需求:分析上半年主站北京和讯和鸿联 1518两个通道的用户流失情况, 因为这两个通道上半年一直在用,其它的通道都是非连续使用,在此不研究。 2. 影响因素:影响用户流失的可能因素有:产品(性福、影视、动漫);地区 (不同地区由于经济发展水平和人的素质等因素不同也会影响用户流失), 其它的因素肯定还有,比如用户年龄结构,教育程度等,但是由于我们无法 获取这些信息,只能放弃。 3. 数据获取:用 SAS程序获取 userstatus2对应字段数据。 4. 数据导入与导出:有两种方法,在此介绍用 EXCEL导入,详见下面的专题 介绍。 数据整理:对形成的六个数据集(六个月)进行整合,形成一张 SAS数据表。 逻辑库, 存放数据 文件 程序窗 口,编程 实现地 日志窗 口,随时 记录程序 运行结果 5. 数据分析:本文用频率分析、列链表分析完成,其它的数据挖掘方法(如 WEB图、决策树等)是用 CLEMENTINE实现的,在此不做介绍了。 6. 结果呈现:大家就用WORD好了。这是个通用的软件。 专题介绍: 1. 关于数据获取 第一种方法:直接用 SAS连接数据库,此法我试验过,对 10万条记录的数据 响应时间大约是 28秒,如果大家猴急猴急的,这个可能有点慢了,要是数据更 多,那这个方法你肯定不喜欢了,但是我还是要把对应的程序告诉大家: 首先要去控制面板做一个 ODBC数据源,如我们现在要想获取 218.1.74.238服 务器上的数据库 VOD_STAT里面的表 filmstat的数据(当然啦,你首先要和管 理员联系你有没有访问的权限),去控制面板,打开管理工具下面的数据源选 项,添加一个数据源,这个流程就不做介绍了,大家可以自己去做。最后我们添 加好的数据源的名称是VOD_STAT。回到 SAS,在程序窗口输入如下程序: 程序详解: 第一句:libname try'f:'; 这句话告诉 SAS,我们要建立一个 SAS数据库了,名字叫 feiyun, 数据库里 面的文件放在 F盘根目录下面,当然啦,这里的数据库名字和目录你都可以更 改的。比如我想放在 F盘的下一级目录 sas里面,那么就用这个语句:libname feiyun'f:sas';简单吧?要注意的是,这里的分号”;”千万不能丢!SAS 语句都是以分号结尾的。 第二句话:proc sql; 这句话告诉 SAS,我要 SQL了,大部分情况下我们在 SQL里面使用的 SQL语句 在 SAS里面都能用。 第三句话:Connect to odbc (dsn='VOD_STAT' uid='bbvodzfy' pwd='zfybbvod!@#!'); 这句话告诉 SAS,我要连接到 ODBC啦,这个 ODBC就是刚才在控制面板里面设 置的,它的作用就相当于一个桥梁,把 SAS和具体的数据库连接起来,括号里 面第一个 DSN是数据源,第二个是用户名,第三个是密码。注意,以分号结束 此 SAS语句。 第四句话:create table feiyun.chao as Select * from connection to odbc (select top 10 * from filmstat); Libname feiyun'f:'; proc sql; Connect to odbc (dsn='VOD_STAT' uid='bbvodzfy' pwd='zfybbvod!@#!'); Create table feiyun.chao as Select * from connection to odbc (select top 10 * from filmstat); quit; 这句话由三部分组成:create table feiyun.chao as 是要创建一个表 叫 chao,该表位于逻辑库 feiyun里面;Select * from connection to odbc 是一个固定语句,不可更改。select top 10 * from filmstat就 是具体的 SQL语句了,这个里面可以完成大部分的查询语句功能。 第五句话:quit;这句话不能忘了,因为我们在查完并获取数据后,要把门给 关上,否则 SAS会死机的,SAS很生气,后果很严重! 好了,此时你点击 SAS 上面的小人(RUN),不到 5 秒钟,就可以看见 VOD_STAT里面的 filmstat数据到了你的 SAS库 feiyun里面的 chao数据 表了。 第二种数据获取的方法: 第一步:先去具体的数据库查询,查好需要的数据后,拷出到 EXCEL表里面, 这个过程大家都熟悉,不介绍了。下面介绍如何把 EXCEL表的数据导入到 SAS 里面。 打开 file—importdata菜单,弹出如图界面: 点击 NEXT,弹出下图: 找到你存放 EXCEL的地方,点击 OK 选择此项 选择要导入 的工作表 选择你要导入的工作表,点击 NEXT 选择你要存放导入的数据的数据库(library)以及数据表(member),点 击完成即可把外部数据导入到 SAS系统中。 本文采用了第二种方法。 2、关于数据整理 如果你用 SQL 语句把 1- 6 月份 userstatus2 表的数据(取字段 source,serviceid,provinceid,status)取出,并保存成六张 EXCEL 表,而且已经把这六张表按照刚才的数据导入方法导入到 SAS系统,其 SAS数 据集的名字分别叫:jan,feb,mar,apr,may,jun以下语句可以把这六张表 联成一张表: 程序详解: 第一句:data sasuser.jan_jun; 创建数据集jan_jun,放在sasuser库下。 第二句:set sasuser.jan sasuser.feb sasuser.mar sasuser.apr sasuser.may sasuser.jun; 把六个数据集连接起来,合并成jan_jun. 运行即可。 结果在 sasuser库下生成一个 jan_jun数据表。 data sasuser.jan_jun; set sasuser.jan sasuser.feb sasuser.mar sasuser.apr sasuser.may sasuser.jun; run; proc sort data=sasuser.jan_jun;by status;run; 该语句对数据集 jan_jun进行排序,按照 status字段排序。 该语句生成 SAS数据表 jan_juntrcd. 上面的语句把数值型数据转换成字符型数据。 proc sql; create table sasuser.jan_juntrcd as select * from sasuser.jan_jun where source in('BJHX','HL1518');run; 上面的程序实现把数值型的输出转化成字符型输出。 下面进入数据分析过程: 分析的方法有很多,在此只简单介绍频率分析。 有两种方式可以实现: 第一种:程序实现 程序详解 第一句:Proc freq data=sasuser.jan_junanls; 此句是说:我要对数据文件 jan_junanls做频率分析了。 第二句:Tables serviceid_str/out=serv; Tables provinceid_str/out=pro; Tables status_str/out=sta; Proc freq data=sasuser.jan_junanls; Tables serviceid_str/out=serv; Tables provinceid_str/out=pro; Tables status_str/out=sta; Run; Proc freq data=sasuser.jan_junanls; Tables serviceid_str/out=serper; By status_str; Run; 这 三 句 话 是 说 : 我 要 对 数 据 文 件 jan_junanls 中 的 三 个 字 段 serviceid_str,provinceid_str,status_str做频率分析。并分别输出 结果集 serv,pro,sta到临时数据库 work中,此处省略 work,就说明三个文 件集存放在 work中,当然,如果你想放在 sasuser数据库中,就要在这三个 文件前面加上前缀 sasuser. 以下类似,要注意下面的 SAS 语句是要实现 serviceid_str 按照 status_str分组计算频率(即 by status_str). 第二种方式:菜单操作 1. 点击 solution—analysis—analyst 2. 弹出如图对话框 3. 点击 file—open by sas name.弹出如图对话框: 在数据库 sasuser中找到 jan_junanls数据集,点击 OK. 此时 jan_junanls就会出现在需要分析的框中。 4.点击 statistics—descriptive—frequency counts,出现如下对话框: 5.假如我们要分析各省的流失情况,点击 serviceid_str到 frequencies 框中,如果你还想知道流失和续费中各省占比,点击 variables按钮,如图: 因为流失和续费对应的字段是 status_str,所以点击 status_str到 by group框中去即可。点击 OK,回到上一级对话框。点击 OK,就 OK了。 6.结果展示 注意上面的左边比以前多了 frequency counts 选项,双击其中的 1- way….,就可以知道结果了。 当然,如果你想知道这个菜单操作的程序是怎么样的,可以点击 code,可以发 现它和上面第一种方法的程序几乎是一样的。 7.结果解释 这个就不需要解释了吧,都是业务精通人士。 三、几个注意点 1.关于分析主题 由于分析主题一般是决策者提出的,但是作为分析人员还需要把决策者的需求 进一步细化,需求的理解是整个分析过程的关键。 2.关于分析工具 如果你喜欢 SAS(我推荐此工具),那就好好好学一学统计知识,一般情况下, 的确需要编程,但是,如果你学会使用 analyst模块,也可以不需要编程,前 提是数据集是现成的,拿来就用。因为 SAS对数据的前期处理都是需要编程的。 如果数据不大(50万以下),可以用 SPSS或者 EXCEL分析。超过 50万的数 据那就只好用 SAS了。 3.关于分析结果 有时候分析的结果往往不是我们想象的,比如我以前发给大家的用数据挖掘工 具 CLEMENTINE做的决策树分析,说实话,结果很不理想,分类正确率只有 63%,但是这不是方法或工具的错误,而是原始数据本身的质量问题。 4.关于分析报告 分析报告的写法很有讲究的。我在九州四个月期间,自认为形成一套自己独特的 分析报告写法,大家可以借鉴:我认为给决策者看的报告首先要突出重点,其 次要简明扼要,最后要有充分的证据或数据支持你的结论,抓住这三点,你就 可以写出决策者需要的东西。我一般把报告分为三部分:第一部分,所有关键结 论以及形成结论的原因(如果有),这是决策者最感兴趣的。第二部分,详细的 分析过程,如果他们有时间,他们会仔细了解你的分析过程和分析思路。第三部 分,附录,附录就是结论的证据,你需要把形成结论的关键性证据附加在附录 中。 好了,由于比较仓促,写的不好,请各位见谅。此文只涉及到分析中的很少部分 模块,如果大家对 SAS感兴趣,可以多多学习,多去网上的各 BBS网站交流。 在此我提供两个不错的网站: 1. www.sasfans.com 2. www.pinggu.org