SAS中的矩阵运算

矩阵运算:SAS/IML模块简介
IML(Interactive Matrix Language)交互式矩阵语言,可以处理各种矩阵运算,拥有丰富的可以直接用于矩阵运算的算符和大量的数学函数,是用SAS系统开发的应用软件。
一、启动和退出IML
在PGM窗口键入语句:
proc iml; /*启动IML*/
reset print; /*从LOG窗口获得语句执行的有关信息*/
quit; /*退出IML ,返回SAS状态*/
二、矩阵的创建
1.直接输入法
例1
  a=2;/* a=2,一行一列的矩阵*/
  b={1 2 3,4 5 6};;/* b=,2行3列的矩阵*/
  c={1 2,3 4 ,5 6};;/* c=,3行2列的矩阵*/
  d={[3] 0 [2] 3 };/* d ={0 0 0 3 3},行向量*/
proc iml;
  reset print;
a=2;
  b={1 2 3,4 5 6};
  c={1 2,3 4,5 6};
  d={[3] 0 [2] 3};
quit;
2.利用函数创建矩阵
IML带有很多可以直接生成矩阵的函数,利用这些函数来创建矩阵不但出错率少,而且可以减少输入工作,提高效率。
(1)BLOCK函数
功能:根据给定的矩阵(必为方阵)来产生一个对角方阵
格式:BLOCK(matric1,matric2,…,matric15)
例2
proc iml;
reset print;
疑罪从无
a=block(5,6);
b=block(5,6,7);
quit;
输出为:
    A        2 rows    2 cols    (numeric)
                5        0
                0        6
    B        3 rows    3 cols    (numeric)
                5        0        0
                0        6        0
                0        0        7
例3
proc iml;
reset print;
a={1 1,3 3};
b={5 5,7 7};
c=block(a,b);
quit;
A            2 rows      2 cols    (numeric)
                1        1
                3        3
B            2 rows      2 cols    (numeric)
                5        5
                7        7
C            4 rows      4 cols    (numeric)
                1        1        0        0
                3        3        0        0
                0        0        5        5
                0        0        7        7
(2) I函数
功能:产生一个单位阵。
格式:I(dimension);“dimension”为一数字,表示方阵的阶数
例4
proc iml;
reset print;
a= I (3);
b= I (4);
c=block(a,b);
quit;
A    3 rows    3 cols    (numeric)
      1        0        0
      0        1        0
      0        0        1
B    4 rows      4 cols    (numeric)
      1        0        0        0
      0        1        0        0丙烯腈-丁二烯-苯乙烯
      0        0        1        0
      0        0        0        1
C    7 rows      7 cols    (numeric)
      1        0        0        0        0        0        0
      0        1        0        0        0        0        0
      0        0        1        0        0        0        0
      0        0        0        1        0        0        0
      0        0        0        0        1        0        0
      0        0        0        0        0        1        0
      0        0        0        0        0        0        1
三、矩阵的运算
“+”:A+B矩阵加法,A,B中可以有一个为数;
“-”:-A或A-B,求负矩阵或矩阵减法;
“#”:元素乘法
1数乘a#A;
2A,B同行同列,A#B为对应元素相乘;
3A为n×m,B为n×1或1×m,为A中元素分别与B中同行(列)元素相乘;
“*”:A*B矩阵乘法;
“@”:矩阵直积(kronecker积)
“/”:矩阵除法,A/B,B为与A同行同列的矩阵或数,对应元素相除;
“**”:矩阵乘方,A**k (A为方阵,k为不小于-1的整数) 为矩阵A连乘k次,k=-1时为求A的逆矩阵。
“`”:矩阵转置,A`为A的转置矩阵;
“||”:矩阵的水平合并,A||B要求A与B同行;
“//”:矩阵的垂直合并,A//B要求A与B同列;
例5
(1)   ,
3AB-2 A,A B`+ A`B,
程序:
proc iml;
reset print;
a={1 -1 1,1 1 -1,1 -1 1};
b={1 1 -1,2 -1 0,1 0 1};
c=3#a*b-2#a;
d=a*b`+a`*b;
e=a@b;
quit;
(2) ,求 AB
程序:
proc iml;
reset print;
a={-3 2 1};
b={-1,2,-1};
c= a*b;
quit;
(3)AB
程序:
proc iml;
reset print;
a={2,-1,3};
b={1-2};
c= a*b;
quit;
(4)
proc iml;
reset print;
a={1 -1 2,2 1 1,1 0 2};
b=a**2;
c= a**-1;
quit;
(5).和谐农村 ,求X
proc iml;
reset print;
a={2 1 -1,2 1 0,1 -1 1};
b={1 -1 3,4 3 2};
x=b*a**-1
quit;
四、求矩阵相关值的函数
inv(A):A的逆矩阵;
eijval(A):A的特征值;
小人物大境界eijvec(A):A的特征向量;
det(A):A的行列式;
trace(A):A的迹。
例6
X=
求X的逆矩阵,行列式,迹,特征值及相应的特征向量。
程序
proc iml;
reset print;
x={1 2 3 4 5 ,2 4 7 8 9,3 7 10 15 20,
4 8 15 30 20 ,光谱范围5 9 20 20 40 };
g= inv(x);
h=det(x);
t=trace(x);
e=eigval(x);
d=eigvec(x);
quit;
五、计算随机向量样本均值、样本协方差阵、样本相关阵及偏相关系数
1.直接编程(corr过程)
例1(教材p78例3-1.1)为了研究人体吸收和消耗氧的功能.对31位成年人进行耗氧测试,测试结果存在fitness数据集中,该数据集包含如下8个变量:
     
      variable    type        len    label
  1  x1        num        8      年龄
  2  x2        num        8      体重
  3  x3        num        8      耗氧量(肺活量)
  4  x4        num        8      1.5英里的跑步时间(分钟)
5  x5        num        8      休息时的心律
  6  x6        num        8      跑步时的心律
  7  x7        num        8      跑步时纪录的最大心律
8  group    num        8      试验组
求样本均值、样本协方差阵、样本相关阵
程序:
proc corr data=ch.fitness cov; /*求样本均值、样本协方差阵、样本var x1-x7;                  相关阵*/
proc corr data=ch.fitness cov nosimpl;
  with x3  x4;
  partial x1 x2;
  var x5 x6 x7;
run;
第二个corr过程是求当变量x1(年龄)和x2(体重)固定时,x3(耗氧量)x4(跑步时间)和x5(休息时的心律)x6(跑步时的心律)x7(最大心律)之间的样本偏协方差阵和样本偏相关阵及对样本偏相关系数的检验。

本文发布于:2024-09-20 21:36:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/614119.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:矩阵   函数   样本   测试   方阵   运算   跑步   协方差
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议