为什么“lines()”在R中的绘图上没有绘制任何东西?

时间:2014-04-22 07:43:08

标签: r optimization plot dataset time-series

我有以下代码,但lines()没有在plot.ts(nhtemp)创建的情节上绘制任何内容。我不想使用holtwinters功能。

require(datasets)
data(nhtemp)
str(nhtemp)
mona.function <- function(beta, y=nhtemp){
  y.hat=numeric(length(y))
  y.hat[1]=y[1]
  y.hat[2]=y[2]
  for (i in 3:length(y))
  {
    y.hat[i]=beta*y[i-1]+(1-beta)*y.hat[i-1]
  }
  sq.sum=0
  for (i in 2:length(y))
  {
    sq.sum = sq.sum + (y[i]-y.hat[i])^2

  }
  plot.ts(nhtemp)
  lines(y.hat,col="red")
  return(sq.sum/length(y))
}
opt.result=optimize(mona.function, c(0,1), maximum=FALSE)

这是我得到的结果: enter image description here

这是我期望实现的情节: enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用

进行绘图
lines(ts(y.hat, start = start(nhtemp)[1], end = end(nhtemp)[1]), col = "red")

这样,您构建的时间序列以nhtemp的相同方式开始和结束。

答案 1 :(得分:1)

你可以尝试:

x <- attributes(nhtemp)$tsp
x <- seq(x[1], x[2], by=x[3])
lines(x, y.hat,col="red")

HTH