diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_dreval.m @ 0:e9a9cd732c1e tip

first hg version after svn
author wolffd
date Tue, 10 Feb 2015 15:05:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolboxes/MIRtoolbox1.3.2/somtoolbox/som_dreval.m	Tue Feb 10 15:05:51 2015 +0000
@@ -0,0 +1,88 @@
+function [sig,cm,truex,truey] = som_dreval(sR,D,sigmea,inds1,inds2,andor)
+
+% SOM_DREVAL Evaluate the significance of the given descriptive rule.
+%
+% [sig,Cm,truex,truey] = som_dreval(cR,D,sigmea,[inds1],[inds2],[andor]) 
+% 
+%  sR      (struct) a rule struct, or an array of rule structs
+%  D       (matrix) the data, of size [dlen x nr]
+%  sigmea  (string) significance measure ('accuracy','accuracyI','mutuconf'), 
+%                   see definitions below
+%  [inds1] (vector) indeces belonging to the group
+%                   (by default: the whole data set) 
+%  [inds2] (vector) indeces belonging to the contrast group
+%                   (by default: the rest of the data set)
+%  [andor] (string) 'and' or 'or': which conjunction operator to use
+%                   to join the rules for each variable
+%
+%  sig     (scalar) significance of the rule
+%  cm      (vector) length 4, vectorized confusion matrix ([a,c,b,d]: see below)
+%  truex   (vector) binary vector indicating for each item in the 
+%                   group whether it was true or not
+%  truey   (vector) binary vector indicating for each item in the 
+%                   contrast group whether it was true or not
+%
+% Descriptive rule significance is measured as the match between the 
+% given groups (inds1 = G1, inds2 = G2) and the rule being true or false.
+% 
+%          G1    G2   
+%       ---------------    accuracy  = (a+d) / (a+b+c+d)
+% true  |  a  |   b   |    
+%       |--------------    mutuconf  =  a*a  / ((a+b)(a+c)) 
+% false |  c  |   d   | 
+%       ---------------    accuracyI =   a   / (a+b+c)
+%
+% See also  SOM_DRSIGNIF, SOM_DRMAKE.
+
+% Contributed to SOM Toolbox 2.0, March 4th, 2002 by Juha Vesanto
+% Copyright (c) by Juha Vesanto
+% http://www.cis.hut.fi/projects/somtoolbox/
+
+% Version 2.0beta juuso 040302
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% input arguments
+if isstruct(D), 
+  switch D.type, 
+   case 'som_data', D = D.data; 
+   case 'som_map',  D = D.codebook; 
+  end
+end
+[dlen,dim] = size(D);
+if nargin<4, inds1 = 1:dlen; end
+if nargin<5, i = ones(dlen,1); i(inds1) = 0; inds2 = find(i); end
+if nargin<6, andor = 'and'; end
+
+% initialize
+nr  = length(sR);
+X   = D(inds1,:);
+Y   = D(inds2,:); 
+nx  = size(X,1);
+ny  = size(Y,1);  
+truex = ones(nx,1);
+truey = ones(ny,1);
+
+% go through the individual rules
+for i=1:nr,  
+  tx = (X(:,i)>=sR(i).low & X(:,i)<sR(i).high);
+  tx(isnan(X(:,i))) = sR(i).nanis;     
+
+  ty = (Y(:,i)>=sR(i).low & Y(:,i)<sR(i).high);
+  ty(isnan(Y(:,i))) = sR(i).nanis;     
+
+  switch andor, 
+   case 'and', truex = (truex & tx); truey = (truey & ty);
+   case 'or',  truex = (truex | tx); truey = (truey | ty);
+  end    
+end  
+
+% evaluate criteria
+tix = sum(truex(isfinite(truex)));
+tiy = sum(truey(isfinite(truey))); 
+cm  = [tix,nx-tix,tiy,ny-tiy];
+sig = som_drsignif(sigmea,cm);
+
+return; 
+    
+