IML中的那些函数(二)

浏览: 1897

前面一篇介绍了IML中的一些基本函数,包括了常用的运算符号和简单的运算函数,这一篇将会介绍一些功能更为复杂的函数。 

1.       组合函数allcomb(m,n)表示从m个不同元素里取出n个元素的组合,返回的是一个组合矩阵,矩阵每一行都代表一个组合,其中n代表列维度,也就是具体的元素个数,行维度可以通过组合公式来计算。组合公式如下所示:

 

例如,取5个颜色大小一模一样的乒乓球,放在一个袋子里,每个球身标有一个数字,分别为1、2、3、4、5,现在希望从袋子里一次取出2个球(也可以分两次不分先后不放回取球,都一样),问取出的两球总共有多少种可能性?那么通过枚举我们也可以知道组合的个数为10,现在我们通过组合函数allcomb来进行求解: 

从图一我们可以通过矩阵C看到所有可能的组合,我们可以通过nrow函数(上一篇已介绍)来求出组合的个数;从图二和图一的比较可以看到组合的性质,即上述公式所述。 

2.       排列函数allperm(n)/allperm(n,k)表示对n个元素做一次排列,allperm(n)返回的是一个排列矩阵,列维度为n,行维度为n!,每一行表示一种排列方式,allperm(n,k)返回的是一个1×n矩阵,表示第k种排列方式。排列公式如下所示:        

上述公式表示从n个不同的元素取出m个元素并进行一次排列。从n=m时,表示全排列,对应函数allperm(n)。

例如,在上述例子中取标号为1、2、3的乒乓球进行一次全排列,可以得到3!=6,代码如下所示,分别展示allperm(n)和allperm(n,k)的用法: 

3.       call appcort(prqb,lindep,a,b)这个函数主要用于对满秩的矩阵方程的最小二乘解通过正交分解法求解,返回的是一个n×1的解向量。在这儿首先解释一下什么是最小二乘问题:在一空间中给定一个点集合,假设为二维空间,那么体现在坐标轴上为(X,Y),现在为了能够求得一个能够满足所有(X,Y)的函数,使得在该函数曲线上的点(X’,Y’)和(X,Y)的差平方和最小,简单点说就是希望所有点到该函数曲线上的距离平方和最短。该函数被称为拟合函数的最小二乘解,求此函数的方法就称为最小二乘法。最小二乘法的矩阵形式为:

其中,A为m×k矩阵,x为k×1的列向量,b为m×1的列向量。

接下来解释一下什么是矩阵的正交分解:简单点说,就是讲矩阵一分为二,分解为两个不同类型矩阵的乘积(一个正交,一个上三角),以此来优化求解过程。在数学矩阵计算里面,我们通常会称之为QR分解,即A=QR,其中Q为m×k的正交矩阵,R为k×k的上三角矩阵,推导过程我就不再详细介绍了,有兴趣的可以自行搜索这么方面资料。                 

那么最小二乘问题通过QR分解就可以将该矩阵方程转化为QRx=b,而由Q为正交矩阵的性质Q`Q=E知,Rx=Q`b,通过对矩阵由m维降到k维这样降维的方式来优化过程的求解。代码展示如下所示:

在对矩阵的最小二乘问题的求解中,这只是其中一个方法,还有其它的比如三角分解法、Cholesky分解、奇异值分解等等,不同的方法适用于不同的条件,有兴趣的可以自行搜索这方面的资料了解一下。 

4.       call bar(x)表示调用sgplot过程画柱状图,可以对该柱状图添加合适的选项来改变图形的外观。例如:

5.       bin(matrix,cutpoints)首先解释一下分箱:分箱其实就是对一列数据进行区间划分,通过设定不同的区间的分界点,把数据分为特定的几个区间,分箱的目的是为了将连续数据离散化,便于不同量级数据的特征区分与比较。Bin( )表示对矩阵进行分箱,其中cutpoints为分箱区间点。通常第一个区间为左闭右开,最后一个区间为闭区间,也可以通过添加选项来设置对应的开和闭。例如:

在设置上下限区间点时,最上和最下区间点可以设置为 {.M -2 -1 0 1 2 .I}这种形式 ,其中”.M”表示-∞,”.I”表示+∞。

6.Blackstr(n)用来表示一个空字符串的特定长度。用过data步的童鞋应该都知道在使用字符变量赋值时最好先预定特定长度,否则很容易出现截断的情况。在矩阵中也类似,字符矩阵可以通过这个函数结合J( )函数来为矩阵设定字符长度。其中J(m,n,value)表示一个所有元素值均为value的m行n列矩阵,类似的有I(n)表示生成一个n维的单位矩阵。例如:

 

IML中的函数太多了,从常用的基本运算函数到线性代数函数、图形调用函数、优化函数、时序模型函数等等都涵盖在内,实在介绍不过来,那么函数部分到这里基本上就结束了,如果各位对这些函数有什么疑问的话,可以公众号给我留言,我会尽可能的为大家解惑。




 

微信公众号:mingfeng07数据搬运工

个人微信:xiaopengpeng07

 欢迎加我来一块地玩耍啦! 

推荐 0
本文由 mingfeng07 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册