SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 7054|回复: 9
打印 上一主题 下一主题

一些对数据进行评分的方法

[复制链接]

10

主题

39

帖子

1070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1070
QQ
跳转到指定楼层
楼主
发表于 2014-3-9 19:34:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天跟大家分享一些SAS中利用模型结果对数据评分的方法,即做预测。主要包括三部分:Score ProcedureScore StatementCode Statement。下面对其一一进行介绍。


为了说明方便,首先准备两个数据集:一个是用来拟合模型的数据;一个是用来做评分的数据。代码如下:


  1. /* 用来拟合模型的数据 */
  2. data A;               
  3. input x y @@;
  4. datalines;
  5. 1  4  2  9  3 20  4 25  5  1  6  5  7 -4  8 12
  6. ;
  7. run;
  8. /* 用来评分的数据 */
  9. %let NumPts = 200;
  10. data ScoreX(keep=x);
  11. min=1; max=8;
  12. do i = 0 to &NumPts-1;
  13.    x = min + i*(max-min)/(&NumPts-1);
  14.    output;
  15. end;
  16. run;
复制代码


The Score Procedure
在SAS/STAT模块中的一些Procedure能将模型预测的参数估计值输出到一个SAS数据集当中。Score Procedure能使用该数据集中的参数估计值来对新的数据评分。在此处将用到PROC REG,通过OUTEST=选项将参数的估计值输出到一个数据集。

  1. proc reg data=A outest=RegOut noprint;
  2.    Y_Pre: model y = x;    /* Y_Pre是这个模型的一个label*/
  3. quit;

  4. proc score data=ScoreX score=RegOut type=parms predict out=Pred;
  5.    var x;
  6. run;
复制代码


部分数据结果:
RegOut(参数估计值数据集):


Pred(对新数据ScoreX评分后的结果数据集):


注:这里预测变量的名字为Y_Pre,是在PROC REG中对模型设定的label的名字。如果在PROC REG中不设定label,则此处的预测变量名为MODEL1。

The Score Statement
非参数估计的模型是无法输出参数估计值的,所以上面的方法就没用了。但是非参数估计中有一个Score Statement,可以实现同样的功能。此处以PROC TPSPLINE为例进行说明。

  1. proc tpspline data=A;
  2.    model y = (x);
  3.    score data=ScoreX out=Pred2;
  4. run;
复制代码



评分数据集Pred2结果:


预测结果的图形:


The Store Statement
Store Statement可以将模型相关的东西存储起来(并不是以数据集的形式),PLM Procedure可以使用这些存储起来的信息并对新的数据进行评分。
根据PROC TPSPLINE对原始数据的拟合图,此处使用GLM Procedure对数据进行三次多项式的拟合,利用Store Statement将模型信息存储起来,数据然后用PROC PLM对新数据评分。


代码如下:
  1. proc glm data=A;
  2.    model y = x | x | x;   
  3.    store work.ScoreExample;     /* 存储模型信息*/
  4. quit;

  5. proc plm restore=work.ScoreExample;
  6.    score data=ScoreX out=Pred3;  /* 对新数据评分 */
  7. run;
复制代码


预测结果数据集Pred3:



至此,这几种对数据评分的方法已介绍完毕。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  微信微信
收藏收藏2
回复

使用道具 举报

1

主题

12

帖子

103

积分

注册会员

Rank: 2

积分
103
沙发
发表于 2014-3-10 07:37:40 | 只看该作者
谢谢分享,学习了。
回复 支持 反对

使用道具 举报

6

主题

31

帖子

293

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
293
板凳
发表于 2014-3-10 08:20:12 | 只看该作者
连连发力,给力的Slash!
SAS资源
1. SAS 微信:mysasnet
2. SAS QQ群:348941365
3. SAS Blog:编程|统计|医药
回复 支持 反对

使用道具 举报

1

主题

2

帖子

52

积分

注册会员

Rank: 2

积分
52
QQ
地板
发表于 2014-3-10 09:05:04 | 只看该作者
支持!!
回复

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
5#
发表于 2014-3-10 14:45:13 | 只看该作者
赞!受教了,谢谢楼主
回复 支持 反对

使用道具 举报

2

主题

41

帖子

318

积分

中级会员

Rank: 3Rank: 3

积分
318
6#
发表于 2014-4-2 19:29:15 | 只看该作者
第一个过程称作对数据的“评分”,令人迷惑。称为”预测值“计算应该更好。这个方法是处理missing values时最简单的一种方法。
回复 支持 反对

使用道具 举报

10

主题

39

帖子

1070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1070
QQ
7#
 楼主| 发表于 2014-4-7 12:27:44 | 只看该作者
mono 发表于 2014-4-2 19:29
第一个过程称作对数据的“评分”,令人迷惑。称为”预测值“计算应该更好。这个方法是处理missing values时 ...

是的,其实就是预测
回复 支持 反对

使用道具 举报

6

主题

16

帖子

86

积分

超级版主

Rank: 8Rank: 8

积分
86
8#
发表于 2014-4-8 11:29:45 | 只看该作者
对于小规模数据的预测,一种简单的方法就是把预测的部分和拟合模型的数据放在一起就行了。
回复 支持 反对

使用道具 举报

10

主题

39

帖子

1070

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1070
QQ
9#
 楼主| 发表于 2014-4-8 20:59:21 | 只看该作者
bxfly 发表于 2014-4-8 11:29
对于小规模数据的预测,一种简单的方法就是把预测的部分和拟合模型的数据放在一起就行了。 ...

嗯,是的!
回复 支持 反对

使用道具 举报

11

主题

49

帖子

267

积分

中级会员

Rank: 3Rank: 3

积分
267
10#
发表于 2014-5-31 00:07:31 | 只看该作者
if you have char variables, you cannot use proc score/score statement.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2024-11-22 08:19 , Processed in 0.118458 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表