Измените столбец в кадре данных tribble, применив преобразование Бокса-Кокса

Я большой поклонник пакетов Хайндмана, но наткнулся на преобразование Бокса-Кокса.

У меня есть датафрейм

class(chicago_sales)
[1] "tbl_ts"     "tbl_df"     "tbl"        "data.frame"

Я пытаюсь изменить дополнительный столбец, в котором будет преобразована переменная Mean_price.

foo <- chicago_sales %>% 
mutate(bc = BoxCox(x = chicago_sales$Median_price, lambda = 
BoxCox.lambda(chicago_sales$Median_price)))

дает мне некоторый результат (возможно, тоже неправильный) и не может применить autoplot.

Я также пытался применить код из книги Хайндмана, но безуспешно.

Что я делаю не так? Спасибо!

ОБНОВЛЕНО:


person Anakin Skywalker    schedule 04.11.2020    source источник


Ответы (1)


Проблема внутри tribbles, когда вы используете dplyr, вы не вызываете chicago_sales$Median_price, а просто Median_price. При использовании tsibbles я бы посоветовал использовать fable и fabletools, но если вы используете прогноз, он должен работать следующим образом:

library(tsibble)
library(dplyr)
library(forecast)

pedestrian %>% 
  mutate(bc = BoxCox(Count, BoxCox.lambda(Count)))
# A tsibble: 66,037 x 6 [1h] <Australia/Melbourne>
# Key:       Sensor [4]
   Sensor         Date_Time           Date        Time Count    bc
   <chr>          <dttm>              <date>     <int> <int> <dbl>
 1 Birrarung Marr 2015-01-01 00:00:00 2015-01-01     0  1630 11.3 
 2 Birrarung Marr 2015-01-01 01:00:00 2015-01-01     1   826  9.87
 3 Birrarung Marr 2015-01-01 02:00:00 2015-01-01     2   567  9.10
 4 Birrarung Marr 2015-01-01 03:00:00 2015-01-01     3   264  7.65
 5 Birrarung Marr 2015-01-01 04:00:00 2015-01-01     4   139  6.52
 6 Birrarung Marr 2015-01-01 05:00:00 2015-01-01     5    77  5.54
 7 Birrarung Marr 2015-01-01 06:00:00 2015-01-01     6    44  4.67
 8 Birrarung Marr 2015-01-01 07:00:00 2015-01-01     7    56  5.04
 9 Birrarung Marr 2015-01-01 08:00:00 2015-01-01     8   113  6.17
10 Birrarung Marr 2015-01-01 09:00:00 2015-01-01     9   166  6.82
# ... with 66,027 more rows

Я использовал встроенный набор данных из пакета tsibble, поскольку вы не предоставили вывод chicago_sales.

person phiver    schedule 04.11.2020
comment
Спасибо, я действительно сделал это, но цифры меня действительно сильно напугали. Пожалуйста, смотрите мой принтскрин. Я думал, что это было слишком высоко. - person Anakin Skywalker; 04.11.2020
comment
@AnakinSkywalker, проверь лямбу. Кажется, что он слишком высок. Проверьте с помощью BoxCox.lambda(chicago_sales$Median_price), чтобы узнать, какую лямбду он использует. В примере я использовал лямбда-возврат 0,108. Но, глядя на ваш результат, он ближе к 2, что приведет к гораздо более высоким значениям в преобразовании bc. Если вы посмотрите книгу по прогнозированию версии 2, вы увидите, как bc используется с прогнозом. - person phiver; 04.11.2020
comment
моя лямбда 1.484661. Я проверил все возможные ресурсы и не уверен, что не так. Мои данные имеют очень сильный сезонный тренд - person Anakin Skywalker; 10.11.2020