首页 > 解决方案 > 在 Julia 中查找分位数

问题描述

我需要一个像xtileStata 一样的函数,给定一个向量,它返回每个 obs 所属的分位数。所以如果函数定义为

function xtile(vector; q= 4) #q = 4 by default returns quartiles
    *** returns a vector with the same size as "vector", indicating which quantile each obs belongs to.
end

我想用它:

@pipe df |> transform(:height => xtile => :quantiles)

我知道Stella.jl提供了这样的功能。但是我无法安装该软件包,现在我想知道是否还有另一个软件包。或者也许我可以自己实现它。

标签: juliaquantile

解决方案


虽然使用 CategoricalArrays 包是一个很好的解决方案,并且具有实际显示分位数含义的额外好处,但xtile仅使用 Julia 标准库就很容易实现:

using Statistics
function xtile(x; n=4)
    q = quantile(x, LinRange(0, 1, n + 1))
    map(v -> min(searchsortedlast(q, v), n), x)
end

推荐阅读