全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1763 2
2013-05-05
下面是一个关于非参数模型在以等级资料为终点的非劣效性临床试验中的应用的宏程序,按照文章中程序写好后运行不成功,提示参数传递错误,请高手指点!
%MACRO PERM_BF (DATA = , VAR = , GROUP = , MARGIN = , LOOP = 10000);
proc freq data = daten; tables & GROUP / out = ninoprint;
proc iml;
use &date; read all var {&VAR} into x; read all var {&GROUP} into group;
use n_j; read all var {count} into ni; n1 = ni[1]; n2 = ni[2]; N = n1 + n2;
perm = j(N, 1, 0); o_ranks = j(N, 1, 0); o_ranks_1 = j(n1, 1, 0);o_ranks_2 = j(n2, 1, 0);
w_ranks_1 = j(n1, 1, 0); w_ranks_2 = j(n2, 1, 0);
mean_o_ranks_1 = 0; mean_o_ranks_2 = 0;
sigma_1 = 0; sigma_2 = 0;
V_N = 0; T_0 = 0; T_perm = 0; pvalue_t = 0; pvalue_perm = 0;
o_ranks = ranktie(x);
o_ranks_1 = o_ranks [1:n1]; o_ranks_2 = o_ranks [(n1 + 1):N];
w_ranks_1 = ranktie (x[1:n1]); w_ranks_2 = ranktie (x[(n1 + 1):N]);
mean_o_ranks_1 = sum(o_ranks_1)/n1;
mean_o_ranks_2 = sum(o_ranks_2)/n2;
releff = 1/N * (mean_o_ranks_2 - mean_o_ranks_1) + 1/2;

sigma_1 = 1/(n1 - 1) * (o_ranks_1 - w_ranks_1 - mean_o_ranks_1 + (n1 + 1)/2) * * 2;
sigma_2 = 1/(n2 - 1) * (o_ranks_2 - w_ranks_2 - mean_o_ranks_2 + (n2 + 1)/2) * * 2;
V1 = sigma_1/(n2 * * 2); V2 = sigma_2/(n1 * * 2);
V_N = N * (V1/n1 + V2/n2);
if V_N = 0 then V_N = N/(2 * n1 * n2);
T_0 = sqrt(N) * (releff - 0.5 + & delta)/sqrt(V_N);
freiheitsgrad = (sigma_1/n2 + sigma_2/n1) ##2/((sigma_1/n2)##2/(n1 - 1)+ (sigma_2/n1)##2/(n2 - 1));
pvalue_t = 1 - probt(T_0, freiheitsgrad);
quit; % MEND;


附件列表
二维码

扫码加我 拉你入群

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

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

全部回复
2013-5-5 22:13:24
朋友你有sas软件吗
二维码

扫码加我 拉你入群

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

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

2013-5-6 11:37:06
仰观 发表于 2013-5-5 22:13
朋友你有sas软件吗
装了,是sas9.1,运行是用下面语句:
%PERM_BF (DATA = aa, VAR = b, GROUP = a, MARGIN = 0.1);
提示:“Apparent invocation of macro PERM_BF not resolved.”
平时很少用sas程序,宏程序还没有接触过,还请您指点!谢谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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