Расчет возврата журнала с помощью функции Diff
Я пытаюсь вычислить результаты журналов из простой матрицы данных с 2 столбцами. Мой следующий код дает мне все нули, что мне здесь не хватает?
dataMatrix<-as.matrix(data[,2:ncol(data)]) #taking data from dataframe
Log_returns<-diff(log(dataMatrix), lag=1)
View(log_returns)
Это первые несколько строк данных
Dates APPL AMZN
1 7-01-2005 4.9464 42.32
2 2005-01-14 5.0143 44.55
3 2005-01-21 5.0350 41.16
4 2005-01-28 5.2843 42.22
5 2005-02-04 5.6314 35.72
6 2005-02-11 5.8007 35.78
7 2005-02-18 6.2007 35.31
8 2005-02-25 6.3564 34.99
9 2005-03-04 6.1157 35.85
10 2005-03-11 5.7529 34.75
1 ответ
Я не уверен, что вы пытаетесь рассчитать. Вы хотите рассчитать разницу между лог-преобразованными значениями для APPL
а также AMZN
для каждого ряда?
Log_returns <- apply(log(data[, 2:ncol(data)]), 1, diff)
# 1 2 3 4 5 6 7 8
#2.146600 2.184318 2.101053 2.078154 1.847353 1.819410 1.739504 1.705600
# 9 10
#1.768484 1.798475
Или сохранить в новом столбце
data$Log_return <- apply(log(data[, 2:ncol(data)]), 1, diff)
data
# Dates APPL AMZN Log_return
#1 7-01-2005 4.9464 42.32 2.146600
#2 2005-01-14 5.0143 44.55 2.184318
#3 2005-01-21 5.0350 41.16 2.101053
#4 2005-01-28 5.2843 42.22 2.078154
#5 2005-02-04 5.6314 35.72 1.847353
#6 2005-02-11 5.8007 35.78 1.819410
#7 2005-02-18 6.2007 35.31 1.739504
#8 2005-02-25 6.3564 34.99 1.705600
#9 2005-03-04 6.1157 35.85 1.768484
#10 2005-03-11 5.7529 34.75 1.798475
Или, возможно, вы хотите рассчитать разницу в преобразованных логарифмических значениях между последовательными датами для каждого APPL
а также AMZN
apply(log(data[, 2:ncol(data)]), 2, diff)
# APPL AMZN
#2 0.013633791 0.051352366
#3 0.004119696 -0.079145243
#4 0.048326634 0.025427131
#5 0.063617919 -0.167183286
#6 0.029620521 0.001678322
#7 0.066683589 -0.013222868
#8 0.024799990 -0.009103904
#9 -0.038602944 0.024281261
#10 -0.061155160 -0.031163995
Пример данных
data <- read.table(text =
" Dates APPL AMZN
1 7-01-2005 4.9464 42.32
2 2005-01-14 5.0143 44.55
3 2005-01-21 5.0350 41.16
4 2005-01-28 5.2843 42.22
5 2005-02-04 5.6314 35.72
6 2005-02-11 5.8007 35.78
7 2005-02-18 6.2007 35.31
8 2005-02-25 6.3564 34.99
9 2005-03-04 6.1157 35.85
10 2005-03-11 5.7529 34.75", header = T)