BiweightStats.jl

Code Build Status PkgEval Coverage License

Robust statistics based on the biweight transform.

Installation

BiweightStats.jl is a registered package and can be installed using the Julia package manager. From the Julia REPL, enter Pkg mode (by pressing ])

julia>]

pkg> add BiweightStats

To exit Pkg mode, just backspace. Once the package is installed it can be imported with

julia> using BiweightStats

To exit Pkg mode, just backspace. Once the package is installed it can be imported with For more information, see the Pkg documentation.

Usage

The following examples show the biweight location and scale for a few distributions, and comparing them to the mean and standard deviation.

To run these examples, make sure the following packages need to be installed

using Pkg; Pkg.add(["Distributions", "StatsPlots"])
using BiweightStats
using Distributions: Normal, Logistic, Cauchy, Laplace
using Statistics
using StatsPlots
using Random
rng = Random.seed!(1001)
Random.TaskLocalRNG()

for all our examples, we'll sample 10,000 points

N = 10000
10000
function sample_measure_and_plot_dists(rng, dist, N; kwargs...)
    samples = rand(rng, dist, N)

    mu = mean(samples)
    sig = std(samples; mean=mu)

    loc = location(samples; c=9)
    sca = scale(samples; c=9, M=loc)

    p = histogram(samples; normalize=true, fill=0.3, c=1, lab="", leg=:topleft, kwargs...)
    plot!(dist; c=1, lab="", lw=3)
    vline!([mu loc]; c=[2 3], lab=["mean ± std" "biweight location ± scale"], lw=2)
    vline!([mu loc] .+ [-sig -sca; sig sca]; c=[2 3], ls=:dash, lab="", lw=2)
    return p
end
sample_measure_and_plot_dists (generic function with 1 method)

Gaussian

dist = Normal()
sample_measure_and_plot_dists(rng, dist, N; title="Gaussian")

Logistic

dist = Logistic()
sample_measure_and_plot_dists(rng, dist, N; title="Logistic")

Cauchy

dist = Cauchy()
sample_measure_and_plot_dists(rng, dist, N; title="Cauchy", xlim=(-40, 40))