Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- data alergije;
- input lijek $ br_simptoma0 br_simptoma @@;
- promjena=br_simptoma0- br_simptoma;
- datalines;
- a 18 6 a 8 0
- a 5 2 a 14 8
- a 19 11 a 16 4
- a 10 13 a 6 1
- a 11 8 a 3 0
- d 6 0 d 6 2
- d 7 3 d 8 1
- d 18 18 d 8 8
- d 9 14 d 8 9
- d 5 1 d 15 9
- ;
- run;
- proc ttest data = alergije;
- class lijek;
- var promjena;
- run;
- /**** Rješenje 1a (p-value za jednostrani test = 0.1072/2 = 0.0536)
- The TTEST Procedure
- Variable: promjena
- Method Variances DF t Value Pr > |t|
- Pooled Equal 18 1.70 0.1072
- Satterthwaite Unequal 17.474 1.70 0.1077
- Equality of Variances
- Method Num DF Den DF F Value Pr > F
- Folded F 9 9 1.42 0.6101
- ******/
- /*** neobavezno ***/
- ods graphics on;
- proc ttest data=alergije cochran ci=equal umpu;
- class lijek;
- var promjena;
- run;
- ods graphics off;
- /*** Bootstrap uzorkovanje za testiranje hipoteze H0: mi1=mi2 (jednakost sredina 2 nezavisna uzorka) ***/
- data grupa1;
- set alergije;
- where lijek="a";
- ;
- data grupa2;
- set alergije;
- where lijek="d";
- ;
- data grupe;
- set grupa1 (in=a) grupa2;
- if a then grupa=1; else grupa=2;
- id=_N_;
- run;
- /*** Prosjeèan broj razlike broja simptoma po grupama ***/
- proc means data=grupe nway noprint;
- var promjena;
- class grupa;
- output out=out mean=mean;
- run;
- data _NULL_;
- set out;
- if grupa=1 then call symput("mean1",mean);
- else call symput("mean2",mean);
- run;
- %put mean1=&mean1 mean2=&mean2;
- /*** Centriranje (x-mean) unutar grupa ***/
- data grupa1_centrirana;
- set grupa1;
- promjena=promjena-&mean1;
- run;
- data grupa2_centrirana;
- set grupa2;
- promjena=promjena-&mean2;
- run;
- /*** Neparametarski bootstrap ***/
- %include "&path\jackboot1.sas";
- /*** GRUPA 1 ***/
- %let var=promjena;
- %let dat=grupa1_centrirana;
- %let seed=67728; *za grupu 1 (lijek="a");
- %let bsamples=1000;
- %let alph=0.10;
- %macro analyze(data=,out=);
- proc means data=&data noprint nway;
- var &var;
- output out=&out(drop=_freq_ _type_) mean=mean1 stderr=stde1;
- %bystmt;
- run;
- %mend;
- %boot(data=&dat,random=&seed, stat=mean1,samples=&bsamples )
- data boot_grupa1;
- set bootdist;
- run;
- proc means data=grupa1 noprint nway;
- var &var;
- output out=actual_grupa1(drop=_freq_ _type_) mean=mean1 stderr=stde1;
- run;
- /*** GRUPA 2 ***/
- %let var=promjena;
- %let dat=grupa2_centrirana;
- %let seed= 12648; *za grupu 2 (lijek="d");
- %let bsamples=1000;
- %let alph=0.10;
- %macro analyze(data=,out=);
- proc means data=&data noprint nway;
- var &var;
- output out=&out(drop=_freq_ _type_) mean=mean2 stderr=stde2;
- %bystmt;
- run;
- %mend;
- %boot(data=&dat,random=&seed, stat=mean2,samples=&bsamples )
- data boot_grupa2;
- set bootdist;
- run;
- proc means data=grupa2 noprint nway;
- var &var;
- output out=actual_grupa2(drop=_freq_ _type_) mean=mean2 stderr=stde2;
- run;
- data actual_Welch_t;
- merge actual_grupa1 actual_grupa2;
- Welch_t_actual=(mean1-mean2)/sqrt(stde1**2 + stde2**2);
- keep Welch_t_actual;
- run;
- data boot_Welch_t;
- merge boot_grupa1 boot_grupa2;
- by _sample_;
- if _N_=1 then set actual_Welch_t;
- Welch_t=(mean1-mean2)/sqrt(stde1**2 + stde2**2);
- prob_left =(Welch_t < -abs(Welch_t_actual));
- prob_right=(Welch_t > abs(Welch_t_actual));
- prob=sum(prob_left,prob_right);
- run;
- proc means data= boot_Welch_t mean;
- var prob_left prob_right prob;
- run;
- /*** Rješenje
- The MEANS Procedure
- Variable Mean
- --------------------------
- prob_left 0.0560000
- prob_right 0.0440000
- prob 0.1000000
- --------------------------
- *****/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement