r - spatstat 包中的加权中位数

标签 r median weighted spatstat

spatstat 中的 weighted.median() 函数当我通过 10、11 和 12 的均匀加权分数时,包返回“10.5”。我期待“11”的响应(这是 stats::median()matrixStats::weightedMedian() 的输出)。

加权中位数的概念对我来说不太自然。输出是否不正确,或者我误解了该函数的目的?

x <- c(10, 11, 12)
w <- c( 1,  1,  1)

spatstat::weighted.median(x, w)
#> [1] 10.5
spatstat::weighted.quantile(x, w, probs = .5)
#>  50% 
#> 10.5


matrixStats::weightedMedian(x, w)
#> [1] 11
median(x)
#> [1] 11

reprex package于2020年2月23日创建(v0.3.0)

最佳答案

这里有一个更基本的问题,关于小有限样本中的分位数(包括中位数)的定义。

R 基本函数的帮助文件 quantile.default说有一个争论 type ,有7个不同的选项,会给出不同的答案。 Rob Hyndman 的一篇精彩文章详细描述了这些内容,并在帮助文件中引用。默认为 quantile.defaulttype=7

spatstat::weighted.quantile中的算法执行类似于 type=4 的操作(根据其帮助文件);即累积分布函数F(x)进行线性插值,然后计算反函数。 该算法在 spatstat 代码中正确实现。

您提到的其他包中的加权中位数正在计算加权中位数的不同定义。

非常感谢您提请我们注意这个示例。这可能会促使我们延长 spatstat::weighted.median 的实现拥抱其他类型。

顺便说一句,CRAN 包的错误报告应发布在包的错误报告页面上,如 CRAN 上所示。很幸运我看到了这篇文章。但非常感谢你们两位发现了这个问题。

关于r - spatstat 包中的加权中位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60366677/

相关文章:

r - 如何在多列上拆分kable?

algorithm - 近似样本的典型值

c++ - 冒泡排序不传递数据或不起作用

mysql - 如何根据用户声誉计算输入的重要性/权重?

matlab - 在 Matlab 中生成加权随机 boolean 矩阵

python - 从大小为 N(概率加权)的集合生成随机大小为 k 的子集

r - 累积和元素

r - dplyr 如何按组滞后

r - ggplot 中的颜色(geom_segment)

java - 使用 Java 8 从对象列表中查找中值