楼主: flybesty
2159 0

[学习分享] R语言 quantile()和fivenum()的差别在于——加权平均与算术平均 [推广有奖]

  • 0关注
  • 0粉丝

学前班

90%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
40 点
帖子
1
精华
0
在线时间
5 小时
注册时间
2016-6-13
最后登录
2017-2-16

楼主
flybesty 发表于 2016-12-25 20:51:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
quantile()和fivenum()的本质差别在于,quantile()函数的算法是采用加权平均,fivenum()是算术平均。这么说可能不易理解,其实很简单的,下面举个例子说明就容易理解了。


例如,一组数据 x <- 11 : 18,则如下图,第一位是11,第二位是12,,,第8位是18,

对于quantile()算法——加权平均,
0%位第1位(1+(8-1)*0%=1),值为11
25%位是第2.75位(1+(8-1)*25%=2.75),第2.75位介于第2位和第3位之间,距离哪位较近,哪位数据的权重较大,所以第3位数据的权重是0.75,第2位数据是权重是0.25,则25%位值=13*0.75+12*0.25=12.75

同理,50%位第4.5位(1+(8-1)*50%=4.5),值=14*0.5+15*0.5=14.5
75%位第6.25位(1+(8-1)*75%=6.25),值=16*0.75+17*0.25=16.25
100%位第8位(1+(8-1)*100%=8),值为18

对于fivenum()算法——算术平均,
0%位第1位(1+(8-1)*0%=1),值为11
25%位是第2.75位(1+(8-1)*25%=2.75),第2.75位介于第2位和第3位之间,用算术平均法,则25%位值=(13+12)/2=12.5
同理,50%位第4.5位(1+(8-1)*50%=4.5),值=(14+15)/2=14.5
75%位第6.25位(1+(8-1)*75%=6.25),值=(16+17)/2=16.5
100%位第8位(1+(8-1)*100%=8),值为18


用r语言验证:


quantile()的代码
  • x <- 1:100
  • n <- length(x)
  • probs = seq(0, 1, 0.25)
  • index <- 1 + (n - 1) * probs
  • lo <- floor(index)
  • hi <- ceiling(index)
  • x <- sort(x, partial = unique(c(lo, hi)))
  • qs <- x[lo]
  • i <- which(index > lo)
  • h <- (index - lo)
  • qs <- (1 - h) * qs + h * x[hi]
  • qs
  • quantile(x=1:100)


fivenum()的代码
  • x <- 1:100
  • n <- length(x)
  • n4 <- floor((n + 3)/2)/2
  • d <- c(1, n4, (n + 1)/2, n + 1 - n4, n)
  • 0.5 * (x[floor(d)] + x[ceiling(d)])
  • fivenum(x=1:100)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:quantile quant Tile Five NUM initial style title

002Xo9Qlzy77tdJIZol69&690.png (3.23 KB)

002Xo9Qlzy77tdJIZol69&690.png

002Xo9Qlzy77tcRry33fd&690.png (2.65 KB)

002Xo9Qlzy77tcRry33fd&690.png

002Xo9Qlzy77t9IHDpec0&690.png (1.38 KB)

002Xo9Qlzy77t9IHDpec0&690.png

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 10:08