全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3423 5
2008-08-27

data inb;
input id sire dam;
cards;
1 . .
2 . .
3 . .
4 2 1
5 2 3
;
proc inbreed covar
   mattrix;
run;
/*------------------------------------*/
proc iml;
start main;
y={7,
   10,
   6};
x={1,
   1,
   1};
a={1  0  0 .5  0,
   0  1  0 .5 .5,
   0  0  1  0 .5,
  .5 .5  0  1 .25,
   0 .5 .5 .25 1};
z={1 0 0 0 0,
   0 0 1 0 0,
   0 0 0 0 1};

lamda=1;

b=x`*x;
c=x`*z;
d=z`*x;
e=z`*z;
f=inv(a);
g=(e+(f#lamda));
h=(b||c)//(d||g);
l=x`*y;
m=z`*y;
o=(l)//(m);
p=inv(h);
q=p*o;

print b c d e f g h l m o p q;
finish main;
run;
quit;

麻烦哪位前辈帮我看看,前半个部分是用Proc inbreed得到近交系数矩阵,后半部分的a就是上半部分输出的矩阵,怎么直接调用proc inbreed的输出结果,不用自己手动输入阿?

二维码

扫码加我 拉你入群

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

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

全部回复
2008-8-27 09:54:00

data inb;
input id sire dam;
cards;
1 . .
2 . .
3 . .
4 2 1
5 2 3
;
proc inbreed covar mattrix outcov=a;/*先把矩阵输入output到一个数据集a*/
run;

data a;/**只保留a中的矩阵部分前面的说明变量剔除掉,这个我没想到其他方法,做的有点笨,希望其他高手指点*/

set a;

keep col1-col5;

run;

proc iml;
start main;

use a;/*用数据集a*/

read all into a;/*读取为矩阵a*/
y={7,
   10,
   6};
x={1,
   1,
   1};

z={1 0 0 0 0,
   0 0 1 0 0,
   0 0 0 0 1};

lamda=1;

b=x`*x;
c=x`*z;
d=z`*x;
e=z`*z;
f=inv(a);
g=(e+(f#lamda));
h=(b||c)//(d||g);
l=x`*y;
m=z`*y;
o=(l)//(m);
p=inv(h);
q=p*o;

print b c d e f g h l m o p q;
finish main;
run;
quit;

二维码

扫码加我 拉你入群

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

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

2008-8-28 16:08:00

多谢2楼,

好像代码不能执行哎!

proc inbreed里面有那个ODS有用么?看说明书好像行的。

我是菜鸟,呵呵

[此贴子已经被作者于2008-8-28 16:11:21编辑过]

二维码

扫码加我 拉你入群

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

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

2008-8-29 09:08:00

proc inbreed种没有你的说的ODS啊?

你复制粘贴的问题吧?

二维码

扫码加我 拉你入群

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

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

2008-8-29 11:19:00

找到错误了,有个分号是中文输入的。

多谢了!

二维码

扫码加我 拉你入群

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

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

2008-8-29 11:24:00

在Proc inbreed帮助文件里面有关于PROC INBREED: ODS Table Names 的介绍,这个ODS好像应该能够更简单些,我也在看。不知道能不能行。

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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