我生成了这样一个数据框架:
> library(prophet)
> Date <- rep(seq(as.Date("2010-01-01"), as.Date("2014-01-01"), "years"), 3)
> Group <- rep(LETTERS[1:3], each = 5)
> Value <- runif(15, 0, 100)
> Expln <- runif(15, 0, 100)
>
> df <- data.frame(Date, Group, Value, Expln)
>
> df
Date Group Value Expln
1 2010-01-01 A 93.019346 39.446235
2 2011-01-01 A 3.389022 38.371961
3 2012-01-01 A 3.719541 93.922155
4 2013-01-01 A 11.267414 64.716674
5 2014-01-01 A 84.978091 18.808735
6 2010-01-01 B 13.723934 54.930282
7 2011-01-01 B 84.698500 52.628834
8 2012-01-01 B 23.743542 61.603183
9 2013-01-01 B 45.178280 72.345074
10 2014-01-01 B 80.779443 96.847733
11 2010-01-01 C 67.818529 9.020017
12 2011-01-01 C 46.020754 83.168086
13 2012-01-01 C 99.266430 61.400123
14 2013-01-01 C 17.218871 91.511166
15 2014-01-01 C 8.624025 39.995071
我尝试将prophet
应用于单个组,它给出了一个错误:
> dfx = df[df$Group == "A",]
> dfx = dfx[c(1, 3, 4)]
> dfx
Date Value Expln
1 2010-01-01 93.019346 39.44623
2 2011-01-01 3.389022 38.37196
3 2012-01-01 3.719541 93.92216
4 2013-01-01 11.267414 64.71667
5 2014-01-01 84.978091 18.80874
> m = prophet()
> m = add_regressor(m, 'Expln')
> m = fit.prophet(m, dfx)
Error in fit.prophet(m, dfx) :
Dataframe must have columns 'ds' and 'y' with the dates and values respectively.
为什么我会有这个错误?我怎么才能修好它呢?
发布于 2022-08-12 19:27:22
如前所述,我需要将Date
和Value
重命名为ds
和y
。
> library(prophet)
> Date <- rep(seq(as.Date("2010-01-01"), as.Date("2014-01-01"), "years"), 3)
> Group <- rep(LETTERS[1:3], each = 5)
> Value <- runif(15, 0, 100)
> Expln <- runif(15, 0, 100)
>
> df <- data.frame(ds = Date, Group, y = Value, Expln)
>
> df
ds Group y Expln
1 2010-01-01 A 44.907724 18.21944
2 2011-01-01 A 5.110549 88.22997
3 2012-01-01 A 41.627854 81.31806
4 2013-01-01 A 87.261591 31.91806
5 2014-01-01 A 82.931747 89.88972
6 2010-01-01 B 27.985192 53.98613
7 2011-01-01 B 82.574708 35.00410
8 2012-01-01 B 21.125819 56.96952
9 2013-01-01 B 12.400783 44.10640
10 2014-01-01 B 50.554773 49.89784
11 2010-01-01 C 2.086168 72.10425
12 2011-01-01 C 54.932624 58.57923
13 2012-01-01 C 52.649403 50.39760
14 2013-01-01 C 91.927291 56.70027
15 2014-01-01 C 25.771383 80.64624
> dfx = df[df$Group == "A",]
> dfx = dfx[c(1, 3, 4)]
> dfx
ds y Expln
1 2010-01-01 44.907724 18.21944
2 2011-01-01 5.110549 88.22997
3 2012-01-01 41.627854 81.31806
4 2013-01-01 87.261591 31.91806
5 2014-01-01 82.931747 89.88972
> m <- prophet()
> m <- add_regressor(m = m, name = 'Expln')
> m <- fit.prophet(m = m, df = df)
Disabling weekly seasonality. Run prophet with weekly.seasonality=TRUE to override this.
Disabling daily seasonality. Run prophet with daily.seasonality=TRUE to override this.
n.changepoints greater than number of observations. Using 11
https://stackoverflow.com/questions/73338564
复制相似问题