Diff of /MATLAB/src/medianStats.m [000000] .. [8406bc]

Switch to unified view

a b/MATLAB/src/medianStats.m
1
function statsCell = medianStats(data, varargin)
2
%MEDIANSTATS calculates median statistics.
3
%
4
% AUTHOR: Maximilian C. M. Fischer
5
% COPYRIGHT (C) 2022-2023 Maximilian C. M. Fischer
6
% LICENSE: EUPL v1.2
7
%
8
9
p = inputParser;
10
addRequired(p,'data',@(x) validateattributes(x,{'numeric'},{'ncols', 1}))
11
addOptional(p,'fSpec', '% 1.1f',@ischar);
12
addParameter(p,'format', 'long',@(x) any(validatestring(x,{'long','short','Q234'})));
13
addParameter(p,'test', 'none',@(x) any(validatestring(x,{'none','signrank'})));
14
addParameter(p,'alpha', 0.05,@(x) validateattributes(x,{'numeric'},{'scalar', '>=', 0.0001, '<=' 0.1}));
15
parse(p,data,varargin{:});
16
fSpec = p.Results.fSpec;
17
format = p.Results.format;
18
test = p.Results.test;
19
alpha = p.Results.alpha;
20
21
PRCT=prctile(data,[0,25,50,75,100]);
22
IQR=iqr(data);
23
24
switch test
25
    case 'none'
26
        P = nan;
27
    case 'signrank'
28
        if all(isnan(data))
29
            P = nan;
30
        else
31
            P = signrank(data);
32
        end
33
end
34
35
switch format
36
    case 'long'
37
        statsCell = {[...
38
            num2str(PRCT(3),fSpec),... % median
39
            ' (' num2str(PRCT(2),fSpec) ' to ' num2str(PRCT(4),fSpec) '', ... % IQR
40
            ', ' num2str(PRCT(1),fSpec) ' to ' num2str(PRCT(5),fSpec) ')'] ... % Range
41
            };
42
    case 'Q234'
43
        statsCell = {[num2str(PRCT(3),fSpec), ', ' num2str(PRCT(4),fSpec) ', ' num2str(PRCT(5),fSpec)]};
44
    case 'short'
45
        statsCell = {[num2str(PRCT(3),fSpec) ' (' num2str(IQR,fSpec) ')']};
46
end
47
48
if P <= alpha
49
    statsCell{end} = [statsCell{end} '*'];
50
end
51
52
end