Open BatyLeo opened 1 year ago
Hello !
By testing the isotonic method from this package and comparing it with a custom implementation, I faced some strange behaviours.
isotonic
First, the output seems to always be ordered, regardless of the first input arg x:
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 ?
[5.0, 4.0, 3.0, 2.0, 1.0]
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
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
I also seem to be getting incorrect outputs when fitting a MetricMDS with metric = isotonic
metric = isotonic
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
: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:In this example, the output
x
is a worse solution than the mean ofy