Advances in Applied Mathematics
Vol.04 No.02(2015), Article ID:15248,9 pages
10.12677/AAM.2015.42021

Using SAS MACRO Programs to Build a Polynomial Model and Do the Selection of Variables

Kui-Jang Wang

Department of Mathematics, Tamkang University, New Taipei Taiwan

Email: kjwang@math.tku.edu.tw

Received: Apr. 28th, 2015; accepted: May 15th, 2015; published: May 20th, 2015

Copyright © 2015 by author and Hans Publishers Inc.

This work is licensed under the Creative Commons Attribution International License (CC BY).

http://creativecommons.org/licenses/by/4.0/

ABSTRACT

The purpose of this paper is trying to provide a useful solution to build a polynomial model. In the past years, there are a few applications on polynomial model; the reason is that it is difficult to create a large number of variables. For example, if you want to build a 3rd order polynomial with 5 variables, then you need 55 variables. If the variables increase to 18, then a 2nd order polynomial model will need 189 variables. It is far away from our ability. That is the reason why I wrote the following programs. There are 3 major reasons that I would like to deal with the polynomial model: 1) if the unknown model was smooth plan curve, then a polynomial model can provide an acceptable approximation. This can be easily seen from the Taylor’s polynomial; 2) as long as we have enough observations, then using a high order polynomial model can solve the unfitted problems; 3) it can avoid deleting important variables from the selection steps, since it is not easy to remove a variable completely from the model because there are too many cross product terms shown in the model. This paper will provide 2 major SAS MACRO programs, %Homopoly and %Model_Selection. The first program is used to generate a polynomial model and the next one will provide summarized result tables similar to the Table 11.8 of Montgomery [1] including the information of the models and necessary statistics. Users can easily apply to do the further analysis. To write those programs, I also wrote another 20 SAS MACRO programs which can be downloaded from the web-site http://tsp.ec.tku.edu.tw/QuickPlace/054569qp/Main. nsf/h_Toc/BADD7D0BFF0904A1482576D300229684/?OpenDocument. Please follow the instruction given by the readme.txt file.

Keywords:Polynomial Model, Taylor’s Polynomial, SAS MACRO

用SAS MACRO程序建立多项式模型与 变量筛选

王国征

淡江大学数学系,台湾 新北

Email: kjwang@math.tku.edu.tw

收稿日期:2015年4月28日;录用日期:2015年5月15日;发布日期:2015年5月20日

摘 要

本篇论文是希望藉助SAS MACRO程序,提出一个能解决建立多项式模型上的困恼。多项式模型在统计分析上一直是被忽略的,这可以很清楚的知道因为在所有的统计分析的出版品中很难找到以多项式回归为主提的例子。这原因无非是无法解决大量变量的模型建立与分析。举例来说要建立一个完整的5个变量的3次多项式总共需要55个变量,而如果变量增加到18个,那建立1个2次多项式就高达189个变量,因此在实用分析上是鲜有这样的例子。本篇论文就是希望能提出1个解决模型建立与初步分析的方法,读者可以藉由在第三章的例子的输出报表中很清楚去比较各个模型的优劣点,这就是为何统计分析需要工具去产生整合型的报表。欠缺这些报表,要去判定模型的好坏(基于预测值的准确度)是很困难的工作。而我之所以强调要用多项式的模型去分析数据有下列几点原因;1) 如果模型为平滑曲面则多项式模型可以提供一个可接受的模型。这可以很容易由泰勒定理得到验证;2) 只要观测值够多,大部分模型的不配合均可以用高阶多项式模型解决;3) 可以避免因为经过模型筛选而删除掉可能是有用的变量。那是因为模型会产生很多的交叉相乘项,既使用模型筛选的程序也很难将一个变量完全去除掉,因此可以保存几乎所有的变量,而因此将不失模型的完整性。本篇论文提供了两支主要的SAS MACRO程序;%Homopoly和%Model_Selection分别会在下个两章节中介绍。程序%Homopoly是用在建立多项式数据文件,而%Model_Selection则是用来提供SAS模型筛选后的总结数据,报表格式是仿照表11.8 Montgomery [1] 制作的。读者可以很容易复制到其他的分析。为了要编写程序,我同时提供了20支工具程序,读者可以至以下的网站下载http://tsp.ec.tku.edu.tw/QuickPlace/054569qp/Main.nsf/h_Toc/BADD7D0BFF0 904A1482576D300229684/?OpenDocument。请依循档案README.TXT中的指示去安装即可。

