R - прошу обменяться опытом - страница 6

 
RandomWorker:

Загнал в R EURUSD. Вычислил модель и посчитал коэф. Как нарисовать график и совместить с котиром?


?plot ?lines ?points

Кстати, вы лишь оценили модель. Прогноз делается функцией predict.

n <- 100
n.ahead <- 15
ts <- sin(0.05 * pi * (1 : n)) + rnorm(n = n, mean = 0, sd = 0.1)
ts.model <- ar(ts, method = 'burg')
ts.pred <- predict(ts.model, n.ahead = n.ahead)
plot(
  1 : (n + n.ahead),
  c(ts, rep(NA, n.ahead)),
  t = 'l'
  )
lines(
  (n + 1) : (n + n.ahead),
  as.numeric(ts.pred$pred),
  col = 'gray'
  )
lines(
  (n + 1) : (n + n.ahead),
  as.numeric(ts.pred$pred) + as.numeric(ts.pred$se),
  col = 'gray',
  lty = 'dashed'
  )
lines(
  (n + 1) : (n + n.ahead),
  as.numeric(ts.pred$pred) - as.numeric(ts.pred$se),
  col = 'gray',
  lty = 'dashed'
  )
 
anonymous:


?plot ?lines ?points

Кстати, вы лишь оценили модель. Прогноз делается функцией predict.

Спасибо. Хотя для меня сложно. Попробую.

То, что Вы написали нарисует на истории?

 
anonymous:


?plot ?lines ?points

Кстати, вы лишь оценили модель. Прогноз делается функцией predict.

Немного разобрался.

Меня не интересует прогноз.

Имею модель, которую считаю индикатором что-то вроде МА. Как нарисовать ее на той истории, на которой вычислялась модель?

 
RandomWorker:

Как нарисовать ее на той истории, на которой вычислялась модель?


?plot ?lines

library(TTR)

x <- cumsum(rnorm(100))
x.ma <- EMA(x, 10)

plot(x, t = 'l')
lines(x.ma, col = 'red')
 
anonymous:


?plot ?lines

> x<-ar(eur[1:256],method="mle")
> x

Call:
ar(x = eur[1:256], method = "mle")

Coefficients:
1 2 3
0.9420 0.1955 -0.1644

Order selected 3 sigma^2 estimated as 2.73e-06
> plot(x, t = 'l')
Ошибка в xy.coords(x, y, xlabel, ylabel, log) :

'x' is a list, but does not have components 'x' and 'y'

Извините, но я должно быть выдающийся тупой.

 
RandomWorker:
> plot(x, t = 'l')


Попробуйте так: plot(eur[1:256], t='l')

 
anonymous:


Попробуйте так: plot(eur[1:256], t='l')

Без вопросов. Нарисовал. Но это вектор.

x<-ar(eur[1:256],method="mle")

Здесь х не вектор. Внутри него формула, по которой можно сделать вычисления, как в предикт, только на истории

 
RandomWorker:

Без вопросов. Нарисовал. Но это вектор.

x<-ar(eur[1:256],method="mle")

Здесь х не вектор. Внутри него формула, по которой можно сделать вычисления, как в предикт, только на истории


Команда ?ar подсказывает, что x - список, а не формула. Так же, как и class(x).

Команда str(x) показывает содержимое объекта.

fitted(x) дает NULL, зато в x есть компонента resid (остатки для исходных данных) - модельные значения всё-таки можно вычислить: (eur[1:256]-x$resid).

Изображаем график исторических данных: plot(eur[1:256], t='l')

Добавляем линию модельных значений: lines(eur[1:256]-x$resid, col='red')

 
anonymous:


Команда ?ar подсказывает, что x - список, а не формула. Так же, как и class(x).

Команда str(x) показывает содержимое объекта.

fitted(x) дает NULL, зато в x есть компонента resid (остатки для исходных данных) - модельные значения всё-таки можно вычислить: (eur[1:256]-x$resid).

Изображаем график исторических данных: plot(eur[1:256], t='l')

Добавляем линию модельных значений: lines(eur[1:256]-x$resid, col='red')

Получилось! спасибо.

Но как-то удивительно, что мы, имея формулу, косвенным образом вычислили ее значение. Предикт есть, результата подгонки нет.

 

Какая-то странная подгонка

> x<-ar.ols(eur[1:256], order.max = 20, demean = TRUE)

> x


Call:

ar.ols(x = eur[1:256], order.max = 20, demean = TRUE)


Coefficients:

1 2 3

0.9425 0.1967 -0.1647

Указал order.max = 20, а только три коэффициента. Я понимаю так:

eur = 0,9425 + 0,1967*eur(-1) + (-0,1647)*eur(-2)

А должно быть 20 членов?

Кроме этого менял разные параметры ar всегда три коэф и они очень слабо отличаются.

Просьба прокомментировать.

Причина обращения: