Advertisement
Guest User

Untitled

a guest
Jun 17th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SAS 5.52 KB | None | 0 0
  1.  
  2.  
  3. data alergije;
  4.  input lijek $ br_simptoma0 br_simptoma @@;
  5.  promjena=br_simptoma0- br_simptoma;
  6.  datalines;
  7. a 18 6 a 8 0
  8. a 5 2 a 14 8
  9. a 19 11 a 16 4
  10. a 10 13 a 6 1
  11. a 11 8 a 3 0
  12. d 6 0 d 6 2
  13. d 7 3 d 8 1
  14. d 18 18 d 8 8
  15. d 9 14 d 8 9
  16. d 5 1 d 15 9
  17. ;
  18. run;
  19.  
  20.  
  21.  
  22. proc ttest data = alergije;
  23.     class lijek;
  24.     var promjena;
  25.  
  26. run;
  27.  
  28. /**** Rješenje 1a (p-value za jednostrani test = 0.1072/2 = 0.0536)
  29.  
  30.                             The TTEST Procedure
  31.  
  32.                             Variable:  promjena
  33.  
  34.         Method           Variances        DF    t Value    Pr > |t|
  35.  
  36.         Pooled           Equal            18       1.70      0.1072
  37.         Satterthwaite    Unequal      17.474       1.70      0.1077
  38.  
  39.                            Equality of Variances
  40.  
  41.              Method      Num DF    Den DF    F Value    Pr > F
  42.  
  43.              Folded F         9         9       1.42    0.6101
  44.  
  45. ******/
  46.  
  47. /*** neobavezno ***/
  48.    ods graphics on;
  49.    
  50.    proc ttest data=alergije cochran ci=equal umpu;
  51.       class lijek;
  52.       var promjena;
  53.    run;
  54.    
  55.    ods graphics off;
  56.  
  57.  
  58.    
  59. /*** Bootstrap uzorkovanje za testiranje hipoteze H0: mi1=mi2 (jednakost sredina 2 nezavisna uzorka) ***/
  60.  
  61. data grupa1;
  62.   set alergije;
  63.   where lijek="a";
  64.   ;
  65. data grupa2;
  66.   set alergije;
  67.   where lijek="d";
  68.   ;
  69. data grupe;
  70.  set grupa1 (in=a) grupa2;
  71.  if a then grupa=1; else grupa=2;
  72.  id=_N_;
  73.  run;
  74.  
  75. /*** Prosjeèan broj razlike broja simptoma po grupama ***/
  76.  
  77.  proc means data=grupe nway noprint;
  78.   var promjena;
  79.   class grupa;
  80.   output out=out mean=mean;
  81.  run;
  82.  
  83.  data _NULL_;
  84.   set out;
  85.   if grupa=1 then call symput("mean1",mean);
  86.   else            call symput("mean2",mean);
  87.   run;
  88.  
  89.   %put mean1=&mean1 mean2=&mean2;
  90.  
  91. /*** Centriranje (x-mean) unutar grupa ***/
  92.  
  93.   data grupa1_centrirana;
  94.    set grupa1;
  95.    promjena=promjena-&mean1;
  96.    run;
  97.   data grupa2_centrirana;
  98.    set grupa2;
  99.    promjena=promjena-&mean2;
  100.    run;
  101.  
  102. /*** Neparametarski bootstrap ***/
  103.  
  104. %include "&path\jackboot1.sas";                                                                                                              
  105.  
  106. /*** GRUPA 1 ***/
  107.  
  108. %let var=promjena;
  109. %let dat=grupa1_centrirana;
  110. %let seed=67728;  *za grupu 1 (lijek="a");
  111.  
  112. %let bsamples=1000;
  113. %let alph=0.10;
  114.  
  115.  
  116. %macro analyze(data=,out=);                                                                                                                  
  117. proc means data=&data noprint  nway;                                                                                
  118.    var &var;                                                                                                                          
  119.    output out=&out(drop=_freq_ _type_) mean=mean1 stderr=stde1;
  120.  
  121.    %bystmt;      
  122.  run;    
  123.  %mend;                                                                                                                                    
  124.  
  125.  %boot(data=&dat,random=&seed, stat=mean1,samples=&bsamples )      
  126.  
  127.  
  128. data boot_grupa1;
  129.  set bootdist;
  130.  run;
  131.  
  132. proc means data=grupa1 noprint  nway;                                                                                
  133.    var &var;                                                                                                                          
  134.    output out=actual_grupa1(drop=_freq_ _type_) mean=mean1 stderr=stde1;
  135.  
  136.  run;    
  137.  
  138.  
  139. /*** GRUPA 2 ***/
  140.  
  141. %let var=promjena;
  142. %let dat=grupa2_centrirana;
  143. %let seed= 12648; *za grupu 2 (lijek="d");
  144. %let bsamples=1000;
  145. %let alph=0.10;
  146.  
  147.  
  148.  
  149. %macro analyze(data=,out=);                                                                                                                  
  150. proc means data=&data noprint  nway;                                                                                
  151.    var &var;                                                                                                                          
  152.    output out=&out(drop=_freq_ _type_) mean=mean2 stderr=stde2;
  153.  
  154.    %bystmt;      
  155.  run;    
  156.  %mend;                                                                                                                                    
  157.  
  158.  %boot(data=&dat,random=&seed, stat=mean2,samples=&bsamples )      
  159.  
  160.  
  161. data boot_grupa2;
  162.  set bootdist;
  163.  run;
  164.  
  165.  
  166.  
  167. proc means data=grupa2 noprint  nway;                                                                                
  168.    var &var;                                                                                                                          
  169.    output out=actual_grupa2(drop=_freq_ _type_) mean=mean2 stderr=stde2;
  170.  
  171.  run;    
  172.  
  173. data actual_Welch_t;
  174.   merge actual_grupa1 actual_grupa2;
  175.   Welch_t_actual=(mean1-mean2)/sqrt(stde1**2 + stde2**2);
  176.   keep Welch_t_actual;
  177.   run;
  178.  
  179.  
  180. data boot_Welch_t;
  181.    merge  boot_grupa1 boot_grupa2;
  182.    by _sample_;
  183.    if _N_=1 then set actual_Welch_t;
  184.    Welch_t=(mean1-mean2)/sqrt(stde1**2 + stde2**2);
  185.  
  186.    prob_left =(Welch_t < -abs(Welch_t_actual));
  187.    prob_right=(Welch_t > abs(Welch_t_actual));
  188.  
  189.    prob=sum(prob_left,prob_right);
  190.    run;
  191.  
  192.    proc means data= boot_Welch_t mean;
  193.     var prob_left prob_right prob;
  194.     run;
  195.  
  196.  
  197.     /*** Rješenje
  198.  
  199.                                 The MEANS Procedure
  200.  
  201.                         Variable              Mean
  202.                         --------------------------
  203.                         prob_left        0.0560000
  204.                         prob_right       0.0440000
  205.                         prob             0.1000000
  206.                         --------------------------
  207.  
  208.  
  209. *****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement