p = anderson_darling_cdf(A,n) Return the CDF for the given Anderson-Darling coefficient A computed from n values sampled from a distribution. For a vector of random variables x of length n, compute the CDF of the values from the distribution from which they are drawn. You can uses these values to compute A as follows: A = -n - sum( (2*i-1) .* (log(x) + log(1-x(n:-1:1,:))) )/n; From the value A, anderson_darling_cdf returns the probability that A could be returned from a set of samples. The algorithm given in [1] claims to be an approximation for the Anderson-Darling CDF accurate to 6 decimal points. Demonstrate using: n=300; reps=10000; z=randn(n,reps); x=sort((1+erf(z/sqrt(2)))/2); i = [1:n]'*ones(1,size(x,2)); A = -n - sum( (2*i-1) .* (log(x) + log(1-x(n:-1:1,:))) )/n; p=anderson_darling_cdf(A,n); hist(100*p,[1:100]-0.5); You will see that the histogram is basically flat, which is to say that the probabilities returned by the Anderson-Darling CDF are distributed uniformly. You can easily determine the extreme values of p: [junk,idx]=sort(p); The histograms of various p aren't very informative: histfit(z(:,idx(1)),linspace(-3,3,15)); histfit(z(:,idx(end/2)),linspace(-3,3,15)); histfit(z(:,idx(end)),linspace(-3,3,15)); More telling is the qqplot: qqplot(z(:,idx(1))); hold on; plot([-3,3],[-3,3],';;'); hold off; qqplot(z(:,idx(end/2))); hold on; plot([-3,3],[-3,3],';;'); hold off; qqplot(z(:,idx(end))); hold on; plot([-3,3],[-3,3],';;'); hold off; Try a similarly analysis for z uniform: z=rand(n,reps); x=sort(z); and for z exponential: z=rande(n,reps); x=sort(1-exp(-z)); [1] Marsaglia, G; Marsaglia JCW; (2004) "Evaluating the Anderson Darling distribution", Journal of Statistical Software, 9(2).