首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >reldist::wtd.iqr对等权值给出了与IQR不同的结果

reldist::wtd.iqr对等权值给出了与IQR不同的结果
EN

Stack Overflow用户
提问于 2017-10-25 11:24:44
回答 1查看 310关注 0票数 2

我一直在使用来自wtd.iqr包(Version1.6.6)的reldist函数来计算加权四分位数范围(而不是IQR从香草R stats包返回的未加权四分位数范围),得到了意想不到的结果。为了探讨这个问题,我尝试比较reldist::wtd.iqr的输出和IQR的输出。

令我惊讶的是,我发现IQRreldist::wtd.iqr对于相同的输入值返回完全不同的输出值,即使输入值是同等加权的(即当加权应该没有区别时)。

代码语言:javascript
复制
> x <- rnorm(10000)
> wt <- rep(1, length(x))
> paste(c('IQR:', IQR(x), 'wtd.iqr:', reldist::wtd.iqr(x, weight = wt)))
[1] "IQR:"              "1.34879539936654"  "wtd.iqr:"          "0.675866062623211"
> 

在上面的测试中,IQR似乎总是返回一个输出值,大约是wtd.iqr为相同输入值返回的值的两倍。

对于不遵循上述分布的输入值,这种关系不一定成立:实际上,对于实际数据,我有时会从wtd.iqr获得负值,我认为这是不可能的,但在IQR中却从未发现这种情况。

事实上,在我看来,wtd.iqr可能实际上不是返回四分位数范围,而是返回一个四分位数。但是如果这里有一个bug,它肯定不会是那么明显的一个--是吗?

据推测,这两个函数以不同的方式定义了四分位数范围的概念,但文档中没有任何线索。IQR的文档声明它“计算x值的四分位数范围”,而wtd.iqr的文档声明它“从一个加权样本返回一个经验的四分位数范围”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-25 12:09:10

不,你没想过头。实际上是个窃听器。我在这里已经完成了函数定义:https://github.com/cran/reldist/blob/master/R/wtd.quantile.R。它在内部使用Hmisc包的wtd.quantile函数,然后用概率值.25和.75减去它。但是这两个调用是在不同的行中进行的,因此R将其视为不同的调用,而不是计算表达式a-b,而是返回-b,这是最后一行。因此,将返回25%的-ve值。

如果您只是简单地尝试一下:

代码语言:javascript
复制
quantile(x = x,c(0,0.25,0.5,0.75,1))

#             0%                      25%                      50%                      75% 
#-3.903016136384592105202 -0.677263029412919159711 -0.012691140400805673433  0.636730086813689699632 
#                100% 
# 3.745404178709976328321 

reldist::wtd.iqr(x = x,weight = wt)

 #25% 
 #0.67726302941291915971 

返回25%ile的阴性。最后一行在R函数调用中返回.

这是函数定义:

代码语言:javascript
复制
wtd.iqr <- function(x, na.rm = FALSE, weight=FALSE) {
  wtd.quantile(x, q=0.75, na.rm = na.rm, weight=weight)
- wtd.quantile(x, q=0.25, na.rm = na.rm, weight=weight)
}

它应该是:

代码语言:javascript
复制
wtd.iqr <- function(x, na.rm = FALSE, weight=FALSE) {
  wtd.quantile(x, q=0.75, na.rm = na.rm, weight=weight) - wtd.quantile(x, q=0.25, na.rm = na.rm, weight=weight)
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46931159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档