// Chi-square, non-integer df twoway (function y=chi2den(3,x), range(0 4)) /// (function y=chi2den(3.5,x), range(0 4)) /// (function y=chi2den(4,x), range(0 4)), title("Chisquare, non-integer") /// legend(order(1 "df=3" 2 "df=3.5" 3 "df=4")) postfile kwmc rep d F dfm dfr X dfx using kwmcchi.dta, replace postfile kwperm rep d p3 p4 using kwpermchi.dta, replace quietly forvalues d=0(0.1)1 { noisily display "difference " `d' forvalues i=1/1000 { *noisily display "diff " `d' " rep " `i' clear set obs 60 // group size = 20 generate group = mod(_n, 3) generate y = rchi2(3+group*`d') anova y group kwallis y, by(group) post kwmc (`i') (`d') (e(F)) (e(df_m)) (e(df_r)) (r(chi2_adj)) (r(df)) permute group T=e(F), right reps(100) nodots: anova y group matrix A = r(p) scalar p3 = A[1,1] permute group T= r(chi2_adj), right reps(100) nodots nowarn: kwallis y, by(group) matrix A = r(p) scalar p4 = A[1,1] post kwperm (`i') (`d') (p3) (p4) } } postclose kwmc postclose kwperm use kwpermchi.dta, clear sort rep d save kwpermchi.dta, replace use kwmcchi.dta, clear sort rep d merge 1:1 rep d using kwpermchi.dta generate sig1 = Ftail(dfm, dfr, F)<0.05 generate sig2 = chi2tail(dfx, X)<0.05 generate sig3 = p3<0.05 generate sig4 = p4<0.05 tabulate d sig1, row tabulate d sig2, row tabulate sig1 sig2 collapse (mean) sig1-sig4, by(d) label variable sig1 "Anova" label variable sig2 "Kruskal-Wallis" label variable sig3 "permuted F" label variable sig4 "permuted KW" save kwlognormtable.dta, replace line sig1 sig2 sig3 sig4 d, title("Chisquare") ytitle("Power") /// xtitle("group differences, d")