permutation 随机置换检验的Matlab程序

假定a为某指标在10个样本中的值,5个一组,看以两组均值的差为例(统计量),随机置换检验程序

example: a: 230 -1350 -1580 -400 -760 970 110 -50 -190 -200

v1=sum(a(1:5))/5;

v2=sum(a(6:10))/5;

T=abs(v1-v2);

x=perms(a); %矩阵a的全排列(随机全排列)

v11=(x(:,1)+x(:,2)+x(:,3)+x(:,4)+x(:,5))/5;

v22=(x(:,6)+x(:,7)+x(:,8)+x(:,9)+x(:,10))/5;

TT=abs(v11-v22);

[m,n]=size(TT);

distribution=tabulate(TT); %产生频率分布

hist(X) % 产生直方图

num=0; %大于原始差值的个数

for i=1:m

if TT(i,1)>T

num=num+1;

end

end

p=num/m

key words: permutation tests, codes ,matlab, 代码,程序

from: http://www.biostatistic.net/thread-41-1-1.html