置换检验代码, matlab codes for permutation tests

Matlab 排列组合代码

COMBNTNS  All possible combinations of a set of values

   c = COMBNTNS(choicevec,choose) returns all combinations of the values of the input choice vector.

 

PERMS  All possible permutations.
   PERMS(1:N), or PERMS(V) where V is a vector of length N, creates a  matrix with N! rows and N columns containing all possible  permutations of the N elements.

 

 

%=================================
% Author:
%         http://emanlee.cnblogs.com
% Date: 2011/6/28
% Function: 置换检验, matlab codes for permutation tests
%=================================
%
%                Control           Drug
% Expression     9 12 14 17        18 21 23 26
% Average        13                22
%
% The difference in averages is 22-13=9.
%=================================

a=[9  12  14  17   18  21  23  26]
Mcontrol = mean(a(1:4));
Mdrug = mean(a(5:8));
SumA = sum(a);
TS = Mdrug-Mcontrol;   %计算检验统计量
Rearranges = combntns(a,4);   %组合,重排,本例有70行
MeanControls = sum(Rearranges,2)/4;   %重排后Control组的样本均值,本例有70行
MeanDrugs = (SumA-sum(Rearranges,2))/4;   %重排后Drug组的样本均值,本例有70行
PermutationValues = MeanDrugs - MeanControls;   %置换值,本例有70行
[m,n]=size(PermutationValues);
hist(PermutationValues )    % 产生直方图

GreaterNumbers=0;    %计算超过检验统计量的置换值的个数
for i=1:m
    if PermutationValues(i,1)>=TS
        GreaterNumbers=GreaterNumbers+1;
    end
end;

PValue=GreaterNumbers/m; %计算P值

%=================================

 

 

 

 

 

 

 

 

 

 

 

 

%=================================

 

%=================================

posted @ 2011-06-28 17:41  emanlee  阅读(3550)  评论(0编辑  收藏  举报