我的第一次SAS编程
来源:互联网 发布:代理服务器ip和端口 编辑:程序博客网 时间:2024/05/01 12:25
数据分析与SAS课程结课作业要写一个数据分析报告,哎,平时没怎么努力,上课也没听见,到了期末的时候就痛苦了。
不过还好,折腾了两天,看了一本书,上网搜资料,总算是接触了一门全新的课程,我费了好大力气,总算是把SAS程序给做出来了~
本次数据分析做的是时间序列分解预测~
libname mylib "d:\sas\fx";run;/*****************************************************//*一、读取数据 *//* 从Excel中读取农业总产值表 *//* 数据包括2003~2011年1、2、3季度全国农业总产值 *//* 以及农产品指数(去年同期=100) *//* 总产值单位:亿元 *//*****************************************************/PROC IMPORT OUT= mylib.T01 /*总产值表(单位:亿元)*/ DATAFILE= "D:\sas\nyzcz.xls" DBMS=EXCEL REPLACE; SHEET="Sheet1{1}quot;; GETNAMES=yes; MIXED=NO; SCANTEXT=yes; USEDATE=YES; SCANTIME=YES; RUN;proc sort data=mylib.T01; by nf jd;/*****************************************************//*二、计算相对总产值 *//* 由总产值和价格指数计算相对价格指数,以消除价格 *//* 变动对实际农业产出的影响 *//* 具体做法:将所有总产值转换到以2003年为基准的 *//* 水平,即有总产值除以价格指数(累乘) *//*****************************************************/data mylib.T02; /*相对产值表*/ set mylib.T01; where t^=.;/*过滤空行*/proc sort data=mylib.T02; by jd t;data mylib.T02; set mylib.T02; /* 计算累计价格指数*/ retain ljjgzs ; /* 记住: retain 非常实用 */ if first.jd then ljjgzs=jgzs; else ljjgzs=ljjgzs*jgzs/100; by jd; /*计算相对2003年的产值*/ xdcz=nyzcz*100/ljjgzs;run;/*****************************************************//*三、中心化移动平均及季节指数 *//* 先将相对产值进行3周期移动平均,然后对移 *//* 动平均结果再进行2项移动平均,得到中心化 *//* 移动平均值(CMA),用相对产值除以CMA得到 *//* 季节指数 *//*****************************************************/proc sort data=mylib.T02; by t;data mylib.T02; /*相对产值:计算移动平均及季节指数*/ set mylib.T02; ydpj=(xdcz+lag1(xdcz)+lag2(xdcz))/3; cma=(ydpj+lag(ydpj))/2; /* SAS中lag函数、diff函数很有用,有记忆功能 */ jjzs=xdcz/cma; label rq='日期' nf='年份' jd='季度' t='时间编号' nyzcz='农业总产值' jgzs='价格指数' ljjgzs='累计价格指数' xdcz='相对产值' ydpj='3周期移动平均' cma='中心化cma' jjzs='季节指数';run;/*****************************************************/proc print data=mylib.T02; title "相对2003年总产值/亿元";run;title '';/*****************************************************//*四、计算季节指数平均值 *//* 按季度分组计算季节指数平均值,并将加过 *//* 保存在数据表中 *//*****************************************************/proc sql; /* 可以这么说吧,SQL知识学好了对SAS有莫大的帮助,SAS中很大部分是对表格的操作*/ create table mylib.T03 as select jd,avg(jjzs) as jjpjzs from mylib.T02 group by jd; data mylib.T03; /* 季节指数平均值表 */ set mylib.T03; label jjpjzs='季节平均指数'; run;/*****************************************************//*五、回归分析 *//* 对表T02中变量cma、t进行线性回归分析 *//* 并保存结果 *//*****************************************************/data temp; set mylib.T02; keep t cma;title "";proc reg data=temp; var cma t; model cma=t; output out=mylib.T04 p=yccma;/*保存预测值*/ title "线性回归"; plot cma*t; data mylib.T04; set mylib.T04; label yccma='预测值cma';run;/*****************************************************//*六、由预测cma计算预测相对产值 *//* 预测相对产值=预测cma * 季节指数 *//* 缺失季节指数按照平均季节指数计算 *//*****************************************************/data mylib.T05; merge mylib.T02 mylib.T04; keep nf jd t xdcz jjzs cma yccma; /*缺失值处理:用季节指数均值代替缺失值*/data temp1; set mylib.T05; where jjzs=.;data temp2; set mylib.T05; where jjzs^=.;proc sql ; update temp1 set jjzs= (select jjpjzs from mylib.T03 where jd=temp1.jd);data mylib.T05; set temp1 temp2;proc sort data=mylib.T05; by t;/*计算:相对产值预计值以及误差*/data mylib.T05; set mylib.T05; ycxdz=yccma*jjzs; wc=xdcz-ycxdz; wcp=abs(wc)*100/xdcz; label ycxdz='预测相对值' wc='误差' wcp='误差百分比';title "";proc print data=mylib.T05; title "预计值";run;/*绘制实际值和预测值折线图*/title "";proc gplot data=mylib.T05; title "实际值和预测值比较"; symbol1 color=black i=join v=star line=1; symbol2 color=blue i=join v=star line=2; plot xdcz*t=1 ycxdz*t=2 / overlay; /* overlay将几个系列绘制在一张图上*/run;quit;
- 我的第一次SAS编程
- 我的第一次编程
- 我的第一次编程
- 我的第一次编程
- 我的第一次脚本编程
- 我的第一次window API编程
- 我的第一次Windows编程实验
- 嵌入式Linux编程--我的第一次艰难跋涉
- 嵌入式Linux编程--我的第一次艰难跋涉
- 嵌入式Linux编程--我的第一次艰难跋涉
- 我的编程之路(四) 第一次外快
- 第一次玩博客,刚刚开始我的编程之路
- 关于我的第一次大学商品打折编程作业
- 我的第一次!
- 我的第一次
- 哈哈,我的第一次
- 我的第一次
- 我的第一次
- 加载程序集,实现编辑器插件(反射)
- fedora 16 安装mplayer
- 腾讯VS百度
- 2011年回顾以及2012年展望
- windows 2008 NLB (网络负载均衡
- 我的第一次SAS编程
- xhEditor 嵌入到ASP.NET的步骤
- hive导入数据丢失问题
- 从未谋面只闻其名——缅怀张孝祥老师!
- MFC INI文件读写
- ChartDirector 5.0 for python 笔记【10】CDML 标记语言
- php 截取UTF-8 GBK汉字
- SimpleOnGestureListener中各种Touch事件
- Using Android monkeyrunner from Eclipse, both in Windows and Linux!