用R找出两条直线的夹角,已知斜率和截距系数

4

我有一个时间序列:

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)

我该如何管理它?

这是我的图表:带有两条红线的绘图


1
提示:您可以忽略截距。 - Sven Hohenstein
1
angle = atan(abs((m2-m1)/(1+m1*m2))) - Nishanth
1个回答

3

因为你的第二个斜率是0,所以计算这条线和斜率为21.27031的线之间的角度非常容易:

atan(21.27031) * 180 / pi

# [1] 87.30828

这条线与x轴之间的夹角约为87度。


谢谢你的回答。我已经计算过了。但是请看这张图片: http://gyazo.com/85aa9963769fb9f60a4545a328162ed2不可能有87度的角度。 - Marta
3
没有x轴标签,你无法从图形中看到角度。请注意,你可以更改图的高度和宽度,虽然角度始终相同,但它可能会看起来不同。 - Sven Hohenstein
非常感谢!但我还有一个问题。也许你可以帮我解决吗?我有另一个时间序列 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 - Marta
@SvenHohenstein,图形看起来一样,但斜率为0.001841031。为什么会这样? - Marta
1
@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))。现在,您可以看到斜率非常小。 - Sven Hohenstein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接