关键词 :多项式模型,泰勒多项式,SAS MACRO

1. 引言

自80年代有了软件包(Statistical Package)后,应用统计就离不开它了。但是我们都忘了一件事,那就是那时写的软件是针对那时分析需要而写的,不是针对提供正确的统计分析而写的。举例来说;在确定模型前大家都要看残差图去决定模型是否可行,但是却忘了图形只是参考而非是圣经。个人的解读不同就有不同的结果,而忘了有分析统计量可以很精确的判读模型是否可用。这都是因为统计分析的教材还停留在80年代,都没有跟上软硬件的进步。试问为何多项式模型一直无法被广泛的利用(对我来说只要资料量够大几乎都可以找到适合的模型)?那是因为软件的限制。为何不检查变异数的一致性?简单,软件不支持。因此我希望使用者看着这篇论文的结果,然后问自己这是不是你要的,如果用软件包要如何得到相似的结果?又要花多少时间?

由于SAS在输出报表后,不会提供如何筛选与总结数据的选项,导致用户必须面对庞大的报表去找寻可以使用的讯息。这是造成学习者在学习上难以跨越的鸿沟为了帮助学习者能快速的学会分析的方法我因此制作了一系列的程序提供统计分析与检测后的总结报表,用户因此可以轻松的由报表的结果而得到指示而能进行下一步的分析。这一系列的程序(主程序有13只),整合了过去40年统计学上重要的检定与分析方法,藉由这些工具既可以简化教学又可以很方便的应用在实务分析。由于多数程序尚需要修改,因此本篇只提供前两支程序而其他的程序将在完成后陆续发表。本文将不介绍程序本身(程序都太过于庞大不适合摆入内容中),而只介绍如何使用与结果判读,但是这些程序将提供在后。第二章将介绍如何产生多项式模型,而第三章将利用一个典型运用的例子去介绍如何藉由程序得到对各个模型完整的初步概念。而第四章会做总结与展望。以下就开始介绍程序。

2. 如何用%Homopoly建立多项式数据文件

本章节将介绍程序的组成以及程序如何使用。程序是由一个主程序%Homopoly加两个子程序所组成,一个子程序%POLY_SUB0是用来产生完整的N次多项式,而%POLY_SUB则是用来调整次方项用的。程序会依照观测值的多寡来决定可否产生使用者要求的多项式,如果观测值不足以产生所需之多项式则程序会自动降级直到满足分析所需为止。在表1将介绍程序自动产生的5个输出档案;而表2介绍如何输入MACRO变量。

Table 1. The output data files provided by % HOMOPOLY

表1. 程序% HOMOPOLY所提供之输出档

Table 2. The table of input parameters of % HOMOPOLY

表2. 程序% HOMOPOLY的参数输入表

产生多项式数据文件并不困难,困难在如何取变量名称以及日后如何辨识变量。因此本程序采用最简单的变量名字,。因为可以在每一个SAS文字变量的内容的长度内储存最多个变量,本程序目前总共可以提供9534个变量供分析使用(基于SAS9.1.1版),如使用最新版本可扩充到超过15,000个变量。程序会依照数据文件的大小自动调整可使用的最高次方数的模型(从4次以下开始,如果不确定可以用到几次,可以执行工具程序——%M (5, 4);其中第一个变量5为变量个数,第二个变数为次方数。用%PUT &M;得到一个5元4次多项是共有几项),并提供变量与原始变量的每一项的对照表与变量的卷标,以供SAS输出使用。用以下的例子来介绍程序是如何运作的。

