{"action":"created","issue":{"url":"https://api.github.com/repos/tidyverts/fable/issues/77","repository_url":"https://api.github.com/repos/tidyverts/fable","labels_url":"https://api.github.com/repos/tidyverts/fable/issues/77/labels{/name}","comments_url":"https://api.github.com/repos/tidyverts/fable/issues/77/comments","events_url":"https://api.github.com/repos/tidyverts/fable/issues/77/events","html_url":"https://github.com/tidyverts/fable/issues/77","id":386684382,"node_id":"MDU6SXNzdWUzODY2ODQzODI=","number":77,"title":"Revised modelling API","user":{"login":"earowang","id":2456216,"node_id":"MDQ6VXNlcjI0NTYyMTY=","avatar_url":"https://avatars0.githubusercontent.com/u/2456216?v=4","gravatar_id":"","url":"https://api.github.com/users/earowang","html_url":"https://github.com/earowang","followers_url":"https://api.github.com/users/earowang/followers","following_url":"https://api.github.com/users/earowang/following{/other_user}","gists_url":"https://api.github.com/users/earowang/gists{/gist_id}","starred_url":"https://api.github.com/users/earowang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earowang/subscriptions","organizations_url":"https://api.github.com/users/earowang/orgs","repos_url":"https://api.github.com/users/earowang/repos","events_url":"https://api.github.com/users/earowang/events{/privacy}","received_events_url":"https://api.github.com/users/earowang/received_events","type":"User","site_admin":false},"labels":[{"id":843408436,"node_id":"MDU6TGFiZWw4NDM0MDg0MzY=","url":"https://api.github.com/repos/tidyverts/fable/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"state":"open","locked":false,"assignee":{"login":"mitchelloharawild","id":16127127,"node_id":"MDQ6VXNlcjE2MTI3MTI3","avatar_url":"https://avatars2.githubusercontent.com/u/16127127?v=4","gravatar_id":"","url":"https://api.github.com/users/mitchelloharawild","html_url":"https://github.com/mitchelloharawild","followers_url":"https://api.github.com/users/mitchelloharawild/followers","following_url":"https://api.github.com/users/mitchelloharawild/following{/other_user}","gists_url":"https://api.github.com/users/mitchelloharawild/gists{/gist_id}","starred_url":"https://api.github.com/users/mitchelloharawild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mitchelloharawild/subscriptions","organizations_url":"https://api.github.com/users/mitchelloharawild/orgs","repos_url":"https://api.github.com/users/mitchelloharawild/repos","events_url":"https://api.github.com/users/mitchelloharawild/events{/privacy}","received_events_url":"https://api.github.com/users/mitchelloharawild/received_events","type":"User","site_admin":false},"assignees":[{"login":"mitchelloharawild","id":16127127,"node_id":"MDQ6VXNlcjE2MTI3MTI3","avatar_url":"https://avatars2.githubusercontent.com/u/16127127?v=4","gravatar_id":"","url":"https://api.github.com/users/mitchelloharawild","html_url":"https://github.com/mitchelloharawild","followers_url":"https://api.github.com/users/mitchelloharawild/followers","following_url":"https://api.github.com/users/mitchelloharawild/following{/other_user}","gists_url":"https://api.github.com/users/mitchelloharawild/gists{/gist_id}","starred_url":"https://api.github.com/users/mitchelloharawild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mitchelloharawild/subscriptions","organizations_url":"https://api.github.com/users/mitchelloharawild/orgs","repos_url":"https://api.github.com/users/mitchelloharawild/repos","events_url":"https://api.github.com/users/mitchelloharawild/events{/privacy}","received_events_url":"https://api.github.com/users/mitchelloharawild/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/tidyverts/fable/milestones/1","html_url":"https://github.com/tidyverts/fable/milestone/1","labels_url":"https://api.github.com/repos/tidyverts/fable/milestones/1/labels","id":3733033,"node_id":"MDk6TWlsZXN0b25lMzczMzAzMw==","number":1,"title":"v0.1.0","description":null,"creator":{"login":"earowang","id":2456216,"node_id":"MDQ6VXNlcjI0NTYyMTY=","avatar_url":"https://avatars0.githubusercontent.com/u/2456216?v=4","gravatar_id":"","url":"https://api.github.com/users/earowang","html_url":"https://github.com/earowang","followers_url":"https://api.github.com/users/earowang/followers","following_url":"https://api.github.com/users/earowang/following{/other_user}","gists_url":"https://api.github.com/users/earowang/gists{/gist_id}","starred_url":"https://api.github.com/users/earowang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/earowang/subscriptions","organizations_url":"https://api.github.com/users/earowang/orgs","repos_url":"https://api.github.com/users/earowang/repos","events_url":"https://api.github.com/users/earowang/events{/privacy}","received_events_url":"https://api.github.com/users/earowang/received_events","type":"User","site_admin":false},"open_issues":3,"closed_issues":12,"state":"open","created_at":"2018-10-12T10:10:22Z","updated_at":"2018-12-26T10:11:46Z","due_on":null,"closed_at":null},"comments":11,"created_at":"2018-12-03T07:03:10Z","updated_at":"2018-12-26T10:16:05Z","closed_at":null,"author_association":"MEMBER","body":"Batch forecasting needs to feature (1) parallel computing, (2) error handling https://github.com/tidyverts/fable/issues/74 and (3) multiple model types/columns. Given the current framework, these will likely to be added as new arguments to `ETS()`, `ARIMA()` and etc..  In order for a more flexible framework and an easy-to-maintain package, these features would be better to separate from univariate model methods.\r\n\r\nUnivariate models only focus on a univariate tsibble, and they no longer carry out batch modelling for a multivariate tsibble. Instead, a new function `batch()`? handles batch modelling:\r\n\r\n```r\r\nbatch(.data, .models = NULL, .formulas, ..., \r\n  .parallel = FALSE, .safely = FALSE, .quietly = FALSE)\r\n```\r\n\r\n* `.data`: A tsibble.\r\n* `.models`: univariate model functions (a function or a list of functions).\r\n* `.formulas`: a formula or a list of formulas.\r\n* `...`: arguments passed to each `.model` function, except for the first (`data`) and second (`formula`) arguments.\r\n\r\nFor example,\r\n\r\n```r\r\npedestrian %>%\r\n  batch(ETS, log(Count) ~ Time)\r\n```\r\nreturns the same output as current `ETS()`, i.e. columns `Sensor` and `.model`.\r\n\r\nTo build different model classes, do \r\n\r\n```r\r\nmy_model <- function(data, formula, approx = FALSE) {\r\n  # algorithm\r\n}\r\npedestrian %>%\r\n  batch(\r\n    .model = list(ets = ETS, arima = ARIMA, new_mdl = my_model), \r\n    .formulas = log(Count) ~ Time\r\n  )\r\n```\r\nreturns a mable consisting of columns `Sensor`, `ets`, `arima`, and `new_mdl`.\r\n\r\nThe rest workflow remains as is.\r\n\r\nThis top-level function `batch()` always returns a mable. It could be powered by a low-level function, namely `key_map()` (mapping arbitrary functions to each key), which will be useful for other tasks, for example computing time series features. \r\n\r\nWe can think about the representation of model messages/warnings/errors later."},"comment":{"url":"https://api.github.com/repos/tidyverts/fable/issues/comments/449944473","html_url":"https://github.com/tidyverts/fable/issues/77#issuecomment-449944473","issue_url":"https://api.github.com/repos/tidyverts/fable/issues/77","id":449944473,"node_id":"MDEyOklzc3VlQ29tbWVudDQ0OTk0NDQ3Mw==","user":{"login":"mitchelloharawild","id":16127127,"node_id":"MDQ6VXNlcjE2MTI3MTI3","avatar_url":"https://avatars2.githubusercontent.com/u/16127127?v=4","gravatar_id":"","url":"https://api.github.com/users/mitchelloharawild","html_url":"https://github.com/mitchelloharawild","followers_url":"https://api.github.com/users/mitchelloharawild/followers","following_url":"https://api.github.com/users/mitchelloharawild/following{/other_user}","gists_url":"https://api.github.com/users/mitchelloharawild/gists{/gist_id}","starred_url":"https://api.github.com/users/mitchelloharawild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mitchelloharawild/subscriptions","organizations_url":"https://api.github.com/users/mitchelloharawild/orgs","repos_url":"https://api.github.com/users/mitchelloharawild/repos","events_url":"https://api.github.com/users/mitchelloharawild/events{/privacy}","received_events_url":"https://api.github.com/users/mitchelloharawild/received_events","type":"User","site_admin":false},"created_at":"2018-12-26T10:16:05Z","updated_at":"2018-12-26T10:16:05Z","author_association":"COLLABORATOR","body":"I'm now thinking that these changes should also decompositions, as the current method of applying decompositions in batch contains the same has similar issues.\r\nI still think that decomposition functions should immediately return the decomposition itself, although I'm unsure of an appropriate API for this."}}
{"actor":{"display_login":"mitchelloharawild"}}