Code covered by the BSD License  

Highlights from
NonParametric Statistical Toolbox

from NonParametric Statistical Toolbox by Erik Erhardt
These are MatLab functions for performing Exact and approximate NonParametric statistics on small da

[data,k]=npar_wilcoxsr(data,k)
function [data,k]=npar_wilcoxsr(data,k)
% npar_wilcoxsr called by npar_main performs nonparametric wilcoxon signed-rank test
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Nonparametric Statistical Tests in Matlab
%
% Author:
%   Erik B. Erhardt                                             erike@wpi.edu
%   Statistics Graduate Student and Teaching Assistant
%   Dept. of Mathematical Sciences                             (508) 831-5546
%   Worcester Polytechnic Institute                                    SH 204
%   100 Institute Rd.
%   Worcester, MA  01609-2280
%
% Date: 2/6/2003 1:30PM
%
% Program: npar_wilcoxsr.m
% Includes:
%   Wilcoxon signed-rank (convert to ranks then use npar_pitman.m)
% Called by:
%   npar_main.m
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Wilcox signed-rank section BEGIN
datasign=zeros(k,2);
for i=1:k;
 % decompose data into magnitudes (,1) and signs (,2)
 datasign(i,1)=abs(data(i));
 datasign(i,2)=sign(data(i));
end;

datasign=sortrows(datasign,1);   % sort datasign by magnitude, keeping associated sign in (:,2)

%%% remove 0 values BEGIN
  % switch for removing 0 values before or after the assignment of ranks (1=before,0=after)
remove0before=0;

% this removes the 0 values before the assigning of ranks
datasign0idx = max(find(datasign(:,1)==0));
if datasign0idx >=1;
 datasigntemp=zeros(k-datasign0idx,2);  %temporary datasign vector for removing 0 values
 ii=0;
 for j=datasign0idx+1:k;
  ii=ii+1;
  datasigntemp(ii,:)=datasign(j,:);
 end;
 k=ii;                           % new value of k after 0s are removed
 datasign=zeros(k,2);            % reinitialize datasign and update from datasigntemp with no 0s
 datasign=datasigntemp;
end;
%%% remove 0 values END

[dataindx,xx]=tiedrank(datasign(:,1));          % obtain ranks (works for ties)
dataindx=dataindx';

%%% remove 0 values BEGIN
if datasign0idx >=1;
 if remove0before == 0;
  % this removes the 0 values after the assigning of ranks
  % by increasing the ranks by the number of 0s in the data
  datasign0idxl=length(datasign0idx);
  datasign0idx=datasign0idx*ones(datasign0idxl,1);
  dataindx=dataindx+datasign0idx;
 end;
end;
%%% remove 0 values END

wilcoxsr=zeros(k,1);
for i=1:k;
 wilcoxsr(i)=dataindx(i,1)*datasign(i,2);
end;
data=wilcoxsr;
%%% Wilcox signed-rank section END
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Contact us at files@mathworks.com