R 如何在ts图中绘制黄土线

R 如何在ts图中绘制黄土线,r,R,我花了好几个小时想办法让我的黄土生产线运转起来。问题是我知道的不多(让我们说几乎什么都不知道)。在大学里,我只需要在一门课上使用R。 我创建了一个假表,真正的表是供下载的 我必须画一个时间线图,效果出奇的好。但现在我必须添加两条不同跨度的黄土线。我的问题是我不知道这个命令是如何工作的。我的意思是,我知道它应该像黄土一样(…~…,数据=…)。在下面给定的代码中,我被卡住的步骤被标记为“什么属于这里” table <- structure(list( Months = c("19

我花了好几个小时想办法让我的黄土生产线运转起来。问题是我知道的不多(让我们说几乎什么都不知道)。在大学里,我只需要在一门课上使用R。 我创建了一个假表,真正的表是供下载的

我必须画一个时间线图,效果出奇的好。但现在我必须添加两条不同跨度的黄土线。我的问题是我不知道这个命令是如何工作的。我的意思是,我知道它应该像黄土一样(…~…,数据=…)。在下面给定的代码中,我被卡住的步骤被标记为“什么属于这里”

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")

table我们可以去掉
data
参数,因为时间序列是单变量的(只有一个变量)

公式
ts.obj~索引(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"))
library(zoo)#用于索引()
绘图(ts.obj)

趋势1如果您想使用
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")

欢迎来到SO。首先,值得学习一门以上的课程。第二,可能与ggplot(…)+geom_smooth(method='leash')一起使用,不过,如果您可以尽量避免将图像链接发布到代码中,则最好是。。。如果你想让我们看看你的代码,最好将代码作为codeBTW发布,否决这个问题的不是我。对于downvoter-为什么不留下评论并说明为什么要这样做。然后看看dput函数。@Tjebo我用原始代码尝试了它,但得到了一个建议,我应该制作这个表格,让每个人都更容易进行复制粘贴。这就是为什么原始代码与此处所写的相同,只是我获取数据的方式不同:)-也感谢您的帮助,但我认为我不允许使用ggplot2:((它写在说明中)-我现在将原始代码添加为well@Esinede1作为友好的暗示:)@AkselA谢谢你解释的答案。现在我能理解了,它工作得非常好。你救了我的作业:)。我完全走错路了。我将它与数字(time(ts.obj))一起使用。顺便说一句,很抱歉反应太晚了,我工作了一整天,只有在有人向我解释这个好的解决方案时,我才能马上看。它看起来比我的好多了。我也试过了,但很不幸,我不被允许使用它:(。
 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()