@@ -480,29 +480,30 @@ end
480480end
481481
482482@testset " quantile" begin
483- @test quantile ([1 ,2 ,3 ,4 ],0.5 ) == 2.5
484- @test quantile ([1 ,2 ,3 ,4 ],[0.5 ]) == [2.5 ]
485- @test quantile ([1. , 3 ],[.25 ,.5 ,.75 ])[2 ] == median ([1. , 3 ])
486- @test quantile (100.0 : - 1.0 : 0.0 , 0.0 : 0.1 : 1.0 ) == 0.0 : 10.0 : 100.0
487- @test quantile (0.0 : 100.0 , 0.0 : 0.1 : 1.0 , sorted= true ) == 0.0 : 10.0 : 100.0
488- @test quantile (100f0 : - 1f0 : 0.0 , 0.0 : 0.1 : 1.0 ) == 0f0 : 10f0 : 100f0
483+ @test quantile ([1 ,2 ,3 ,4 ],0.5 ) ≈ 2.5
484+ @test quantile ([1 ,2 ,3 ,4 ],[0.5 ]) ≈ [2.5 ]
485+ @test quantile ([1. , 3 ],[.25 ,.5 ,.75 ])[2 ] ≈ median ([1. , 3 ])
486+ @test quantile (100.0 : - 1.0 : 0.0 , 0.0 : 0.1 : 1.0 ) ≈ 0.0 : 10.0 : 100.0
487+ @test quantile (0.0 : 100.0 , 0.0 : 0.1 : 1.0 , sorted= true ) ≈ 0.0 : 10.0 : 100.0
488+ @test quantile (100f0 : - 1f0 : 0.0 , 0.0 : 0.1 : 1.0 ) ≈ 0f0 : 10f0 : 100f0
489489 @test quantile ([Inf ,Inf ],0.5 ) == Inf
490490 @test quantile ([- Inf ,1 ],0.5 ) == - Inf
491- @test quantile ([0 ,1 ],1e-18 ) == 1e-18
491+ # here it is required to introduce an absolute tolerance because the calculated value is 0
492+ @test quantile ([0 ,1 ],1e-18 ) ≈ 1e-18 atol= 1e-18
492493 @test quantile ([1 , 2 , 3 , 4 ],[]) == []
493494 @test quantile ([1 , 2 , 3 , 4 ], (0.5 ,)) == (2.5 ,)
494495 @test quantile ([4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
495496 (0.1 , 0.2 , 0.4 , 0.9 )) == (2.0 , 3.0 , 5.0 , 11.0 )
496497 @test quantile (Union{Int, Missing}[4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
497- [0.1 , 0.2 , 0.4 , 0.9 ]) == [2.0 , 3.0 , 5.0 , 11.0 ]
498+ [0.1 , 0.2 , 0.4 , 0.9 ]) ≈ [2.0 , 3.0 , 5.0 , 11.0 ]
498499 @test quantile (Any[4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
499- [0.1 , 0.2 , 0.4 , 0.9 ]) == [2.0 , 3.0 , 5.0 , 11.0 ]
500+ [0.1 , 0.2 , 0.4 , 0.9 ]) ≈ [2.0 , 3.0 , 5.0 , 11.0 ]
500501 @test quantile ([4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
501- Any[0.1 , 0.2 , 0.4 , 0.9 ]) == [2.0 , 3.0 , 5.0 , 11.0 ]
502+ Any[0.1 , 0.2 , 0.4 , 0.9 ]) ≈ [2.0 , 3.0 , 5.0 , 11.0 ]
502503 @test quantile ([4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
503504 Any[0.1 , 0.2 , 0.4 , 0.9 ]) isa Vector{Float64}
504505 @test quantile (Any[4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
505- Any[0.1 , 0.2 , 0.4 , 0.9 ]) == [2 , 3 , 5 , 11 ]
506+ Any[0.1 , 0.2 , 0.4 , 0.9 ]) ≈ [2 , 3 , 5 , 11 ]
506507 @test quantile (Any[4 , 9 , 1 , 5 , 7 , 8 , 2 , 3 , 5 , 17 , 11 ],
507508 Any[0.1 , 0.2 , 0.4 , 0.9 ]) isa Vector{Float64}
508509 @test quantile ([1 , 2 , 3 , 4 ], ()) == ()
533534 x = [3 ; 2 ; 1 ]
534535 y = zeros (3 )
535536 @test quantile! (y, x, [0.1 , 0.5 , 0.9 ]) === y
536- @test y == [1.2 , 2.0 , 2.8 ]
537+ @test y ≈ [1.2 , 2.0 , 2.8 ]
538+
539+ # tests for quantile calculation with configurable alpha and beta parameters
540+ v = [2 , 3 , 4 , 6 , 9 , 2 , 6 , 2 , 21 , 17 ]
541+
542+ # tests against scipy.stats.mstats.mquantiles method
543+ @test quantile (v, 0.0 , alpha= 0.0 , beta= 0.0 ) ≈ 2.0
544+ @test quantile (v, 0.2 , alpha= 1.0 , beta= 1.0 ) ≈ 2.0
545+ @test quantile (v, 0.4 , alpha= 0.0 , beta= 0.0 ) ≈ 3.4
546+ @test quantile (v, 0.4 , alpha= 0.0 , beta= 0.2 ) ≈ 3.32
547+ @test quantile (v, 0.4 , alpha= 0.0 , beta= 0.4 ) ≈ 3.24
548+ @test quantile (v, 0.4 , alpha= 0.0 , beta= 0.6 ) ≈ 3.16
549+ @test quantile (v, 0.4 , alpha= 0.0 , beta= 0.8 ) ≈ 3.08
550+ @test quantile (v, 0.4 , alpha= 0.0 , beta= 1.0 ) ≈ 3.0
551+ @test quantile (v, 0.4 , alpha= 0.2 , beta= 0.0 ) ≈ 3.52
552+ @test quantile (v, 0.4 , alpha= 0.2 , beta= 0.2 ) ≈ 3.44
553+ @test quantile (v, 0.4 , alpha= 0.2 , beta= 0.4 ) ≈ 3.36
554+ @test quantile (v, 0.4 , alpha= 0.2 , beta= 0.6 ) ≈ 3.28
555+ @test quantile (v, 0.4 , alpha= 0.2 , beta= 0.8 ) ≈ 3.2
556+ @test quantile (v, 0.4 , alpha= 0.2 , beta= 1.0 ) ≈ 3.12
557+ @test quantile (v, 0.4 , alpha= 0.4 , beta= 0.0 ) ≈ 3.64
558+ @test quantile (v, 0.4 , alpha= 0.4 , beta= 0.2 ) ≈ 3.56
559+ @test quantile (v, 0.4 , alpha= 0.4 , beta= 0.4 ) ≈ 3.48
560+ @test quantile (v, 0.4 , alpha= 0.4 , beta= 0.6 ) ≈ 3.4
561+ @test quantile (v, 0.4 , alpha= 0.4 , beta= 0.8 ) ≈ 3.32
562+ @test quantile (v, 0.4 , alpha= 0.4 , beta= 1.0 ) ≈ 3.24
563+ @test quantile (v, 0.4 , alpha= 0.6 , beta= 0.0 ) ≈ 3.76
564+ @test quantile (v, 0.4 , alpha= 0.6 , beta= 0.2 ) ≈ 3.68
565+ @test quantile (v, 0.4 , alpha= 0.6 , beta= 0.4 ) ≈ 3.6
566+ @test quantile (v, 0.4 , alpha= 0.6 , beta= 0.6 ) ≈ 3.52
567+ @test quantile (v, 0.4 , alpha= 0.6 , beta= 0.8 ) ≈ 3.44
568+ @test quantile (v, 0.4 , alpha= 0.6 , beta= 1.0 ) ≈ 3.36
569+ @test quantile (v, 0.4 , alpha= 0.8 , beta= 0.0 ) ≈ 3.88
570+ @test quantile (v, 0.4 , alpha= 0.8 , beta= 0.2 ) ≈ 3.8
571+ @test quantile (v, 0.4 , alpha= 0.8 , beta= 0.4 ) ≈ 3.72
572+ @test quantile (v, 0.4 , alpha= 0.8 , beta= 0.6 ) ≈ 3.64
573+ @test quantile (v, 0.4 , alpha= 0.8 , beta= 0.8 ) ≈ 3.56
574+ @test quantile (v, 0.4 , alpha= 0.8 , beta= 1.0 ) ≈ 3.48
575+ @test quantile (v, 0.4 , alpha= 1.0 , beta= 0.0 ) ≈ 4.0
576+ @test quantile (v, 0.4 , alpha= 1.0 , beta= 0.2 ) ≈ 3.92
577+ @test quantile (v, 0.4 , alpha= 1.0 , beta= 0.4 ) ≈ 3.84
578+ @test quantile (v, 0.4 , alpha= 1.0 , beta= 0.6 ) ≈ 3.76
579+ @test quantile (v, 0.4 , alpha= 1.0 , beta= 0.8 ) ≈ 3.68
580+ @test quantile (v, 0.4 , alpha= 1.0 , beta= 1.0 ) ≈ 3.6
581+ @test quantile (v, 0.6 , alpha= 0.0 , beta= 0.0 ) ≈ 6.0
582+ @test quantile (v, 0.6 , alpha= 1.0 , beta= 1.0 ) ≈ 6.0
583+ @test quantile (v, 0.8 , alpha= 0.0 , beta= 0.0 ) ≈ 15.4
584+ @test quantile (v, 0.8 , alpha= 0.0 , beta= 0.2 ) ≈ 14.12
585+ @test quantile (v, 0.8 , alpha= 0.0 , beta= 0.4 ) ≈ 12.84
586+ @test quantile (v, 0.8 , alpha= 0.0 , beta= 0.6 ) ≈ 11.56
587+ @test quantile (v, 0.8 , alpha= 0.0 , beta= 0.8 ) ≈ 10.28
588+ @test quantile (v, 0.8 , alpha= 0.0 , beta= 1.0 ) ≈ 9.0
589+ @test quantile (v, 0.8 , alpha= 0.2 , beta= 0.0 ) ≈ 15.72
590+ @test quantile (v, 0.8 , alpha= 0.2 , beta= 0.2 ) ≈ 14.44
591+ @test quantile (v, 0.8 , alpha= 0.2 , beta= 0.4 ) ≈ 13.16
592+ @test quantile (v, 0.8 , alpha= 0.2 , beta= 0.6 ) ≈ 11.88
593+ @test quantile (v, 0.8 , alpha= 0.2 , beta= 0.8 ) ≈ 10.6
594+ @test quantile (v, 0.8 , alpha= 0.2 , beta= 1.0 ) ≈ 9.32
595+ @test quantile (v, 0.8 , alpha= 0.4 , beta= 0.0 ) ≈ 16.04
596+ @test quantile (v, 0.8 , alpha= 0.4 , beta= 0.2 ) ≈ 14.76
597+ @test quantile (v, 0.8 , alpha= 0.4 , beta= 0.4 ) ≈ 13.48
598+ @test quantile (v, 0.8 , alpha= 0.4 , beta= 0.6 ) ≈ 12.2
599+ @test quantile (v, 0.8 , alpha= 0.4 , beta= 0.8 ) ≈ 10.92
600+ @test quantile (v, 0.8 , alpha= 0.4 , beta= 1.0 ) ≈ 9.64
601+ @test quantile (v, 0.8 , alpha= 0.6 , beta= 0.0 ) ≈ 16.36
602+ @test quantile (v, 0.8 , alpha= 0.6 , beta= 0.2 ) ≈ 15.08
603+ @test quantile (v, 0.8 , alpha= 0.6 , beta= 0.4 ) ≈ 13.8
604+ @test quantile (v, 0.8 , alpha= 0.6 , beta= 0.6 ) ≈ 12.52
605+ @test quantile (v, 0.8 , alpha= 0.6 , beta= 0.8 ) ≈ 11.24
606+ @test quantile (v, 0.8 , alpha= 0.6 , beta= 1.0 ) ≈ 9.96
607+ @test quantile (v, 0.8 , alpha= 0.8 , beta= 0.0 ) ≈ 16.68
608+ @test quantile (v, 0.8 , alpha= 0.8 , beta= 0.2 ) ≈ 15.4
609+ @test quantile (v, 0.8 , alpha= 0.8 , beta= 0.4 ) ≈ 14.12
610+ @test quantile (v, 0.8 , alpha= 0.8 , beta= 0.6 ) ≈ 12.84
611+ @test quantile (v, 0.8 , alpha= 0.8 , beta= 0.8 ) ≈ 11.56
612+ @test quantile (v, 0.8 , alpha= 0.8 , beta= 1.0 ) ≈ 10.28
613+ @test quantile (v, 0.8 , alpha= 1.0 , beta= 0.0 ) ≈ 17.0
614+ @test quantile (v, 0.8 , alpha= 1.0 , beta= 0.2 ) ≈ 15.72
615+ @test quantile (v, 0.8 , alpha= 1.0 , beta= 0.4 ) ≈ 14.44
616+ @test quantile (v, 0.8 , alpha= 1.0 , beta= 0.6 ) ≈ 13.16
617+ @test quantile (v, 0.8 , alpha= 1.0 , beta= 0.8 ) ≈ 11.88
618+ @test quantile (v, 0.8 , alpha= 1.0 , beta= 1.0 ) ≈ 10.6
619+ @test quantile (v, 1.0 , alpha= 0.0 , beta= 0.0 ) ≈ 21.0
620+ @test quantile (v, 1.0 , alpha= 1.0 , beta= 1.0 ) ≈ 21.0
537621end
538622
539623# StatsBase issue 164
0 commit comments