-
Notifications
You must be signed in to change notification settings - Fork 86
Open
Description
Hello !
By testing the isotonic
method from this package and comparing it with a custom implementation, I faced some strange behaviours.
First, the output seems to always be ordered, regardless of the first input arg x
:
julia> isotonic(5:-1:1, 5:-1:1)
5-element Vector{Float64}:
1.0
2.0
3.0
4.0
5.0
Shouldn't it return [5.0, 4.0, 3.0, 2.0, 1.0]
instead ?
Second, even when using an ordered x
, it seems that the output solution is often suboptimal:
julia> y = [0.52, 0.58, -1.91, -1.12, -1.04]
julia> sol = isotonic(1:length(y), y)
5-element Vector{Float64}:
-0.8725
-0.8725
-0.8725
-0.8725
-0.8725
In this example, the output x
is a worse solution than the mean of y
julia> sol_mean = fill(sum(y) / length(y), length(y))
5-element Vector{Float64}:
-0.594
-0.594
-0.594
-0.594
-0.594
julia> sum((vi - yi) ^ 2 for (vi, yi) in zip(sol, y))
5.21453125
julia> sum((vi - yi) ^ 2 for (vi, yi) in zip(sol_mean, y))
4.826719999999999
Metadata
Metadata
Assignees
Labels
No labels