全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1584 4
2011-11-03
要处理一个数据,是关于大约20年前美国最大的10个企业的。内容如下:

Company                   x1                  x2                  x3

General Motors          126,974        4,224            173,297

Ford                           96,933          3,835            160,893

Exxon                         86,656          3,510            83,219

IBM                           63,438          3,758             77,734

General Electric          55,264           3,939            128,344

Mobil                         50,976           1,809            39,080

Philip Morris               39,069           2,946            38,528

Chrysler                      36,156           359               51,038

Du Pont                      35,209           2,480            34,715

Texaco                       32,416           2,413             25,636

x1为销售额,x2为利润,x3为资产,单位为(百万美元)。

现在要求在SAS中求相关矩阵,但不能用proc corr,只能用矩阵运算,也就是proc iml来求。

简单的proc corr现在不让用,proc iml 我不太会用,希望大家哪位懂的能帮帮我。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2011-11-3 13:00:17
为什么不能用proc corr呢  proc iml你可以google一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-3 13:25:05
如果你只要作这一个表的
写一个iml的算法真是得不偿失
不能用proc corr的话,用Excel也能算出来
或者用matlab这样的矩阵语言也还简单
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-3 14:50:08
data test;
   infile cards;
   input company $ 16  x1 x2 x3;
   cards;
General Motors               126974        4224            173297
Ford                          96933        3835            160893
Exxon                         86656        3510            83219
IBM                           63438        3758             77734
General Electric              55264        3939            128344
Mobil                         50976        1809            39080
Philip Morris                 39069        2946            38528
Chrysler                      36156        359             51038
Du Pont                       35209        2480            34715
Texaco                        32416        2413             25636
;
run;
ods trace output;
PROC IML;
   use test;
   read all var _num_ into x;
   nm={x1 x2 x3};
/* Module to compute correlations */
start corr;
   n = nrow(x); /* number of observations */
   sum = x[+,] ; /* compute column sums */
   xpx = t(x)*x-t(sum)*sum/n; /* compute sscp matrix */
   s = diag(1/sqrt(vecdiag(xpx))); /* scaling matrix */
   corr = s*xpx*s; /* correlation matrix */
   print "Correlation Matrix",,corr[rowname=nm colname=nm] ;
finish corr;
/* Sample run */
run corr;
quit;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2011-11-3 21:35:21
真的非常感谢大家的热心帮助。没想到这题用proc iml这么麻烦,还是proc corr方便啊,不过要求如此,咱屁民只能乖乖听话。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群