Linux, OSX:
Windows:
Code Coverage:
An implementation of ROC (Receiver Operating Characteristic) curves for Julia.
] add https://github.com/diegozea/ROC.jl
roc(scores::AbstractVector{T}, labels::AbstractVector{U}, truelabel::L; distances::Bool=false)Here T is R or Union{R,Missing} for some type R<:Real and U
is L or Union{L,Missing} for some type L<:Any. The labels
vector must take exactly two non-missing values.
distances defines whether the scores values are distance-scored, i.e. a
higher score value means a worse match. The default is false indicating the
more typical opposite case where a higher score value means a better match
roc(scores::AbstractVector{R}, labels::BitVector{Bool}; distances::Bool=false)Alternative method for optimal performance (no missing values allowed).
The methods above return a ROCData object, whose fields FPR and
TPR are the vectors of true and false positive rates,
respectively.
AUC(curve::ROCData)Area under the curve.
PPV(curve::ROCData)Positive predictive value.
Generate synthetic data:
julia> function noisy(label; λ=0.0)
if label
return 1 - λ*rand()
else
return λ*rand()
end
end
julia> labels = rand(Bool, 200);
julia> scores(λ) = map(labels) do label
noisy(label, λ=λ)
endCompare area under ROC curves:
julia> using ROC
julia> roc_good = roc(scores(0.6), labels, true);
julia> roc_bad = roc(scores(1.0), labels, true);
julia> area_good = AUC(roc_good)
0.9436237564063913
julia> area_bad = AUC(roc_bad)
0.5014571399859311Use Plots.jl to plot the receiver operator characteristics:
julia> using Plots
julia> plot(roc_good, label="good");
julia> plot!(roc_bad, label="bad")This generates the plot appearing at the top of the page.

