Skip to content

Bugs in isotonic regression ? #219

@BatyLeo

Description

@BatyLeo

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions