@@ -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)
181
184
@test_throws DomainError mode (unf)
182
185
end
183
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 DomainError modes (unf)
199
+ end
200
+
184
201
@testset " UnivariateFinite methods" begin
185
202
y = categorical ([" yes" , " no" , " yes" , " yes" , " maybe" ])
186
203
yes = y[1 ]
0 commit comments