library(ggplot2)
Что делали
- Взяли временные ряды цен нефти и рубля.
- Расчитали временные ряды дневных приращений для нефти и рубля
- построил графики зависимости прирощений
- добавили временной сдвиг между рядами и нарисовали те же графики
rm(list=ls()) # clears out memory
usd.data="./QUANDL_USDRUB.csv"
oil.data="./QUANDL_OPECOIL.csv"
url_usd="https://www.quandl.com/api/v1/datasets/CURRFX/USDRUB.csv?trim_start=2014-08-01"
download.file(url_usd, usd.data, "wget")
url_oil="https://www.quandl.com/api/v1/datasets/OPEC/ORB.csv?trim_start=2014-08-01"
download.file(url_oil, oil.data, "wget")
usd.data <- read.csv(usd.data, header = TRUE, sep = ",")
oil.data <- read.csv(oil.data, header = TRUE, sep = ",")
merged.data <- merge(usd.data,oil.data, by="Date")
rub_vs_oil = data.frame(DATE=merged.data$Date,
RUB=merged.data$Rate,
OIL=merged.data$Value)
corShifted <- function(shift = 0, ds){
a <- ds$RUB[seq(1 + shift, nrow(ds))]
b <- ds$OIL[seq(1, nrow(ds) - shift)]
cor(a,b)
}
corShiftedVec <- function(vec, ds) {
apply(data.frame(x=vec), 1, corShifted, ds)
}

Построим картинки зависимости прирощений
deltaOIL <- rub_vs_oil$OIL[seq(2, nrow(rub_vs_oil))] - rub_vs_oil$OIL[seq(1, nrow(rub_vs_oil) - 1)]
deltaRUB <- rub_vs_oil$RUB[seq(2, nrow(rub_vs_oil))] - rub_vs_oil$RUB[seq(1, nrow(rub_vs_oil) - 1)]
ggplot() + geom_point(data=data.frame(RUB=deltaRUB, OIL=deltaOIL), aes(x=OIL, y=RUB), size=1, colour="red") + xlab('OIL изменение цены, USD') + ylab('RUB изменение цены, USD') + ggtitle(paste('Нету сдвига'))

ff <- function(shift){
deltaOIL <- rub_vs_oil$OIL[seq(2, nrow(rub_vs_oil))] - rub_vs_oil$OIL[seq(1, nrow(rub_vs_oil) - 1)]
deltaRUB <- rub_vs_oil$RUB[seq(2, nrow(rub_vs_oil))] - rub_vs_oil$RUB[seq(1, nrow(rub_vs_oil) - 1)]
a <- deltaRUB[seq(1 + shift, length(deltaOIL))]
b <- deltaOIL[seq(1, length(deltaOIL) - shift)]
ggplot() + geom_point(data=data.frame(RUB=a, OIL=b), aes(x=OIL, y=RUB), size=1, colour="red") + xlab('OIL изменение цены, USD') + ylab('RUB изменение цены, USD') + ggtitle(paste('Сдвиг ', shift, ' дней'))
}
ff(1)

ff(2)

ff(3)

ff(4)

ff(5)

ff(6)

ff(7)

ff(8)

ff(9)

ff(10)

ff(11)

ff(12)

ff(13)

ff(14)

ff(15)

ff(16)

