注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

数据挖掘

学习数据挖掘

 
 
 

日志

 
 

SAS/ETS模块(EXpand)  

2013-07-04 16:10:24|  分类: SAS |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
EXpand 过程把时间序列从一种取样间隔或频率转换为另一种,并且补插时间序列中的缺失值, 可以实现高频/低频之间的转换.
1,转换为高频序列
为了产生高频率估计,要用from=选项和to=选项指定输入输出间隔,并在一条convert语句中列出将被转换的变量. 假设数据集annual中的变量x,y,z为每年记录的时间序列,而你想得到每月的记录估计,则可以使用下面的语句:

proc expand data=annual out=monthly from=year to=month;
 convert x y z;
run;


2, 使用ID语句
ID语句通常与proc expand 一起使用来说明一个用于识别每个输入观测时间的SAS日期或日期时间变量.一条ID语句允许proc expand做下列事情:
*识别输入数据集中的观测
*决定观测时间段和输入序列中由于遗漏观测而产生的空隙;
*说明日历影响,例如每月或闰年中的天数.
假设数据集 annual 包含一个用来识别每个观测年度的名为date的SAS日期 变量.前面的例子可以修改为包含ID的语句:

proc  expand data=annual out=monthly from=year to=month;
convert x y z;
ID date;
run;



若你没有用SAS日期或日期时间值来指定一个ID变量,那么proc expand 将作出很可能不是你所需要的缺省假设.
 
3,指定观测特性
区分 时间点上被测量的变量 与表示一段间隔上总值 或平均值的变量时很重要的, 时间点值常被称为stocks(估量)或levels(水平).说明一段间隔上总值或平均值的变量常被称作flows(流量)或rates(比率)
在缺省情形, proc expand 假设所有的时间序列都是指定周期开始的时间点上的值. 若一个序列测量的不是周期开始时间点上的值,使用此假设对数据进行插值就不合适. 此时应该指定序列的正确观测特性, 序列的观测性质 用convert语句中observed=选项指定.
假如: 假设数据集annual 包含度量年总和的变量 a,b,c 而度量年初值得变量为x,y,z 下面估计每个月对a,b,c中的年总和的贡献,并且插入了x y z的月初估计

proc expand data=annual out=monthly from=year to=month;
id date;
convert x y z;
convert a b c/observed=total;
run;
Expand 过程支持5种不同的观测特性,对这5种观测特性observed=选项的值为:
beginnind 周期起始值
middlE 周期中间值
end 周期结束值
total 周期总和
average 周期平均值


4, 组合不同频率的时间序列
假设三个数据集:quarter,monthly,weekly. 数据集quarter和weekly通过使用proc expand 步转换为月频率,然后使用data步的merge语句将三个数据集合并起来并产生数据集combined

proc expand data=quarter out=temp1 from=qrt to=month;
id date;
convert gdp/observed=average;
run;
proc expand data=weekly out=temp2 from =week to=month;
id date;
convert interest/observed=average;
run;
data combined;
merge monthly temp1 temp2;
by date;
run;


5, 补插缺失值
为了不转换观测频率而是向时间序列中补插缺失值,不用to=选项即可. 例如下面的语句想annual中的时间序列补插了缺失值:

proc expand data=annual out=new from =year;
id date;
convert x y z;
convert a b c/observed=total;
run;


为了在时间的指定点对观测变量插入缺失值, 将from =和 to=选项省略.并且使用ID语句为观测提供时间值,观测不需要是周期性的或者形成规则时间序列,但必须以ID变量对数据集进行排序. 例如 下面的语句向数据集A中的数值变量插入缺失值:

proc expand data=a out=b;
id date;
run;


6,转换观测特性
expand过程可以用与输入序列特性不同的观测为输出序列做插值.要转换观测特性,需在选项observed=选项中指定两个值,第一个值指定输入序列的观测特性,而第二个指定输出序列的观测特性.
例如: 在下面的语句将数据集annual中的周期总和变量a转换为年度中点估计.此例没有转换序列的频率

proc expand data=annual out=new from=year;
id date;
convert a/observed=(total,middle);
run;


7,产生新变量
使用convert语句为一个包含转换结果的新变量命名,利用这一特点,在proc expand中,可以产生一个序列的几种不同的描述. 在输入变量名和等号后制定新的名字

convert variable=newname...;


假设要将季度性数据转换为月记录的, 并且希望周期起始变量X的月初和月中估计都可以得到.

proc expand data=a out=b from=qtr to=month;
id date;
convert x=x_begin/observed=beginning;
convert x=x_mid/observed=(beginning,middle);
run;


8,要求不同的插入方法
在缺省情形,将对输入序列拟合一条三次样条曲线,并且输出由这条插入曲线来几声,其他插值方法可以用convert语句中的选项method=来指定.
例 用线性插值方法将年度序列转换为月记录序列:

proc expand data=annual out=monthly from=year to=month;
id date;
convert x y z /method=join;
run;


SAS/ETS模块(EXpand) - 小坏 - Do  What
 
  评论这张
 
阅读(1784)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017