SAS和金融数据处理2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关系数
• CORR过程
proc corr data=z_carvalue outp=pearsoncorr outs=spearmancorr; var var1 var2; *at the top of table; with var1 var2 var3; *vertical side; run;
数据的排序、描述
• Rank
Data data1;set data1; Rank+1; By stkcd; If first.stkcd(第一次出现) then rank=1; Run;
Proc rank data=test; Class var1; Rank var2; Run;
数据的排序、描述
窗口介绍
• SAS数据
– 不限制观测值数量 – 对中文字符识别能力较差 – 常用数据格式有:
• 数值型 • 日期型 • 字符型
窗口介绍
• SAS程序
– 一般情况下
• 每一行命令都以分号结束 • 最后需要加run;表示程序告一段落,可以开始运行 • 运行的方式是通过鼠标选定需要运行的命令段(被 颜色覆盖),然后点击菜单栏的“运行”命令,或 者按键盘的F3键。
横向合并前要让参照变量先 排序
数据的合并
1、合并前不要求参照变量先排序
• 横向的合并:SQL
2、只保留双方都能对应上的数据
– 按照相同的某个变量合并(如股票代码、年份) Proc sql; create table newdata as select p.*,q.stkprice from data1 as p, stk as q where p.stkcd=q.stkcd and p.fyear=q.fyear; Quit;
• 保留变量
Data test1; set test; keep var1 var2; Run;
变量
• 更改变量名称
Data test;set test; Rename var1=var1_n var2=var2_n; Label var1=‘var1_n’ var2=‘var2_n’; Run;
观测值
• 选择
Data test1; set test; If exchange=‘SH’; Run;
观测值
• 剔除
Data test; set test; If indcode=‘I’ then delete; if substr(stkcd,1,1)=‘9’ then delete; If ta=. then delete; If lev=. then delete; Run; Data test; set test; If _n_<19999;*_n_表示观测值的排列序号; Run;
按照临界值分组
• 两步完成
– 通过UNIVARIATE求得某个变量在各百分位的临 界值; – 新生成一个变量group,按照观测值所在的临界 范围定义group=1,2,3,4…
一些统计检验
• 均值T检验
– 异于0的t检验
proc ttest data=carvalue h0=0; var car5_1 car0_5; run;
循 环
数据的保存
• Work逻辑库中的数据不能保存,如果要保 存,需要把数据存入其他逻辑库
– Step 1:复制work中需要保存的数据 – Step 2:直接粘贴在其他逻辑库中 – 或者通过程序
• 保存sdata到ds逻辑库内
Data ds.sdata; Set sdata; Run;
数据的导出
观测值
• Wind原始数据处理
%macro cs; Data dataz;set data2; Fyear=2001; Rename roa2001=roa; %do i=2002 %to 2010; Data dataz;set data2; Fyear=&i; Rename roa&i=roa; Label roa&i=‘roa’; Keep stkcd fyear roa&i; Run; Data tdata;set tdata dataz; Run; %end; %mend; %cs;
SAS运行程序
窗口介绍
Work是默认的逻辑 库,此逻辑库下的 数据在关闭sas程序 后不能保存
窗口介绍
• 逻辑库
– 普通逻辑库
• 好比电脑的文件夹,可以保存数据 • 新建逻辑库需要制定存储路径 • 引用数据时,表达格式为:逻辑库名.数据文件名(比如 ds.data1)
– Work逻辑库
• SAS默认的工作逻辑库,引用其中的数据时,无需指定逻 辑库名 • 数据不能永久保存在此逻辑库。关闭软件后,work内的 数据也随之消失。
– 一般的多元变量回归
PROC REG DATA=data; MODEL y=var1 var2 var3/vif collin collinoint; RUN; proc reg data=betadata outest=mmparam (rename=(intercept=alpha mret=beta) keep=stkcd intercept mret _rmse_) noprint; by stkcd; model ret=mret; quit;
proc import out=work.t datafile="C:\Documents and settings\User\Desktop\stkdat\d1.xls" dbms = excel2000 replace; run;
数据输入
• 批量导入excel文件
proc import out=work.t datafile="C:\Documents and Settings\User\Desktop\stkdat\d1.xls" dbms = excel2000 replace; run; data man_stk;set t; run; %macro cao; %do i=2 %to 5; proc import out=work.t datafile="C:\Documents and Settings\User\Desktop\stkdat\d&i" dbms = excel2000 replace; run; data man_stk;set man_stk t; run; %end; %mend; %cao;
数据的排序、描述
• 描述
– 如果需要对特定的变量进行描述,并且统计结 果放在某个数据中,则:
PROC MEANS DATA=sales noprint; BY Month; ods output means.summary=summary; VAR data=data1 n mean std min max median; proc meansPetunia; Output class classvar; out=sumdata mean(petunia)=mean; RUN; var var1 var2 var3; run; ods output close;
常用数据库
• 国泰安CSMAR
• • • • • 股票交易 公司财务、治理和其他基础信息 并购 IPO和再融资等 特色:最终控制人
• 校外IP:tongjidaxue 20111227
尝试分别提取所有上市公司2007~2011财年的总资产、净利润、经营活动产生 的现金流量净额;所有公司2011-1-1到2011-1-31的股票日收益率
• 菜单
– File-export data – 选定导出的数据格式
变量
• 赋值
Data test; set test; ta=tl+equity; lev=tl/ta; Year=substr(repdat,1,4)*1; Run;
变量
• 删除变量
Data test; set test; Drop var1 var2; Run;
SAS介绍
• 常用的统计软件
– SAS:擅长数据处理和统计检验 – Stata:擅长统计检验,尤其是面板数据 – R:矩阵运算 – Matlab :数学软件之一,数组处理功能强大, 且能按照数理公式进行处理和表述
经济、金融和会计研究中,SAS和Stata使用比较广泛
窗口介绍
结果输出窗口 保存数据的逻 辑库 数据处理和程序检 查的日志(记录)
– 变量相异T检验 proc ttest data=score; paired write*read; run;
一些统计检验
• 均值T检验
– 同一个变量,两组观测的均值相异检验
proc ttest data=score; class female; var write; run;
一些统计检验
• Run regression
• 滞后一期lag
Data a;set a;
Lagvar=lag(var);
Run;
数据的排序、描述
• 描述
PROC MEANS DATA=sales noprint; BY Month; VAR Petunia SnapDragon Marigold; TITLE 'Summary of Flower Sales by Month'; RUN;
数据的合并
• 数据的复制和纵向合并
– 复制
DATA data1; SET data; RUN;
– 修改
DATA data1; SET data; IF var1=0 THEN delete; KEEP var1 var2 var3; RUN;
– 纵向合并
DATA data2; SET data data1; RUN;
数据的合并
• 横向的合并:merge
– 按照相同的某个变量合并(如股票代码、年份)
PROC SORT DATA=data; BY stkcd; PROC SORT DATA=inddata; BY stkcd; RUN;
DATA data1; MERGE data inddata; BY stkcd; RUN;
窗口介绍
• 一些小习惯
• 把sas code和相应的sas data保存在同一个文件夹 • 对于一些经常用到的sas code可以保存下来,方便以 后取用 • 通过google和SAS global forum了解一些sas的处理技 巧
常用数据库
• Wind金融资讯
• • • • 股票交易、财务数据、公司基础面信息、行业信息 分析师盈利预测数据 基金和信托等机构投资者数据(含定期持股信息) 定期及时更新
单变量过程
• Univariate
– 可以完成类似means过程的计算,而且还可以
• 计算分位数,如10%,20%...90%等 • 生成频率表
proc sort data=rec5; by fyear ins_hold; run;
proc univariate data=rec5 noprint; var ins_hold; by fyear; output out=ins_hold pctlpts=0 10 20 30 40 50 60 70 80 90 100(取临界值) pctlpre=p1_ ; run;
数据输入ຫໍສະໝຸດ Baidu
• 通过菜单输入
– File-Import data – 选择相应的数据格式
• 数据导入完成后检查一 遍是否有数据遗失. 尤其是EXCEL文件的前几行 数值为空值的情况下
数据输入
• SAS code
– E.g. 导入excel文件d1.xls到SAS逻辑库work并且保 存为名字t的sas数据。
结果输出excel
• ODS(输出)
ODS HTML BODY = 'C:\thesis\v1.xls'; PROC MEANS DATA=sales noprint; BY Month; VAR Petunia; Output out=sumdata mean(petunia)=mean; RUN; ODS HTML CLOSE;
Label roa2001=‘roa’;
Keep stkcd fyear roa2001; Run;
Data tdata;set dataz; Run;
数据的排序、描述
• 排序:Sort proc sort data=tdata; by stkcd fyear; run; • 数据的输出展示:print proc print data=data1; by year; var var1 var2 var2; run;