# ggplot(data.frame(x = seq(0,60)), aes(x)) + stat_function(fun=corShiftedVec, n=60, args=list(data.frame(RUB=deltaRUB, OIL=deltaOIL))) + ggtitle("Как изменяется корреляция приращений RUB и OIL, если сдвигать время") + xlab("Сдвиг, количестве дней") + ylab('cor(delta_RUB, delta_OIL)')
#ggplot(data.frame(RUB=deltaRUB), aes(x=RUB)) + geom_density()
#ggplot(data.frame(OIL=deltaOIL), aes(x=OIL)) + geom_density()
#summary(aov(RUB ~ OIL, data=data.frame(RUB=deltaRUB, OIL=deltaOIL)))
Заключение
Визуально, знание изменения цены на нефть, ни дает ни какой информации о том как изменится цена рубля, ни в тот же день ни в последующие.
LS0tCnRpdGxlOiAi0JrQsNC6INC80LXQvdGP0LXRgtGB0Y8g0LLQuNC30LDRg9C70YzQvdC+INC30LDQstC40YHQuNC80L7RgdGC0Ywg0L/RgNC40YDQsNGJ0LXQvdC40Lkg0YDRg9Cx0LvRjyDQvtGCINC90LXRhNGC0Lgg0L/RgNC4INCy0YDQtdC80LXQvdC90L7QvCDRgdC00LLQuNCz0LUiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCmBgYAoKCiMjIyMg0KfRgtC+INC00LXQu9Cw0LvQuAoKICog0JLQt9GP0LvQuCDQstGA0LXQvNC10L3QvdGL0LUg0YDRj9C00Ysg0YbQtdC9INC90LXRhNGC0Lgg0Lgg0YDRg9Cx0LvRjy4gCiAqINCg0LDRgdGH0LjRgtCw0LvQuCDQstGA0LXQvNC10L3QvdGL0LUg0YDRj9C00Ysg0LTQvdC10LLQvdGL0YUg0L/RgNC40YDQsNGJ0LXQvdC40Lkg0LTQu9GPINC90LXRhNGC0Lgg0Lgg0YDRg9Cx0LvRjwogKiDQv9C+0YHRgtGA0L7QuNC7INCz0YDQsNGE0LjQutC4INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L/RgNC40YDQvtGJ0LXQvdC40LkKICog0LTQvtCx0LDQstC40LvQuCDQstGA0LXQvNC10L3QvdC+0Lkg0YHQtNCy0LjQsyDQvNC10LbQtNGDINGA0Y/QtNCw0LzQuCDQuCDQvdCw0YDQuNGB0L7QstCw0LvQuCDRgtC1INC20LUg0LPRgNCw0YTQuNC60LgKCgpgYGB7cn0KCnJtKGxpc3Q9bHMoKSkgIyBjbGVhcnMgb3V0IG1lbW9yeQoKdXNkLmRhdGE9Ii4vUVVBTkRMX1VTRFJVQi5jc3YiCm9pbC5kYXRhPSIuL1FVQU5ETF9PUEVDT0lMLmNzdiIKCnVybF91c2Q9Imh0dHBzOi8vd3d3LnF1YW5kbC5jb20vYXBpL3YxL2RhdGFzZXRzL0NVUlJGWC9VU0RSVUIuY3N2P3RyaW1fc3RhcnQ9MjAxNC0wOC0wMSIKZG93bmxvYWQuZmlsZSh1cmxfdXNkLCB1c2QuZGF0YSwgIndnZXQiKQoKdXJsX29pbD0iaHR0cHM6Ly93d3cucXVhbmRsLmNvbS9hcGkvdjEvZGF0YXNldHMvT1BFQy9PUkIuY3N2P3RyaW1fc3RhcnQ9MjAxNC0wOC0wMSIKZG93bmxvYWQuZmlsZSh1cmxfb2lsLCBvaWwuZGF0YSwgIndnZXQiKQoKCnVzZC5kYXRhIDwtIHJlYWQuY3N2KHVzZC5kYXRhLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiLCIpCm9pbC5kYXRhIDwtIHJlYWQuY3N2KG9pbC5kYXRhLCBoZWFkZXIgPSBUUlVFLCBzZXAgPSAiLCIpCgpgYGAKCmBgYHtyfQptZXJnZWQuZGF0YSA8LSBtZXJnZSh1c2QuZGF0YSxvaWwuZGF0YSwgYnk9IkRhdGUiKQpydWJfdnNfb2lsID0gZGF0YS5mcmFtZShEQVRFPW1lcmdlZC5kYXRhJERhdGUsIAogICAgICAgICAgICAgICAgICAgICAgICBSVUI9bWVyZ2VkLmRhdGEkUmF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgT0lMPW1lcmdlZC5kYXRhJFZhbHVlKQoKY29yU2hpZnRlZCA8LSBmdW5jdGlvbihzaGlmdCA9IDAsIGRzKXsKICBhIDwtIGRzJFJVQltzZXEoMSArIHNoaWZ0LCBucm93KGRzKSldCiAgYiA8LSBkcyRPSUxbc2VxKDEsIG5yb3coZHMpIC0gc2hpZnQpXQogIGNvcihhLGIpCn0KCmNvclNoaWZ0ZWRWZWMgPC0gZnVuY3Rpb24odmVjLCBkcykgewogIGFwcGx5KGRhdGEuZnJhbWUoeD12ZWMpLCAxLCBjb3JTaGlmdGVkLCBkcykKfQoKYGBgCgoKYGBge3IgZWNobz1GQUxTRX0KZGF0YV9wb2ludHMgPC0gZ2dwbG90KCkgKyBnZW9tX3BvaW50KGRhdGE9cnViX3ZzX29pbCwgYWVzKHg9UlVCLCB5PU9JTCksIHNpemU9MSwgY29sb3VyPSJyZWQiKSArIGdndGl0bGUoItCU0LDQvdC90YvQtSDRgSDQsNCy0LPRg9GB0YLQsCAyMDE0IikgKyB5bGFiKCfQptC10L3QsCDQvdC10YTRgtC4JykgKyB4bGFiKCfQptC10L3QsCDRgNGD0LHQu9GPJykKZGF0YV9wb2ludHMKYGBgCgojIyMg0J/QvtGB0YLRgNC+0LjQvCDQutCw0YDRgtC40L3QutC4INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L/RgNC40YDQvtGJ0LXQvdC40LkKCmBgYHtyfQpkZWx0YU9JTCA8LSBydWJfdnNfb2lsJE9JTFtzZXEoMiwgbnJvdyhydWJfdnNfb2lsKSldIC0gcnViX3ZzX29pbCRPSUxbc2VxKDEsIG5yb3cocnViX3ZzX29pbCkgLSAxKV0KZGVsdGFSVUIgPC0gcnViX3ZzX29pbCRSVUJbc2VxKDIsIG5yb3cocnViX3ZzX29pbCkpXSAtIHJ1Yl92c19vaWwkUlVCW3NlcSgxLCBucm93KHJ1Yl92c19vaWwpIC0gMSldCmdncGxvdCgpICsgZ2VvbV9wb2ludChkYXRhPWRhdGEuZnJhbWUoUlVCPWRlbHRhUlVCLCBPSUw9ZGVsdGFPSUwpLCBhZXMoeD1PSUwsIHk9UlVCKSwgc2l6ZT0xLCBjb2xvdXI9InJlZCIpICsgeGxhYignT0lMINC40LfQvNC10L3QtdC90LjQtSDRhtC10L3RiywgVVNEJykgKyB5bGFiKCdSVUIg0LjQt9C80LXQvdC10L3QuNC1INGG0LXQvdGLLCBVU0QnKSArIGdndGl0bGUocGFzdGUoJ9Cd0LXRgtGDINGB0LTQstC40LPQsCcpKQoKCmZmIDwtIGZ1bmN0aW9uKHNoaWZ0KXsKICBkZWx0YU9JTCA8LSBydWJfdnNfb2lsJE9JTFtzZXEoMiwgbnJvdyhydWJfdnNfb2lsKSldIC0gcnViX3ZzX29pbCRPSUxbc2VxKDEsIG5yb3cocnViX3ZzX29pbCkgLSAxKV0KICBkZWx0YVJVQiA8LSBydWJfdnNfb2lsJFJVQltzZXEoMiwgbnJvdyhydWJfdnNfb2lsKSldIC0gcnViX3ZzX29pbCRSVUJbc2VxKDEsIG5yb3cocnViX3ZzX29pbCkgLSAxKV0KICAKICBhIDwtIGRlbHRhUlVCW3NlcSgxICsgc2hpZnQsIGxlbmd0aChkZWx0YU9JTCkpXQogIGIgPC0gZGVsdGFPSUxbc2VxKDEsIGxlbmd0aChkZWx0YU9JTCkgLSBzaGlmdCldCiAgCiAgZ2dwbG90KCkgKyBnZW9tX3BvaW50KGRhdGE9ZGF0YS5mcmFtZShSVUI9YSwgT0lMPWIpLCBhZXMoeD1PSUwsIHk9UlVCKSwgc2l6ZT0xLCBjb2xvdXI9InJlZCIpICsgeGxhYignT0lMINC40LfQvNC10L3QtdC90LjQtSDRhtC10L3RiywgVVNEJykgKyB5bGFiKCdSVUIg0LjQt9C80LXQvdC10L3QuNC1INGG0LXQvdGLLCBVU0QnKSArIGdndGl0bGUocGFzdGUoJ9Ch0LTQstC40LMgJywgc2hpZnQsICcg0LTQvdC10LknKSkKfQoKZmYoMSkKZmYoMikKZmYoMykKZmYoNCkKZmYoNSkKZmYoNikKZmYoNykKZmYoOCkKZmYoOSkKZmYoMTApCmZmKDExKQpmZigxMikKZmYoMTMpCmZmKDE0KQpmZigxNSkKZmYoMTYpCgoKIyBnZ3Bsb3QoZGF0YS5mcmFtZSh4ID0gc2VxKDAsNjApKSwgYWVzKHgpKSArIHN0YXRfZnVuY3Rpb24oZnVuPWNvclNoaWZ0ZWRWZWMsIG49NjAsIGFyZ3M9bGlzdChkYXRhLmZyYW1lKFJVQj1kZWx0YVJVQiwgT0lMPWRlbHRhT0lMKSkpICsgZ2d0aXRsZSgi0JrQsNC6INC40LfQvNC10L3Rj9C10YLRgdGPINC60L7RgNGA0LXQu9GP0YbQuNGPINC/0YDQuNGA0LDRidC10L3QuNC5IFJVQiDQuCBPSUwsINC10YHQu9C4INGB0LTQstC40LPQsNGC0Ywg0LLRgNC10LzRjyIpICsgeGxhYigi0KHQtNCy0LjQsywg0LrQvtC70LjRh9C10YHRgtCy0LUg0LTQvdC10LkiKSArIHlsYWIoJ2NvcihkZWx0YV9SVUIsIGRlbHRhX09JTCknKQoKI2dncGxvdChkYXRhLmZyYW1lKFJVQj1kZWx0YVJVQiksIGFlcyh4PVJVQikpICsgZ2VvbV9kZW5zaXR5KCkKI2dncGxvdChkYXRhLmZyYW1lKE9JTD1kZWx0YU9JTCksIGFlcyh4PU9JTCkpICsgZ2VvbV9kZW5zaXR5KCkKCiNzdW1tYXJ5KGFvdihSVUIgfiBPSUwsIGRhdGE9ZGF0YS5mcmFtZShSVUI9ZGVsdGFSVUIsIE9JTD1kZWx0YU9JTCkpKQoKYGBgCgoKIyMjIyDQl9Cw0LrQu9GO0YfQtdC90LjQtQoK0JLQuNC30YPQsNC70YzQvdC+LCDQt9C90LDQvdC40LUg0LjQt9C80LXQvdC10L3QuNGPINGG0LXQvdGLINC90LAg0L3QtdGE0YLRjCwg0L3QuCDQtNCw0LXRgiDQvdC4INC60LDQutC+0Lkg0LjQvdGE0L7RgNC80LDRhtC40Lgg0L4g0YLQvtC8INC60LDQuiDQuNC30LzQtdC90LjRgtGB0Y8g0YbQtdC90LAg0YDRg9Cx0LvRjywg0L3QuCDQsiDRgtC+0YIg0LbQtSDQtNC10L3RjCDQvdC4INCyINC/0L7RgdC70LXQtNGD0Y7RidC40LUuCg==