[例题1.1]:介绍程序在数据量不足时如何运作,我先用下列程序产生76笔数据,然后要求程序去产生依完整的4次多项式数据。但是要产生这样的模型需要125笔数据,因此程序自动降成4次多项式而交叉相乘项的次方最大为3次。以下为SAS程序;其中用了一个程序,%VAR_NAME(X,END=5),用来产生一串文字“X1 X2 X3 X4 X5”。

DATA INPUT_D;

DO I = 1 TO 76;

X1 = 1; X2 = 2; X3 = 3; X4 = 4; X5 = 5; Y = I; OUTPUT;

END;*产生76笔数据;

%HOMOPOLY(IN_DATA =INPUT_D, OUT_DATA =OUTPUT, X = %VAR_NAME(X,END=3), Y=Y,

DEGREE =3, C_CROSS =3, PRINT = YES, FOOTNOTE = YES, N_FOOT=5);

程序会产生下列3个报表由于编排需要将以图片展示图1为新旧变量对照表;变量,TRUE_VAR代表原始变量而变量,REG_VAR为出现在报表中的代码。图2打印出回归变量,卷标,与次方数。图3打印出数据文件WORK。OUTPUT中的五笔资料;打印文件MOD_HOMO的内容见表3。

表3打印文件MOD_HOMO的内容。

3. 如何用%Model_Selection得到模型

本只程序设计的目的有三:

1) 提供6个回归模型;完整模型(Full Model),线性模型(Linear Model),前进搜寻法(Forward Selection),后退搜寻法(Backward Selection),逐步搜寻法(Stepwise Selection),与CP选择法得到的模型的预估值与可供选取模型参考的统计量。另一为根据输入的模型提供相同的报表。

2) 产生输出档案用来做常态分配与变异数的一致性的检定。

3) 可以同时对未来值作预测。

Figure 1. The table for true variables and their corresponding regressors stored in WORK.OUT_NAME

图1. 变数对照表

Figure 2. Table of label for each of regressors stored in WORK.POLYNAME

图2. 回归变量卷标表

Figure 3. The output data file with 5 observations and 22 variables

图3. 输出数据文件,WORK.OUTPUT只打印22个变量与5笔数据

Table 3. The contents of the data file MOD_HOMO

表3. 档案MOD_HOMO的内容

以下先介绍程序的内容与选项,然后再详述程序的架构与困难处。

程序的参数字于等号左侧而等号右侧为参数的默认值,表4介绍如何输入MACRO变量、%Model_Selection(DATA_IN = , Y = , X_LIN = , X_FULL= , X = , RES_OUT = NO, F_MODEL = NO, STAT = VIF, SLENTRY = 0.2, SLSTAY = 0.2, CHECK = NO, CHECK_D = CHK_DATA, ID = ID_ID, ID2 = , MODEL_IN = NO, MOD_NAME = , GROUP = ).

以下用(Kunugi, Tamura, and Naito [1961])的论文资料为例子:

为减少篇幅我用20笔标准化后的数据来执行模型筛选与预测,但不指定预测档案。此时程序会将含有遗漏值的4笔数据当作需要被预测的数据,并且会存放在2个不同的数据文件,Check_d01.sas7bdat与Missing.sas7bdat而资料文件N_of_miss_val.sas7bdat则存入遗漏值的数目。用MODEL_IN = NO选项执行程序%Model_Selection将得到以下2个图表;图4为资料文件MMODEL.sas7bdat的内容,图5,打印出在各个模型中参考点与预估点的估计结果。

%Model_Selection (DATA_IN =EXAMPLE.RIDGE_S20, X= T H C TH TC HC T2 H2 C2, Y= P, X_LIN= T H C, CHECK = YES, ID = ID_ID, ID2 = ID, GROUP=TEMP, F_MODEL=YES, STAT=VIF, MODEL_IN=NO, SLENTRY= 0.2, SLSTAY = 0.2);

