%macro power(number);
data a;
n=&number * 1 ;
do i=1 to 100000;
cvr=&cvr. *1;
cvt=&cvt. *1;
if cvt=. then cvt=cvr;
eswr2=log(cvr**2+1);
eswt2=log(cvt**2+1);
emse=eswt2 + eswr2/ 2 ;
/*¸öÌåÄÚ¾ù·½²îsd2·þ´Ó¹æ¶¨·Ö²¼µÄËæ»úÄ£ÄâÊý¾Ý--------------------------------------*/
sd2=emse/n*RAND('CHISQUARE', n-3)/(n-3);
sd=sqrt(sd2);
/*µã¹À¼ÆÖµpe·þ´Ó¹æ¶¨·Ö²¼µÄËæ»úÄ£ÄâÊý¾Ý-------------------------------------------*/
pe=RAND('NORMAL',log(&gmr.) , sd) ;
/*²Î±ÈÖÆ¼Á¸öÌåÄÚ¾ù·½²îSWR2=eWR2¡Árchi(nisms,
dfRR)/dfRR£¬·þ´Ó¿¨·½·Ö²¼£¬SWRΪÑù±¾¹À¼ÆÖµ£¬
¼´Ã¿Ò»¸öËæ»úÄ£ÄâÇ龳ϻòµ¥¸öÑù±¾µÄʵ¼Êȡֵ£¬eWRΪԤ¼ÆµÄSWRÕæÊµÖµ*/
swr2=(eswr2)*RAND('CHISQUARE', n-3)/(n-3);
swr=round(sqrt(swr2),0.001);
sw0=0.25;
lvema=log(0.8)*swr/sw0;
uvema=log(1.25)*swr/sw0;
l_ema=exp(lvema);
u_ema=exp(uvema);
l0=log(0.8);
u0=log(1.25);
alpha=0.05;
lL=pe-tinv( 1-alpha, n -3)*sd;
uL=pe+tinv( 1-alpha, n -3)*sd;
*¼ÆËã²Î±ÈÖÆ¼ÁУÕýµÄƽ¾ùÉúÎïµÈЧÐÔµÄÅж¨½çÖµcritbound----------------------------------------;
em=pe**2-sd2;
cm=(abs(pe)+tinv( 1-alpha, n -3)*sd)**2;
theta=log(1.25)/0.25;
es=theta**2*swr2;
cs=es*(n-3)/cinv( 1-alpha, n -3);
bound=em-es+sqrt((cm-em)**2+(cs-es)**2);
*ÅжÏÊÇ·ñµÈЧ²¢¼ÆËãpower-------------------------------------------------------------------;
if swr< 0.294 then do ;
if lL>l0 and uL<u0 THEN RESULT=1;
ELSE RESULT=0;
END;
if swr>= 0.294 then do ;
if (bound<=0) AND ( PE>l0 and PE<u0) THEN RESULT=1;
ELSE RESULT=0;
END;
output;
end;
RUN;
proc sql noprint;
select avg(result) into:powera from a;
quit;
data b;
set a;
if pe>log(0.8) and pe<log(1.25) then meanout=0;
if pe<=log(0.8) or pe>=log(1.25) then meanout=1;
if swr2>eswr2 then spilled=1;
if swr2<=eswr2 then spilled=0;
if swr>=0.294 then switch=0;
if swr<0.294 then switch=1;
run;
proc sql noprint;
select avg(meanout) into:meanouta from b;
select avg(spilled) into:spilleda from b;
select avg(switch) into:switcha from b;
quit;
%mend ;
/**cvt£ºÊÜÊÔÖÆ¼Á¸öÌåÄÚ±äÒì----------------------------------------------------------------*/
/**cvr£º²Î±ÈÖÆ¼Á¸öÌåÄÚ±äÒì----------------------------------------------------------------*/
/**gmr£ºÊÜÊÔÖÆ¼ÁÓë²Î±ÈÖÆ¼ÁÖ÷Òªpk²ÎÊý¼¸ºÎ¾ùÖµ±ÈÖµ¹À¼ÆÖµ-------------------------------------*/
/**ptar£ºÄ¿±êͳ¼ÆÐ§ÄÜ--------------------------------------------------------------------*/
%macro samplen(cvt= ,cvr= ,gmr=,ptar=);
%let powera =0 ;
%let number=6;
%power(&number);
%do %until ( &powera. >= &ptar. ) ;
%power(&number);
%let number=%eval(3 + &number.);
%end;
%let number=%eval( &number. -3);
%put &number. ;
%mend;
%macro samplenduo ;
/*proc datasets lib=work kill memtype=data nolist;*/
/*quit; */
%global powera meanouta spilleda number switcha;
data sum;
CALL MISSING(cvt ,cvr,gmr,ptar,powera,meanouta,spilleda,switcha);
run;
%do cvt1=20 %to 100 %by 2;
%do gmr1=85 %to 100 %by 5;
data null;
cvt=input("&cvt1" ,8.)/100;
gmr= input("&gmr1" ,8.)/100;
output;
call symputx("cvr",cvt);
call symputx("cvt",cvt);
call symputx("gmr",gmr);
run;
%samplen(cvt=&cvt ,cvr=&cvr,gmr=&gmr,ptar=0.8);
data e;
cvt=input("&cvt
",best.) ;cvr=input("&cvr" ,best.);gmr=input( "&gmr",best.);
ptar=0.8;
powera=input( "&powera" ,best.);
meanouta=input( "&meanouta" ,best.); spilleda=input( "&spilleda" ,best.);
number=input( "&number" ,best.); switcha=input( "&switcha" ,best.);
output;
run;
data sum;
set sum e;
if cvt=. then delete;
label cvr="CV" GMR="GMR" MEANOUTA='GMRÂäÔÚ80-125%ÍâµÄ¸ÅÂÊ'
spilleda="µÈЧ½çÖµ´óÓÚÔ¤ÆÚµÄ¸ÅÂÊ" ;
LABEL switcha="SWRСÓÚ0.294µÄ¸ÅÂÊ";
run;
%end;
%end;
%mend;
%put &cvt &cvr &gmr &meanouta &switcha;
%samplenduo;
/**/
dm "log" clear;
/*%samplen(cvt=0.32 ,cvr=0.32 ,gmr=1,ptar=0.8);*/
/*%samplen(cvt=0.42,cvr=0.42 ,gmr=0.9,ptar=0.8);*/
/*%samplen(cvt=0.54 ,cvr=0.54 ,gmr=0.9,ptar=0.8);*/
/*%samplen(cvt=0.66 ,cvr=0.66 ,gmr=0.9,ptar=0.8);*/
/*%samplen(cvt=0.72 ,cvr=0.72 ,gmr=0.9,ptar=0.8);*/
/**/
/*%samplen(cvt=0.3 ,cvr=0.3 ,gmr=0.95,ptar=0.8);*/
/*%samplen(cvt=0.42,cvr=0.42 ,gmr=0.95,ptar=0.8);*/
/*%samplen(cvt=0.54 ,cvr=0.54 ,gmr=0.95,ptar=0.8);*/
/*%samplen(cvt=0.66 ,cvr=0.66 ,gmr=0.95,ptar=0.8);*/
/*%samplen(cvt=0.72 ,cvr=0.72 ,gmr=0.95,ptar=0.8);*/
/**/
/*%samplen(cvt=0.3 ,cvr=0.3 ,gmr=1,ptar=0.8);*/
/*%samplen(cvt=0.42,cvr=0.42 ,gmr=1,ptar=0.8);*/
/*%samplen(cvt=0.54 ,cvr=0.54 ,gmr=1,ptar=0.8);*/
/*%samplen(cvt=0.66 ,cvr=0.66 ,gmr=1,ptar=0.8);*/
/*%samplen(cvt=0.72 ,cvr=0.72 ,gmr=1,ptar=0.8);*/
%put &powera &meanouta &spilleda;
%modstyle(name=markstyle, parent=statistical, type=CLM ,
markers=circlefilled trianglefilled star plus circle square
diamond starfilled diamondfilled)
ods listing style=markstyle ;
ods graphics on / width=14cm height=10cm border=no;
proc sgplot
data=sum;
scatter y=meanouta x=cvr / FILLEDOUTLINEDMARKERS group=gmr
errorbarattrs=(thickness=1.95 );
series y=meanouta x=cvr /LINEATTRS=(thickness=2) group=gmr
run;
;
/*proc sgplot
data=sum;*/
/*
scatter y=spilleda x=cvr / FILLEDOUTLINEDMARKERS group=gmr */
/*
errorbarattrs=(thickness=1.95 );
*/
/*
series y=spilleda x=cvr /LINEATTRS=(thickness=2) group=gmr ;*/
/*yAXIS min=0 ;
*/
/*xAXIS min=0.3 ;
*/
/* */
/*run; */
ods listing close;
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )