量子化类型2的问题

我不明白以下行为与 quantile. 随着 type=2 它应该在不连续处取平均,但这似乎并不总是发生。如果我创建了一个100个数字的列表,并查看百分位数,那么我是不是应该取每个百分位数的平均值? 这种行为会发生在一些人身上,但不是所有的人(即第7百分位)。

quantile(seq(1, 100, 1), 0.05, type=2)
# 5%
# 5.5 

quantile(seq(1, 100, 1), 0.06, type=2)
# 6%
# 6.5 

quantile(seq(1, 100, 1), 0.07, type=2)
# 7%
# 8 

quantile(seq(1, 100, 1), 0.08, type=2)
# 8%
# 8.5 

这是否与浮点问题有关?

100*0.06 == 6
#TRUE

100*0.07 == 7 
#FALSE

sprintf("%.20f", 100*0.07)
#"7.00000000000000088818"

解决方案:

据我所知,这与浮点数有关,因为0.07并不能完全用浮点数表示。

p <- seq(0, 0.1, by = 0.001)
q <- quantile(seq(1, 100, 1), p, type=2)
plot(p, q, type = "b")
abline(v = 0.07, col = "grey")

enter image description here

如果你把分位数(类型2)看作是p的函数,你永远不会在0.07时精确地评估函数,因此你的结果。by 中的。 从这个意义上说,函数的返回结果完全符合预期。在实际使用连续数据时,我无法想象它会有任何后果(但我知道这是个糟糕的论点)。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

指针专用程序的输出

2022-5-14 3:00:06

解决方案

当我使用fd指针来读()或写()时,fd指针是否会被递增,如何控制递增?

2022-5-14 3:00:10

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索