2016-09-14 9 views
1

У меня возникают нечетные результаты с quantmod monthlyReturn функция. Вот пример:Нечетные результаты с R и quantmod monthReturn function

require(quantmod) 

getSymbols("VOO") 

adj <- Ad(VOO["2010-09"]) 

monthlyReturn(adj) 

(as.numeric(tail(adj)[6]) - as.numeric(adj[1]))/as.numeric(adj[1]) 

Последние две команды дает тот же ответ 0.03559799

Однако команд as.numeric(tail(adj)[6]) и as.numeric(adj[1]) дают мне значения 92.81556 и 89.62508 соответственно и команда (92.81556 - 89.62508)/89.62508 дает значение 0.03559807, который является правильным, но отличается от выше примеров.

Может кто-нибудь, пожалуйста, объясните мне, что не так, и почему существует разница?

ответ

1

Вы теряете точность при печати чисел с таким количеством цифр.

options(digits=20) 
as.numeric(tail(adj)[6]) 
# 92.815557999999995786 
as.numeric(adj[1]) 
# 89.625084999999998558 

(as.numeric(tail(adj)[6]) - as.numeric(adj[1]))/as.numeric(adj[1]) 
#0.035597991343606506798 
(92.815557999999995786 - 89.625084999999998558)/89.625084999999998558 
#0.035597991343606506798