在 R 中以设定的增长率显示多个位置的未来值
Show future values for multiple locations with set growth rate in R
如果我已经为多个位置设置了数据(例如销售额)并且知道它们每周增加 10%,我将如何将其扩展到说 - 52 周后(显示每个位置的值)周)?
我以前会在 excel 中使用公式将日期增加 7 天,然后将每个位置的前一周增加 10%。我在猜测时间序列分析的一些东西 - 我确实看过 tsibble
和其他一些预测包 - 但找不到任何可以为每周增加的数据提供额外数据的东西。
我在下面提供了一个示例,说明现有几周的数据。
期望的结果将与下面的现有数据相同,但只是将每个位置再延长 52 周,而不是仅仅延长 3 周。
library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.4.4
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(reprex)
#> Warning: package 'reprex' was built under R version 3.4.4
ex_data <-
tibble::tribble(
~location, ~date, ~sales,
1L, "5/11/2019", 50,
2L, "5/11/2019", 45,
3L, "5/11/2019", 35,
4L, "5/11/2019", 20,
5L, "5/11/2019", 15,
1L, "5/18/2019", 55,
2L, "5/18/2019", 49.5,
3L, "5/18/2019", 38.5,
4L, "5/18/2019", 22,
5L, "5/18/2019", 16.5,
1L, "5/25/2019", 60.5,
2L, "5/25/2019", 54.45,
3L, "5/25/2019", 42.35,
4L, "5/25/2019", 24.2,
5L, "5/25/2019", 18.15
)
使用 dplyr
,您可以首先使用 expand.grid
创建整个数据框,包括 rep
和 seq
的日期,然后计算预测值。
df <- expand.grid(location = c("a", "b", "c", "d"),
week = seq(0, 51, 1)) %>%
mutate(date = rep(seq(as.Date("5/11/2019", "%m/%d/%Y"),
as.Date("5/06/2020", "%m/%d/%Y"),
by = "1 week" ), each = 4)) %>%
mutate(value = c(5, 10, 15, 20)) %>%
mutate(fc_value = value*(1.1) ^ week)
如果我已经为多个位置设置了数据(例如销售额)并且知道它们每周增加 10%,我将如何将其扩展到说 - 52 周后(显示每个位置的值)周)?
我以前会在 excel 中使用公式将日期增加 7 天,然后将每个位置的前一周增加 10%。我在猜测时间序列分析的一些东西 - 我确实看过 tsibble
和其他一些预测包 - 但找不到任何可以为每周增加的数据提供额外数据的东西。
我在下面提供了一个示例,说明现有几周的数据。
期望的结果将与下面的现有数据相同,但只是将每个位置再延长 52 周,而不是仅仅延长 3 周。
library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.4.4
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(reprex)
#> Warning: package 'reprex' was built under R version 3.4.4
ex_data <-
tibble::tribble(
~location, ~date, ~sales,
1L, "5/11/2019", 50,
2L, "5/11/2019", 45,
3L, "5/11/2019", 35,
4L, "5/11/2019", 20,
5L, "5/11/2019", 15,
1L, "5/18/2019", 55,
2L, "5/18/2019", 49.5,
3L, "5/18/2019", 38.5,
4L, "5/18/2019", 22,
5L, "5/18/2019", 16.5,
1L, "5/25/2019", 60.5,
2L, "5/25/2019", 54.45,
3L, "5/25/2019", 42.35,
4L, "5/25/2019", 24.2,
5L, "5/25/2019", 18.15
)
使用 dplyr
,您可以首先使用 expand.grid
创建整个数据框,包括 rep
和 seq
的日期,然后计算预测值。
df <- expand.grid(location = c("a", "b", "c", "d"),
week = seq(0, 51, 1)) %>%
mutate(date = rep(seq(as.Date("5/11/2019", "%m/%d/%Y"),
as.Date("5/06/2020", "%m/%d/%Y"),
by = "1 week" ), each = 4)) %>%
mutate(value = c(5, 10, 15, 20)) %>%
mutate(fc_value = value*(1.1) ^ week)