/*
지금과 같은 경우라면... 데이터셋을 조건에 따라 따로따로 생성할 경우 다소 복잡해질 것 같네요.
그냥 구분변수를 삽입하여 모든 조건의 데이터를 하나의 데이터셋에 만들어 내고,
뒤에서 분석할 때, 구분변수를 해당 프로시져의 by에 주면 모든 절차를 한방에 처리할 수 있습니다.
다음을 참조하세요..
*/
* 샘플사이즈 정보;
data n;
input n1 n2 @@;
cards;
5 5 5 30 10 10 10 30 20 20 20 30 30 30
;
run;
* 샘플 모평균 정보;
data m;
input m1 m2 @@;
cards;
50 50 50 60 50 70
;
run;
* 모의데이터 생성을 위한 파라메터 정보 결합;
proc sql;create table para_info as select n1, n2, m1, m2 from n,m;quit;
* 모의데이터 생성;
data simu;
id+1;
set para_info;
s=10; * 표준편차;
do re = 1 to 200; * 반복=200회;
do i=1 to n1;
c=1;
x = max(min(m1 + s * rannor(5556571), 100), 0);
y = min(ranexp(5556572) * m1, 100);
z = (m1 - s * sqrt(3)) + 2 * s * sqrt(3) * ranuni(5556573);
output;
end;
do i=1 to n2;
c=2;
x = max(min(m2 + s * rannor(5556574), 100), 0);
y = min(ranexp(5556575) * m2, 100);
z = (m2 - s * sqrt(3)) + 2 * s * sqrt(3) * ranuni(5556576);
output;
end;
end;
keep id n1 m1 n2 m2 re c x y z;
* id : 표본 ID
n1 : 표본1 size, n2 : 표본2 size
m1 : 표본1 모평균, m2 : 표본2 모평균
re : 반복 serial number
c : class variable
x : 정규분포 random var
y : exponential분포 random var
z : uniform분포 random var
;
run;
* t-test;
ods output Statistics=BasicStat TTests=T_test_Result Equality=EquiVar_test;
ods listing close;
proc ttest data=simu;
by id n1 n2 m1 m2 re;
class c;
var x y z;
run;
ods listing;
* Wilcoxon test;
proc npar1way data=simu wilcoxon noprint;
by id n1 n2 m1 m2 re;
class c;
var x y z;
output out=Wil_test_Result WILCOXON;
run;
첫댓글 오늘도 많은 도움을 주시네요. 감사합니다. ^^