Привет. Я отчаянно пытаюсь построить несколько временных рядов с 12-месячной скользящей средней.
Вот пример с двумя временными рядами плотности цветов и семян. (У меня гораздо больше временных рядов для работы ...)
#datasets
taxon <- c(rep("Flower",36),rep("Seeds",36))
density <- c(seq(20, 228, length=36),seq(33, 259, length=36))
year <- rep(c(rep("2000",12),rep("2001",12),rep("2002",12)),2)
ymd <- c(rep(seq(ymd('2000-01-01'),ymd('2002-12-01'), by = 'months'),2))
#dataframe
df <- data.frame(taxon, density, year, ymd)
library(forecast)
#create function that does a Symmetric Weighted Moving Average (2x12) of the monthly log density of flowers and seeds
ma_12 <- function(x) {
ts_x <- ts(x, freq = 12, start = c(2000, 1), end = c(2002, 12)) # transform to time-series object as it is necessary to run the ma function
return(ma(log(ts_x + 1), order = 12, centre = T))
}
#trial of the function
ma_12(df[df$taxon=="Flower",]$density) #works well
library(ggplot2)
#Trying to plot flower and seeds log density as two time series
ggplot(df,aes(x=year,y=density,colour=factor(taxon),group=factor(taxon))) +
stat_summary(fun.y = ma_12, geom = "line") #or geom = "smooth"
#Warning message:
#Computation failed in `stat_summary()`:
#invalid time series parameters specified
Функция ma_12 работает правильно. Проблема возникает, когда я пытаюсь построить оба временных ряда (Цветок и Семя), используя ggplot. Я не могу определить оба таксона как разные временные ряды и применить к ним скользящее среднее. Кажется, это связано с "stat_summary" ...
Любая помощь будет приветствоваться! Заранее спасибо
Примечание. Следующая ссылка весьма полезна, но не может помочь мне напрямую, поскольку я хочу применить определенную функцию и построить ее в соответствии с уровнями одной групповой переменной. Пока я не могу найти никакого решения. В любом случае, спасибо, что предложили мне это.
Несколько временных рядов на одном графике