线性回归线无法在r中显示时间序列图

时间:2017-11-16 03:49:19

标签: r plot ggplot2 time-series xts

我是绘制时间序列的新手。我下载了时间序列数据并计算了一个线性方程式,我想在时间序列图中添加它。我想在图中显示年份,所以我使用index(stk)作为x轴输入。

代码:

WebRTC

我知道这是使用索引(stk)的情节,我怎么能保持情节的x轴在日期,我可以使用plot.xts或其他像ggplot2来做同样的事情吗?请指教,非常感谢。

2 个答案:

答案 0 :(得分:1)

在基础r图或ggplot2中做你想要的情节并不是很难,这就是你的意思:

plot(index(stk), log(Cl(stk)), type="l", lwd=3, las=1)
lines(x = index(stk.lm1$fitted.values), y = stk.lm1$fitted.values,col = "blue")

对于基础r图我添加了一行,其中包含我使用$签名和主题日期提取的线性回归的拟合值。考虑到lm尊重数据结构,因此结果为xts

library(ggplot2)
ggplot(stk, aes(x = index(stk), y = as.numeric(log(Cl(stk)))))+geom_line(lwd=1)+
  geom_line(aes(x = index(stk.lm1$fitted.values), y = stk.lm1$fitted.values),col = "blue")+
  labs(x = "Date", y = "Log Price")

对于ggplot2非常相似。首先,您必须使用ggplot来定义数据和美学(aes),然后添加一行geom_line,对于额外的行,我使用了此命令,使用基本r函数以相同的方式在新aes中定义新行。

答案 1 :(得分:1)

这是一个ggplot解决方案。你不应该自己计算线性回归系数:

# convert stk to data frame & specify your x-axis variable explicitly
stk.df <- as.data.frame(stk)
stk.df$Date <- as.Date(rownames(stk.df))

# plot
ggplot(stk.df,
       aes(x = Date, y = log(AAPL.Close))) +
  geom_line() +
  geom_smooth(method = "lm", se = FALSE) +             
  labs(x = "Year", y = "log(AAPL's closing value)") +
  theme_bw()

geom_smooth行负责回归。如果要在该行周围包含置信区间,请设置se = TRUE

plot