楼主: playmore
4938 7

请问如何转换相关系数矩阵为列表型 [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2013-7-25 13:39:38 |AI写论文
100论坛币
运行如下所示的代码:

data have;
input x y z;
datalines;
1 2 3
-2 5 9
4 1 9
;
run;

proc corr data=have outp=want noprint;
var x y z;
run;

可以得到类型为(Pearson Correlation Matrix)的数据集,为矩阵形式的
我想要得到如下形式的表:

NAME_1 NAME_2 CORR
x            x            1
x            y            -0.9607
x            z             0
...

这样我就可以用排序之类的方法研究这些相关系数了

不知道有什么好的办法,我现在用IML暴力遍历,觉得太折腾了
版上大牛请指教




最佳答案

boe 查看完整内容

不知道对不对,貌似楼主考虑复杂了
关键词:相关系数矩阵 相关系数 correlation relation pearson 如何 皮尔逊相关系数 偏相关系数 pearson相关系数 相关系数检验 spearman相关系数 复相关系数 相关系数矩阵

本帖被以下文库推荐

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
boe 发表于 2013-7-25 13:39:39
不知道对不对,貌似楼主考虑复杂了
  1. data xo;
  2.     set want(where=(_TYPE_="CORR") rename=(_NAME_=NAME1));
  3.         drop _TYPE_;
  4. run;
  5. proc transpose data = xo out = xiii(rename=(_NAME_=NAME2 COL1=CORR));
  6.     by NAME1;
  7.         var x--z;
  8. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
playmore + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Gorgeous girl , I love !

藤椅
boe 发表于 2013-7-25 13:52:31
不太理解意思,感觉像从want里筛选观测和变量
Gorgeous girl , I love !

板凳
playmore 发表于 2013-7-25 14:35:50
boe 发表于 2013-7-25 13:52
不太理解意思,感觉像从want里筛选观测和变量
再说直观点吧
want表是这样的

_TYPE_             _NAME_        x                             y                           z
MEAN                                     1                            2.666666667         7
STD                                       3                            2.081665999         3.464101615
N                                           3                             3                           3
CORR              x                    1                            -0.960768923        0
CORR              y                    -0.960768923        1                            0.277350098
CORR              z                     0                             0.277350098        1

即为一个对角矩阵,我要的表是两两取变量,然后把这两个变量之间的相关系数输出来,如下所示

NAME_1 NAME_2 CORR
x            x            1
x            y            -0.9607
x            z             0
...

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
ziyenano 发表于 2013-7-25 15:16:25
data want1;
set want;
length _name2_ $2;
where _type_='CORR';
array a(*) x--z;
do i=1 to dim(a);
_name2_=vname(a(i));
corr=a(i);
output;
end;
keep _name_ _name2_ corr;
run;
已有 2 人评分学术水平 热心指数 信用等级 收起 理由
playmore + 1 + 1 + 1 精彩帖子
boe + 1 + 1 + 1 array转置!!!

总评分: 学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

地板
playmore 发表于 2013-7-25 16:05:32
boe 发表于 2013-7-25 13:39
不知道对不对,貌似楼主考虑复杂了
嗯,这个proc transpose真是挺好用的
之前真是想复杂了,多谢了
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

7
playmore 发表于 2013-7-25 16:07:49
ziyenano 发表于 2013-7-25 15:16
data want1;
set want;
length _name2_ $2;
你的方法也很好,多谢
另外问一下这个
array a(*) x--z;
这个两个减号是指从以英文字母开头并结尾的所有变量吗?

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

8
ziyenano 发表于 2013-7-25 16:17:47
playmore 发表于 2013-7-25 16:07
你的方法也很好,多谢
另外问一下这个
array a(*) x--z;
表示 表里面 x 与 z 变量之间的所有变量

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-9 07:28