[注]:

1) 选项X_FULL在MODEL_IN = NO时可以不给,程序会用&X来取代。

2) F_MODEL = YES是要求程序行印包含全部变量的模型。

3) STAT选项是选择打印VIF (variance inflation factor)的值,因为除了全部模型与线性模型外p-value值均小于0.2。

当你执行完后会在log窗口中发现两个警告讯息

WARNING: The NOINT option is ignored in the computation of ridge regression.

1) 使用未标准化的数据:%Model_Selection(DATA_IN = EXAMPLE.RIDGE_20, X = T H C TH TC HC T2 H2 C2, Y = P, X_LIN = T H C, CHECK = YES, ID = ID_ID, ID2 = ID, GROUP = TEMP, F_MODEL=YES, STAT=VIF, MODEL_IN=NO, SLENTRY= 0.2, SLSTAY = 0.2);

2) 使用未标准化的数据:%Model_Selection(DATA_IN = EXAMPLE.RIDGE_16, X = T H C TH TC HC T2 H2 C2, Y = P, X_LIN = T H C, CHECK = YES, CHECK_D = EXAMPLE.RIDGE_04, ID = ID_ID, ID2 = ID, GROUP = TEMP, F_MODEL=YES, STAT=VIF, MODEL_IN=NO, SLENTRY= 0.2, SLSTAY = 0.2);

我同时提供一SAS程序“Example of Model Selection.sas”以供模仿用。在使用前请先参考档案“README.TXT”。

Table 4. The table of input parameters of %Model_Selection

表4. 程序%Model_Selection的参数输入表

[注]:1) 如果MODEL_IN = NO则程序会自动产生一数据文件“MMODELS”包含模型名称(M_NAME),自变量名称(X),应变量名称(Y),文件名(FILENAME)与组名(GROUP)。2) 程序会检查输入数据文件有否包含遗漏值(Missing Value),会产生三个数据文件,CHECK_D01 (加入检察预测值的数据文件),MISSING(储存遗漏值)与N_of_miss_val (遗漏值的笔数)。3) 如果CHECK = YES,则程序会检察是否有输入预测值的数据文件“&CHECK_D”如果没有则会去数据文件中找遗漏值然后存于“CHECK_D01”。注意:如果数据文件中有遗漏值则程序会主动将之加入预测档案中,所以请小心对待数据文件中的遗漏值。

表5. 资料文件Ridge_20.sas7bdat不含末4笔的存在Ridge_16.sas7bdat

Figure 4. The data of file MMODELS.sas7bdat

Table 6.The data of file,Ridge_S16.sas7bdat

表6.档案Ridge_S20.sas7bdat内容

Figure 5. The predictions of referent and predicted points

图5. 各个模型的预测值与参考点值

4. 总结与展望

在下一篇我将讨论如何检定模型的基本假设(常态分配、变异数的一致性、与数据的独立性)。程序是基于检定统计量而不是用残差分析图去作判定。过往会使用图形去判定的原因是因为计算机太慢又太贵,故无法提供解决方法而非方法不存在,详细内容请参考Wang [2] 。由于程序太长,请参考附件档案。我也衷心的希望制作软件的先进们能制作出正确又方便的工具,能让统计分析方便又能得到正确的结果。

文章引用

王国征, (2015) 用SAS MACRO程序建立多项式模型与变量筛选
Using SAS MACRO Programs to Build a Polynomial Model and Do the Selection of Variables. 应用数学进展,02,162-171. doi: 10.12677/AAM.2015.42021

参考文献 (References)

  1. 1. Montgomery, D.C., Peck, E.A. and Vining, G.G. (2006) Introduction to linear regression analysis. 4th Edition, Willey, New York.

  2. 2. Wang, K.-J. (2013) Notes for regression analysis. Tamkang University, New Taipei.

期刊菜单