我的问题是:如果我有一个包含多个键(n_keys > 1)和一个或多个键变量(key_vars >= 1)的 tsibble,tidyverts 套件是否能够对每个时间序列执行 box_cox 转换(一个每个时间序列的 box_cox 转换)使用每个时间序列的相应 lambda_guerrero 值?下面是我(第一次)尝试一个最小可重现的例子。
例如:我想知道“步骤 5”是否可以使用 tidyverts 套件而不会收到错误。与其将 lambda1=0.36 应用于优惠、一般和聚合,如“步骤 4”中所见,没有错误,我想将 0.25 应用于优惠,0.66 应用于一般,0.36 应用于聚合,如果可能的话。
谢谢!
library(tidyverse)
library(lubridate)
library(tsibble)
library(tsibbledata)
library(fabletools)
library(fable)
library(feasts)
library(distributional)
第1步:一键,无需转换:
tsibbledata::PBS %>% summarize(Cost = sum(Cost)) %>% autoplot(Cost)
第2步:一键,转换:
类似于 FPP3 第 3.1 章中的示例。供参考:https ://otexts.com/fpp3/transformations.html
lambda1 <- tsibbledata::PBS %>%
summarize(Cost = sum(Cost)) %>%
features(Cost, features = guerrero) %>%
pull(lambda_guerrero) # [1] 0.3642197
tsibbledata::PBS %>% summarize(Cost = sum(Cost)) %>% autoplot(box_cox(Cost,lambda1))
第 3 步:三个键,无需转换:
tsibbledata::PBS %>% aggregate_key(Concession, Cost = sum(Cost)) %>% autoplot(Cost)
第 4 步:三个键,一个转换:
tsibbledata::PBS %>%
aggregate_key(Concession, Cost = sum(Cost)) %>%
autoplot(box_cox(Cost,lambda1))
第5步:三个键,三个转换:
lambda2 <- tsibbledata::PBS %>%
aggregate_key(Concession, Cost = sum(Cost)) %>%
features(Cost, features = guerrero) %>%
pull(lambda_guerrero) # [1] 0.2518823 0.6577645 0.3642197
lambda2
A tibble: 3 x 2
Concession lambda_guerrero
<chr*> <dbl>
1 Concessional 0.252
2 General 0.658
3 <aggregated> 0.364
tsibbledata::PBS %>%
aggregate_key(Concession, Cost = sum(Cost)) %>%
autoplot(box_cox(Cost,lambda2)) # caused an error