为什么1.59不等于1.59

时间:2011-12-15 02:46:49

标签: r quantile

好吧,我在这里遇到了最奇怪的问题。当我们用一个独立变量X的特定分位数来划分一个空格时,我取一个因变量Y的均值。

我的问题是,R中的分位数函数没有返回我的自变量X范围内的值,但是当它打印到屏幕上时它返回的值是正确的值。是什么让这个陌生人只会发生特定的分位数。

一些示例代码来演示这种奇怪的效果:

x<-c(1.49,rep(1.59,86))
quantile(x,0.05) # returns 1.59, the correct value
# However both of these return all values as false
table(x>=quantile(x,0.05))
table(x==quantile(x,0.05))
# But if we take a quantile at 0.075 it works correctly
table(x>=quantile(x,0.075))

你们可以提供的任何见解都将受到赞赏。

1 个答案:

答案 0 :(得分:5)

分位数不是完全 1.59

> quantile(x, 0.05)[[1]] == 1.59
[1] FALSE
> quantile(x, 0.05)[[1]] == 1.5900000000000003
[1] TRUE

quantile(..., type = 7)似乎正在用1.59替换0.7000000000000001 * 1.59 + 0.3 * 1.59,这会引入一个小错误,禁止使用完全相等。