Skip to content

Commit 0fb9b38

Browse files
committed
Expose d_o and d_e
1 parent e1e3578 commit 0fb9b38

File tree

2 files changed

+23
-7
lines changed

2 files changed

+23
-7
lines changed

lib/Statistics/Krippendorff.pm

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,26 @@ has _expected => (is => 'lazy',
4343
builder => '_build_expected');
4444

4545
sub alpha($self) {
46-
my $d_o = sum(map {
46+
my $alpha = 1 - $self->d_o / $self->d_e;
47+
return $alpha
48+
}
49+
50+
sub d_o($self) {
51+
return sum(map {
4752
my $v = $_;
4853
map {
4954
$self->coincidence->{$v}{$_} * $self->delta->($self, $v, $_)
5055
} $self->vals
51-
} $self->vals);
52-
my $d_e = sum(map {
56+
} $self->vals)
57+
}
58+
59+
sub d_e($self) {
60+
return sum(map {
5361
my $v = $_;
5462
map {
5563
$self->_expected->{$v}{$_} * $self->delta->($self, $v, $_)
5664
} $self->vals
57-
} $self->vals);
58-
my $alpha = 1 - $d_o / $d_e;
59-
return $alpha
65+
} $self->vals)
6066
}
6167

6268
sub vals($self) { @{ $self->_vals } }
@@ -288,6 +294,14 @@ frequencies).
288294
289295
Returns a sorted list of all the possible values.
290296
297+
=head2 d_o
298+
299+
Returns the observed disagreement.
300+
301+
=head2 d_e
302+
303+
Returns the disagreement expected by chance.
304+
291305
=head1 AUTHOR
292306
293307
E. Choroba, C<< <choroba at cpan.org> >>

t/02-example.t

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use Test2::Tools::Subtest qw{ subtest_buffered };
99
plan 2;
1010

1111
subtest_buffered wikipedia => sub {
12-
plan 3;
12+
plan 5;
1313
my @units_h = ({B=>2, C=>2}, {B=>1, C=>1}, {B=>3, C=>3}, {A=>3, B=>3, C=>4},
1414
{A=>4, B=>4, C=>4}, {A=>1, B=>3}, {A=>2, C=>2}, {A=>1, C=>1},
1515
{A=>1, C=>1}, {A=>3, C=>3}, {A=>3, C=>3}, {A=>3, C=>4});
@@ -19,6 +19,8 @@ subtest_buffered wikipedia => sub {
1919

2020
is $sk1->alpha, float(0.691, precision => 3),
2121
'Hash units, default delta';
22+
is $sk1->d_o, 6, 'd_o';
23+
is $sk1->d_e, float(2 / 25 * (28 + 70 + 35 + 40 + 20 + 50)), 'd_e';
2224

2325
my @units_a = ([undef, 2, 2],
2426
[undef, 1, 1],

0 commit comments

Comments
 (0)