Mercurial > hg > camir-aes2014
diff toolboxes/MIRtoolbox1.3.2/somtoolbox/som_drsignif.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_drsignif.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,63 @@ +function sig = som_drsignif(sigmea,Cm) + +% SOM_DRSIGNIF Significance measure from confusion matrix between two clusters and a rule. +% +% sig = som_drsignif(sigmea,Cm) +% +% sigmea (string) significance measure: 'accuracy', +% 'mutuconf' (default), or 'accuracyI'. +% (See definitions below). +% Cn Vectorized confusion matrix, or a matrix of such vectors. +% (vector) [a, c, b, d] (see below) +% (matrix) [[a1,c1,b1,d1], ..., [an,cn,bn,dn]] +% +% sig (vector) length=n, significance values +% +% The confusion matrix Cm below between group (G) and contrast group (not G) +% and rule (true - false) is used to determine the significance values: +% +% G not G +% --------------- 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_DREVAL, 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 + +true_x = Cm(:,1); % x = in group +false_x = Cm(:,2); % false = rule is false +true_y = Cm(:,3); % true = rule is true +false_y = Cm(:,4); % y = not in group + +true_items = true_x + true_y; +x_items = true_x + false_x; +all_items = true_x + false_x + true_y + false_y; +true_or_x = x_items + true_items - true_x; + +switch sigmea, +case 'mutuconf', + % mutual confidence, or relevance (as defined in WSOM2001 paper) + sig = zeros(size(true_x)); + i = find(true_items>0 & x_items>0); + sig(i) = (true_x(i).^2) ./ (true_items(i).*x_items(i)); +case 'accuracy', + % accuracy + sig = (true_x + false_y) ./ all_items; +case 'accuracyI', + % accuracy such that false_y is left out of consideration + sig = true_x./true_or_x; +otherwise, + error(['Unrecognized significance measures: ' sigmea]); +end + +return;