如何绘制ts图中的黄土线

时间:2018-05-22 18:07:02

标签: r

我试着弄清楚如何让我的黄土线工作。问题是我不太了解(让我们说什么都没有)。我只需要在大学里用一门课程。 我创建了一个假表,真正的表可供下载here

我必须制作出令人惊讶的时间线图。但现在我必须添加两条不同跨度的黄土线。我的问题是我不知道命令是如何工作的。我的意思是我知道它应该像黄土一样(..~ ..,data = ..)。我被卡住的那一步在下面给出的代码中标有“WHAT BELONGS HERE”。

table <- structure(list(
  Months = c("1980-06", "1980-07", "1980-08", "1980-09", 
             "1980-10", "1980-11", "1980-12", "1981-01"), 
  Total = c(75000, 70000, 60000, 73000, 72000, 71000, 76000, 71000)),
  .Names = c("Monts", "Total of Killed Pigs"), 
  row.names = c(NA, 4L), class = "data.frame")

ts.obj <- ts(table$`Total of Killed Pigs`, start = c(1980, 1), frequency = 2)

plot(ts.obj)

trend1 <- loess(# **WHAT BELONGS HERE?**, data = table, span =1)

predict1 <- predict(trend1)

lines(predict1, col ="blue")

这是我的原始代码:

  

obj&lt; - read.csv(file =“PATH / monthly-total-number-of-pigs-sla.csv”,header = TRUE,sep =“,”)

     

ts.obj&lt; - ts(obj $ Monthly.total.number.of.pigs.slaughtered.in.Victoria..Jan.1980 ... August.1995,start = c(1980,1),frequency = 12)

     

积(ts.obj)

     

trend1&lt; - loess(这里有什么?,data = obj,span = 1)

     

预测1&lt; - 预测(趋势1)   行(predict1,col =“blue”)

2 个答案:

答案 0 :(得分:1)

我们可以取消data参数,因为时间序列是单变量的(只是一个变量)。

公式ts.obj ~ index(ts.obj)可以理解为

  

作为时间的功能

由于ts.obj会为您提供值,而index(ts.obj)会为您提供这些值的时间索引,而代字号~指定第一个是函数或依赖在另一个。

library(zoo) # for index()

plot(ts.obj)

trend1 <- loess(ts.obj ~ index(ts.obj), span=1)
trend2 <- loess(ts.obj ~ index(ts.obj), span=2)
trend3 <- loess(ts.obj ~ index(ts.obj), span=3)

pred <- sapply(list(trend1, trend2, trend3), predict)

matlines(index(ts.obj), pred, lty=1, col=c("blue", "red", "orange"))

zoo并非严格要求。如果您将index(ts.obj)替换为as.numeric(time(ts.obj)),我认为应该没问题。

enter image description here

答案 1 :(得分:0)

如果您想要使用ggplot2

 library(ggplot2)
 library(dplyr)

 table <- structure(list(
   Months = c("1980-06", "1980-07", "1980-08", "1980-09", 
              "1980-10", "1980-11", "1980-12", "1981-01"), 
   Total = c(75000, 70000, 60000, 73000, 72000, 71000, 76000, 71000)),
   .Names = c("Months", "Total"), 
   row.names = c(NA, 8L), class = "data.frame")

更改为正确的日期:

 table <- table %>% mutate(Months = as.Date(paste0(Months,"-01")))

简介:

 ggplot(table, aes(x=Months, y=Total)) + 
   geom_line() +
   geom_smooth(span=1, se= FALSE, color ="red") +
   geom_smooth(span=2, se= FALSE, color ="green") +
   geom_smooth(span=3, se= FALSE) +
   theme_minimal()

enter image description here