@@ -9,7 +9,7 @@ import Random
9
9
rng = StableRNG (123 )
10
10
using ScientificTypes
11
11
12
- import CategoricalDistributions: classes
12
+ import CategoricalDistributions: classes, ERR_NAN_FOUND
13
13
14
14
v = categorical (collect (" asqfasqffqsaaaa" ), ordered= true )
15
15
V = categorical (collect (" asqfasqffqsaaaa" ))
@@ -19,8 +19,10 @@ A, S, Q, F = V[1], V[2], V[3], V[4]
19
19
@testset " set 1" begin
20
20
21
21
# ordered (OrderedFactor)
22
- dict = Dict (s=> 0.1 , q=> 0.2 , f=> 0.7 )
22
+ dict = Dict (s=> 0.1 , q=> 0.2 , f=> 0.7 )
23
23
d = UnivariateFinite (dict)
24
+ dict_bimodal = Dict (a=> 0.1 , s=> 0.1 , q=> 0.4 , f=> 0.4 )
25
+ d_bimodal = UnivariateFinite (dict_bimodal)
24
26
@test classes (d) == [a, f, q, s]
25
27
@test classes (d) == classes (s)
26
28
@test levels (d) == levels (s)
@@ -45,6 +47,7 @@ A, S, Q, F = V[1], V[2], V[3], V[4]
45
47
@test logpdf (d, ' f' ) ≈ log (0.7 )
46
48
@test isinf (logpdf (d, a))
47
49
@test mode (d) == f
50
+ @test modes (d_bimodal) == [f, q]
48
51
49
52
@test UnivariateFinite (support (d), [0.7 , 0.2 , 0.1 ]) ≈ d
50
53
@@ -72,7 +75,7 @@ A, S, Q, F = V[1], V[2], V[3], V[4]
72
75
@test isapprox (freq[q]/ N, ffreq[q]/ N)
73
76
74
77
# unordered (Multiclass):
75
- dict = Dict (S=> 0.1 , Q=> 0.2 , F=> 0.7 )
78
+ dict = Dict (S=> 0.1 , Q=> 0.2 , F=> 0.7 )
76
79
d = UnivariateFinite (dict)
77
80
@test classes (d) == [a, f, q, s]
78
81
@test classes (d) == classes (s)
178
181
179
182
# `mode` of `Univariate` objects containing `NaN` in probs.
180
183
unf = UnivariateFinite ([0.1 , 0.2 , NaN , 0.1 , NaN ], pool= missing )
181
- @test_throws DomainError mode (unf)
184
+ @test_throws ERR_NAN_FOUND mode (unf)
185
+ end
186
+
187
+ @testset " Univariate modes, bimodal" begin
188
+ v = categorical (1 : 101 )
189
+ p = rand (rng,101 )
190
+ p[24 ] = 2 * maximum (p)
191
+ p[42 ] = p[24 ]
192
+ p = p/ sum (p)
193
+ d = UnivariateFinite (v, p)
194
+ @test modes (d) == [24 , 42 ]
195
+
196
+ # `mode` of `Univariate` objects containing `NaN` in probs.
197
+ unf = UnivariateFinite ([0.1 , 0.2 , NaN , 0.1 , NaN ], pool= missing )
198
+ @test_throws ERR_NAN_FOUND modes (unf)
182
199
end
183
200
184
201
@testset " UnivariateFinite methods" begin
0 commit comments