-
Notifications
You must be signed in to change notification settings - Fork 0
/
tc_cohens_d.m
66 lines (61 loc) · 1.91 KB
/
tc_cohens_d.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function cohens_d = tc_cohens_d(data_A, varargin)
%cohens_d = TC_COHENS_D(data_A, varargin)
%
% Computes effect size for paired or independen samples (Cohen's d).
%
% cohens_d = TC_COHENS_D(data_A) performs effect size computation for a
% single against 0.
%
% cohens_d = TC_COHENS_D(data_A, data_B) performs effect size computation
% for two indepenend samples.
%
% cohens_d = TC_COHENS_D(data_A, data_B, 'paired') performs effect size
% computation for two paired samples.
%
% Note: according to Cohen and Sawilowsky:
%
% d = 0.01 --> very small effect size
% d = 0.20 --> small effect size
% d = 0.50 --> medium effect size
% d = 0.80 --> large effect size
% d = 1.20 --> very large effect size
% d = 2.00 --> huge effect size
%
% Copyright 2020 Tommy Clausner ([email protected])
independend_test = 1;
if nargin < 2
data_B = zeros(size(data_A));
elseif nargin == 2 && ischar(varargin{1})
data_B = zeros(size(data_A));
independend_test = isindependend(varargin{1});
elseif nargin == 2 && ~ischar(varargin{1})
data_B = varargin{1};
elseif nargin == 3
if ischar(varargin{2})
data_B = varargin{1};
independend_test = isindependend(varargin{2});
else
data_B = varargin{2};
independend_test = isindependend(varargin{3});
end
else
error('Unrecognized input.')
end
if independend_test
cohens_d = (nanmean(data_A) - nanmean(data_B)) ./ ...
sqrt((...
(numel(data_A)-1).*nanvar(data_A)+(numel(data_B)-1).*nanvar(data_B)) ...
./ (numel(data_A) + numel(data_B) - 2));
else
cohens_d = (nanmean(data_A) - nanmean(data_B)) ./ nanstd(data_A - data_B);
end
function check = isindependend(check)
if strcmpi(check, 'paired')
check = 0;
elseif strcmpi(check, 'independend')
check = 1;
else
error('Unrecognized test. Must be "paired" or "independend"')
end
end
end