分类: SAS_Data_Mining |
在决策树的章节我们经常会看到一幅训练误差和检验误差图,用于说明过拟合现象,即模型的训练误差随着模型复杂度的增加而降低,但模型的检验误差却随着复杂度的增加先降低后增加。
我们看看用SAS如何验证这种现象并生成相应的训练误差和检验误差图。
libname sampsio '!sasroot\mmcommon\sample';
%macro Misc_rate_by_depth(depth=20);
proc delete data=misc;
run;
%do i=1 %to &depth;
proc arbor data=sampsio.hmeq_train criterion=ENTROPY splitsize=2
maxbranch=2 maxdepth=&i;
run;quit;
data misc_train;
分类: SAS_Quick_Tips |
调整数据集变量的顺序是一个常见的数据处理需求,尤其是当此数据集要用于显示或者报表输出的时候,遗憾地是SAS没有提供一种方便高效的方式来帮助用户实现此需求。下面的技术支持网页给出了一种基于Retain语句的实现方案,但是该方法仍然需要读写一遍数据。使用Length语句可以按照新的顺序重新定义一遍所有的变量(也需要读写一遍数据),但不如Retain语句灵活和简洁。
标签:
杂谈 |
分类: SAS_Quick_Tips |
从表里提取前 N 条记录是 SAS 程序员常见的数据处理,通常有两个目的:
1)排名后取前
2)基于测试或者调试目的取前 N 条记录
SAS 提供了多种方法提取表的前 N 条数据。
1)options obs=N;
这是个全局选项,一旦设置会对所有读表的操作起作用。不用改代码,很方便,但是有比较大的隐患。
比如,下面的代码使用逻辑回归模型进行预测,目的是取表 work.newdata 的前5条数据做预测,但是因为 options obs=5; 这个全局选项,预测时从模型参数文件 work.logisticmodel 中只取了前5条记录,导致模型预测结果出错。
options obs=5;
proc logistic inmodel=work.logisticmodel;
run;
2)obs 选项
这个是我们最最常用的方法,但是 DS2 和 所有 HP 的过程步目前都不支持此选项。
data firstn;
run;
proc print data=oraclib.Hmeq_10k(obs=5);
run;
标签:
杂谈 |
分类: SAS_Quick_Tips |
初学
SAS
为了说明两种循环的区别,我们先看一下两种方法最后生成的 SAS 代码以及运行时间。
1)数据步循环
data temp;
retain rule_statement ;
length rule_statement $5000 ;
set rule_data(where = (rule_id = 'r1'));
if 2 = 2 then do;
rule_statement = 'if '||'rc_term1 = '||quote(trim(rc_term1));
if 3 = 2 then do;
rule_statement = trim(left(rule_statement))||' then do ; ';
end;
end;
else if 2 = 3 then do;
rule_statement = trim(left(rule_statement))||' and rc_term1 =
'||quote(trim(rc_term1))||' then do ; ';
end;
else do;
rule_statement = trim(left(rule_statement))||' and rc_term1 =
'||quote(trim(rc_term1));
end;
标签:
杂谈 |
分类: SAS_Quick_Tips |
这篇算是《SAS编程技巧--数据汇总》的姐妹篇,在数据汇总那篇文章中我们用 SUMMARY 过程计算了所有数值型变量的频数以及各种统计量,今天我们看看如何用 SAS 对分类变量进行频数分析。这篇文章纯粹是编程方面的讨论,比较枯燥,但是编程中遇到的问题及其解决办法个人认为很是有趣,而且我建议大家下去试试有没有更好的解决办法。
假设我们现在需要对数据集中所有分类变量进行频数分析,并将结果保存至 SAS 数据集,期望的结果如下:
varname | level | Frequency | Percent | CumFrequency | CumPercent |
---|---|---|---|---|---|
sex | M | 10 | 52.63 | 10 | 52.63 |
sex | F | 9 |
标签:
杂谈 |
分类: SAS_Quick_Tips |
个人感觉在 SAS 宏语言里最难掌握或者最易混淆的就是各种 QUOTE 函数的用法,刚好上周五帮同事看了一个跟QUOTE 相关的问题,借此机会将 QUOTE 的作用以及所有 QUOTE 函数的用法整理如下。
这是几位 SAS 用户在 SGF Paper 里面对 Macro Quoting 的感慨:
I have often said that anyone who thinks macro quoting is
simple, probably doesn't understand the problem.
Macro quoting is hard because:
• Quoting is inherently a hard subject.
• The interaction between two languages makes quoting harder.
• The timing issues involved are complex, when the generated
language compiles and executes during the
generation of its code.
• There are two macro languages involved - the one which is
compiled between %MACRO and %MEND
statements and the one which executes immediately in open SAS
code.
• Bugs in the macro facility prevent recognition of a consistent
pattern of how macro quoting works.
原
标签:
杂谈 |
分类: Analytics |
在
统计学中, 以查尔斯·斯皮尔曼命名的斯皮尔曼等级相关系数,
经常用希腊字母
http://upload.wikimedia.org/math/f/7/f/f7f177957cf064a93e9811df
标签:
杂谈 |
分类: SAS_Career |
http://ja.scribd.com/doc/7251195/SAS-Interview-Questions
http://e-university.wisdomjobs.com/sas-programing-interview-questions.html
http://www.techinterviews.com/sas-interview-questions
http://www.allinterview.com/Interview-Questions/SAS.html
http://www.techinterviews.com/sql-study-notes
http://www.techinterviews.com/sql-interview-questions-and-answers
标签:
杂谈 |
分类: Analytics |
课程基本情况:
人大在职研《抽样技术》课程为题库课考试科目,课程设置为两天半课堂讲解,另加半天习题解答。
上课时间安排:3月24日~3月25日,4月2日上午 课程学习,4月2日下午 习题解答。
授课老师:金勇进教授
总体评价:教材的选择和教师的讲解都很不错,教材章节条理清晰,老师授课针对学生背景深入浅出并结合考试内容讲解重点,舍弃理论证明同时又不失某些实战经验的分享,对于容易混淆的一些概念加强说明(比如:随机与随便的区别,样本与抽样单元的区别等)。
一个小细节:人大的老师在统计量和数学公式的发音上都挺规范的。比如均值读作 X Bar,参数的估计量读作 Y Hat等,这些读法对于像我这样做统计软件的开发同时需要与老外沟通的人士很重要。
书里面有一句话很关键,老师上课时也强调过:研究统计量的数学期望和方差是抽样理论所讨论的主要问题。各章节基本上都是围绕着这个主题展开的,使用不同的抽样方法如何计算期望和方差,以及相应的理论推导和公式证明。
笔记