R найти угол между двумя линиями, когда есть коэффициенты наклона и пересечения

У меня есть таймсерия:

x

4557  9940  9855  9894 10142  9501  9532  9229  9169  9214  9347  9176  8951  9344  9873  9970
9139  9420  9476  9205  9271  8632  8730  9336  9150  9601 10012  9841  9951  9222  8799  9316
10087  9677  9154  9019 10549  9629  9131  9560 10246 10982 11748  9054  8690  9923

tt<-1:length(x)

plot(x, xaxt = "n", type = "l", xlab = NULL, ylab = NULL, col = "royalblue2", lwd = 2.3)

Я хочу добавить линейный тренд:

fit <- lm(x ~ tt)
co <- coef(fit)
co
    (Intercept)             tt 

    8940.23478           21.27031 

И тогда мне нужно найти угол между двумя красными линиями:

abline(8940.23478, 21.27031, col = "red", lwd = 2)
abline(8940.23478, 0, col = "red", lwd = 2)

Как я могу это сделать?

Вот мой график: График с двумя красными линиями


person Marta    schedule 18.02.2014    source источник
comment
Подсказка: вы можете игнорировать перехват.   -  person Sven Hohenstein    schedule 18.02.2014


Ответы (1)


Поскольку ваш второй уклон равен 0, вычисление угла между этой линией и линией с уклоном 21.27031 очень просто:

atan(21.27031) * 180 / pi

# [1] 87.30828

Угол между линией и осью x составляет около 87°.

person Sven Hohenstein    schedule 18.02.2014
comment
Спасибо за ответ. Я это уже вычислил. Но посмотрите на картинку: gyazo.com/85aa9963769fb9f60a4545a328162ed2 не может быть угла 87 градусов - person Marta; 18.02.2014
comment
@user3227114 user3227114 Без меток оси X вы не можете увидеть угол на графике. Обратите внимание, что вы можете изменить высоту и ширину графика, а угол может казаться другим, хотя он всегда один и тот же. - person Sven Hohenstein; 18.02.2014
comment
Большое спасибо! Но у меня все еще есть проблема. Может быть, вы поможете мне ее решить? I have another time serie x 1.133421 1.309256 1.322476 1.351425 1.319168 1.334070 1.323227 1.328096 1.321736 1.340243 1.348989 1.325523 1.321640 1.360659 1.366150 1.344534 1.327169 1.326433 1.372520 1.395546 1.365872 1.335496 1.380183 1.425236 1.330601 1.334444 1.314822 1.395691 1.393629 1.356322 1.285601 1.333727 1.358382 1.356309 1.339961 1.307129 1.331690 1.301070 1.290220 1.302197 1.497267 1.531415 1.549200 1.393307 1.324051 1.323692 - person Marta; 18.02.2014
comment
@SvenHohenstein График выглядит так же, но наклон равен 0,001841031. gyazo.com/ae2de73dcec3d95941b7c63746b2c68d Почему? - person Marta; 18.02.2014
comment
@user3227114 user3227114 Используйте эти команды, чтобы нарисовать график с одинаковыми пределами оси x и оси y: fit <- lm(x ~ seq_along(x)); co <- coef(fit); plot(x, type = "l", xlim = c(0, length(x)), ylim = c(0, length(x))); abline(co); abline(c(co[1], 0)). Теперь вы можете видеть, что наклон чрезвычайно мал. - person Sven Hohenstein; 18.02.2014