楼主: pwh791057072
4024 4

[有偿编程] SAS软件分析数据的交互作用 [推广有奖]

  • 0关注
  • 0粉丝

小学生

50%

还不是VIP/贵宾

-

威望
0
论坛币
14 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
96 点
帖子
4
精华
0
在线时间
7 小时
注册时间
2020-5-1
最后登录
2022-3-8

6论坛币
数据是1:2匹配的病例对照数据,已经运用了条件Logistic回归分析了因变量(fpg3)和两个自变量(WHR1和BMI2)的关系,最后想分析它们的交互作用,我在找到了一篇名为《实现logistic与Cox回归相乘相加交互作用的临床实践宏程序》[网址:http://www.doc88.com/p-7087671227853.html],可是我对于宏程序方面还是小白一个,不是特别明白,老师催着我赶快把数据分析完,我只能通过模仿的方式编写了一个宏程序,但感觉好像有挺多问题的,想请教一下大神,看看哪里有什么错误,感激不尽。
因变量(fpg3)和和两个自变量(WHR1和BMI2)均为二分类变量,id1是对子编号。
其中变量time的得来如下:
data pd1;
set pd;
if FPG3=1 then time=2-FPG3;
if FPG3=0 then time=2-FPG3;
run;
  1. %macro additive2dum_LOGISTIC (dat, a, b, statues, cov1, cov2, cov3, cov4, cov5, cov6, cov7, cov8);
  2. Data p1;
  3. Set &dat;
  4.    xx=&a*&b;
  5. proc phreg outset=est data=p1 covout;
  6. class &a(ref=first) &b(ref=first)/pram=ref;
  7. model time*&statues(0)=&a &b xx &cov1 &cov2 &cov3 &cov4 &cov5 &cov6 &cov7/risklimits COVB include=3 selection=stepwise ties=discrete; BETA3=t(BETAP[,2:4]); V3=COV[1:3,2:4];
  8. strata id1;
  9. Constrast “OR10” &a 1 &b 0 xx 0/estimate=exp;
  10. Constrast “OR01” &a 0 &b 1 xx 0/estimate=exp;
  11. Constrast “OR11” &a 1 &b 1 xx 1/estimate=exp;
  12. Run;

  13. Proc export data=estoutfile= “D:\&b” DBMS=excel replace;
  14. Run;
  15. %mend additive2dum_LOGISTIC;

  16. %let ICR_LOGISTIC=%str(
  17.      Proc print data=est;
  18.      Run;
  19.      Data parmscovb;
  20.         Set est;
  21.         Drop _Inlike_;
  22.         If_type_ =‘PARMS’ then output parms; elseif_type_=’COV’ then output covb;
  23. run;
  24. proc IML;
  25. Use parms; Read ALL var _all_ INTO BETAP;
  26. Close parms;
  27. print betap;
  28. use covb; read all var _all_ into cov;
  29. close covb;
  30. print cov;
  31. BETA3=t(BETAP[,2:4]); V3=COV[2:4,2:4];
  32. Print BETA3 V3;
  33. C=BETA3[1,]+BETA3[2,]+BETA3[3,];
  34. D=EXP(C)-1;
  35. I=EXP(BETA3[1,])+EXP(BETA3[2,])-1;
  36. F=EXP(BETA3[1,])+EXP(BETA3[2,])-2;
  37. H=EXP(C)/D;
  38. ICR=EXP(C)-EXP(BETA3[1,])-EXP(BETA3[2,])+1;
  39. AP=ICR/EXP(C);
  40. SI=D/F;
  41. A=J(3,1,0);
  42. A[1,]=EXP(C)-EXP(BETA3[1,]);
  43. A[2,]=EXP(C)-EXP(BETA3[2,]);
  44.      A[3,]=EXP(C);
  45.      VARICR=T(A)*V3*A;
  46.      Z=ICR/SQRT(VARICR);
  47.      PVAL=2*(1-PROBNORM(ABS(Z)));
  48.      L_ICR=ICR-1.96*SQRT(VARICR);
  49.      H_ICR=ICR+1.96*SQRT(VARICR);
  50.      B=J(3,1,0);
  51.      B[1,]=(EXP(BETA3[2,]-1))/EXP(C);
  52.      B[2,]=(EXP(BETA3[1,]-1))/EXP(C);
  53.      B[3,]=I/exp(C);
  54.      VARAP=t(B)*V3*B;
  55.      L_AP=AP-1.96*SQRT(VARAP);
  56.      H_AP=AP+1.96*SQRT(VARAP);
  57.      S=J(3,1,0);
  58.      S[1,]=H-EXP(BETA3[1,])/F;
  59.      S[2,]=H-EXP(BETA3[2,])F;
  60.      S[3,]=H;
  61.      VRS=t(S)*V3*S;
  62.      L_LSI=log(SI)-1.96*SQRT(VARS);
  63.      H_LSI=log(SI)+1.96*SQRT(VARS);
  64.      L_SI=exp(L_LSI);
  65.      H_SI=exp(H_LSI);
  66.      Print ICR L_ICR H_ICR AP L_AP H_AP SI L_SI H_SI Z PVAL;
  67. RUN;
  68. QUIT;
  69. Option mcompilenote=all;

  70. %macro addit_sign(dat, a, b, y, beta0, beta1, beta2,beta3);
  71. Proc nlmixed data=&dat DF=10000;
  72.   PAEMS b0=&beta0 b1=&beta2 b3=&beta3;
  73.   Odds=exp(b0+b1*&a+b2*&b+b3*&a*&b);
  74.   pi=odds/(1+odds);
  75.   model &y ~ Binary(pi);
  76.   estimate ‘ICR=ICR using OR’ exp(b1+b2+b3)-exp(b1)-exp(b2)+1;
  77.   estimate ‘AP using OR’ (exp(b1+b2+b3)-exp(b1)-exp(b2)+1)/(exp(b1+b2+b3));
  78.   estimate ‘SI=ICR using OR’ (exp(b1+b2+b3)-1)/(exp(b1)+exp(b2)-2);
  79. run;
  80. %mend addit_sign;
  81. Option mcompilenote=all;

  82. %macro addit_sign1(dat, a, b, y, beta0, beta1, beta2, WaldICR);
  83. Proc NLP data=%dat VARDEF=N technique=dbldogpcov;
  84.    PARMS b0=&beta0, b1=&beta1, b2=&bata2, ICR=&WaldICR;
  85.    b_interaction=log((ICR+exp(b1)+exp(b2)-1)/(exp(b1)*exp(b2)));
  86. if &y=1 then p=exp(b0+(b1*&a)+(b2*&b)+(b_ interaction*&a*&b))/(1+exp(b0+(b1*&a)+(b2*&b)+(b_ interaction*&a*&b)));
  87.        else p=1/(1+exp(b0+(b1*&a)+(b2*&b)+(b_ interaction*&a*&b)));
  88.        loglike=log(p);
  89.        max loglike;
  90.        PROFILE ICR/ALPHA=0.05;
  91.    RUN;
  92. %mend;
复制代码


关键词:SAS 交互作用
沙发
pwh791057072 发表于 2020-5-1 16:10:29 |只看作者 |坛友微信交流群
最后的调用宏程序是:
  1. %additive2dum_LOGISTIC(pd1, BMI2, whr1, FPG3, culture1, smoke, gaoya1, diya1, LDL_C1, TG1, HDL_C1, TC1);
  2.    &ICR_LOGISTIC;
  3. %addit_sign(pd1, BMI2, whr1, FPG3, -0.1882, 0.3241, 0.2377, 0.3312);
  4. %addit_sign1(pd1, BMI2, whr1, FPG3, -0.1882, 0.3241, 0.2377, 0.7917);
复制代码

使用道具

藤椅
涡朗宁 学生认证  发表于 2020-7-29 08:44:50 |只看作者 |坛友微信交流群
请问问题解决了,我也想学一下sas交互作用分析。

使用道具

板凳
1998s 发表于 2021-2-20 23:09:03 |只看作者 |坛友微信交流群
您好,请问问题解决了吗?可以分享下程序吗

使用道具

报纸
1998s 发表于 2021-2-21 23:06:02 |只看作者 |坛友微信交流群
为什么要用宏程序呀?logistic和cox 不可以做吗?

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 07:52