почему после вычитания среднего и деления на стандартное отклонение: среднее значение не равно 0 в R

#r

#r

Вопрос:

У меня есть вектор, т. Я хочу вычесть среднее и разделить на его отклонение. Исходя из моих ожиданий, среднее значение после этого будет равно 0. Однако получается некоторое число, близкое к 0. Я не знаю, что здесь происходит? Почему оно не равно 0? Это из-за какого-то «волшебного» алгоритма в R?

 > t <- c(1,2,3,7)
> t 
[1] 1 2 3 7
> mean(t)
[1] 3.25
> t - mean(t)
[1] -2.25 -1.25 -0.25  3.75
> (t - mean(t))/sd(t)
[1] -0.85552774 -0.47529319 -0.09505864  1.42587956
> mean((t - mean(t))/sd(t))
[1] -1.734723e-17
 

Комментарии:

1. Это число практически равно нулю. Это из-за точности с плавающей запятой. Напомним, что числа -0.85552774, например, не могут быть точно сохранены на компьютере. например, попробуйте сделать a <- 0.1 0.2; сейчас, попробуйте a == 0.3 , это никогда не даст вам true, даже если вы знаете, что a is 0.3

2. См. R FAQ: hep.by/gnu/r-patched/r-faq/R-FAQ_82.html