У меня была явная ошибка в скрипте.
Через несколько часов я обнаружил, что это проблема десятичных приближений.
Чтобы сделать проблему воспроизводимой, учтите следующее:
0.02 - 0.000904686260609299 - 0.005 ==
0.02 + (-0.000904686260609299 - 0.005)
#[1] FALSE
Где:
print(0.02 -0.000904686260609299 -0.005, 22)
print(0.02 + (-0.000904686260609299 -0.005), 22)
#[1] 0.01409531373939069964774
#[1] 0.01409531373939070138246
Представьте себе ситуацию, когда у вас длинные векторы a,b,c
:
a -b -c == a + (-b -c)
Разница может быть статистически значимой.
Могу ли я повысить уровень внутренней аппроксимации, чтобы тест, приведенный выше, дал результат TRUE
?
Если мне придется выбирать, какой результат является наилучшим приближением:
a -b -c
или a + (-b -c)
?