Почему 1,59 не равно 1,59

Хорошо, у меня здесь странная проблема. Я беру среднее значение зависимой переменной Y, когда мы делим пространство на определенный квантиль независимой переменной X.

Моя проблема в том, что функция квантиля в 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))

Мы будем благодарны за любую информацию, которую вы, ребята, можете предоставить.


person Adam    schedule 15.12.2011    source источник
comment
Я считаю, что это R FAQ 7.22.   -  person Ben Bolker    schedule 15.12.2011
comment
Создать автоответчик 7.22 должно быть легко :)   -  person Dieter Menne    schedule 15.12.2011
comment
7.31 на самом деле. Я думаю, был добавлен еще один вопрос. cran.r-project.org/doc/FAQ/   -  person Richie Cotton    schedule 15.12.2011


Ответы (1)


Квантиль не точно 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, что вносит крошечную ошибку, препятствующую использованию точного равенства.

person Michael Hoffman    schedule 15.12.2011
comment
Или вы можете ввести print(quantile(x,0.05),digits = 22). - person joran; 15.12.2011