diff --git a/.gitignore b/.gitignore index 8dbb845..8ca8676 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ iNZightTS.Rproj *.Rcheck *.tar.gz CRAN-SUBMISSION +inst/doc diff --git a/DESCRIPTION b/DESCRIPTION index fe48f86..9594d85 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -39,6 +39,8 @@ Imports: urca Suggests: covr, + knitr, + rmarkdown, testthat Description: Provides a collection of functions for working with time series data, including functions for drawing, decomposing, and forecasting. Includes capabilities to compare multiple series and fit both additive and multiplicative models. Used by 'iNZight', a graphical user interface providing easy exploration and visualisation of data for students of statistics, available in both desktop and online versions. Holt (1957) , Winters (1960) , Cleveland, Cleveland, & Terpenning (1990) "STL: A Seasonal-Trend Decomposition Procedure Based on Loess". BugReports: https://github.com/iNZightVIT/iNZightTS/issues @@ -48,9 +50,10 @@ LazyData: true License: GPL-3 Encoding: UTF-8 Language: en-GB -RoxygenNote: 7.2.3 +RoxygenNote: 7.3.1 Config/Needs/dependencies: rcmdcheck, curl Config/Needs/coverage: covr +VignetteBuilder: knitr diff --git a/NAMESPACE b/NAMESPACE index 831a011..d020c02 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -10,10 +10,12 @@ S3method(plot,inz_frct) S3method(plot,inz_ts) S3method(plot,seas_ts) S3method(predict,inz_ts) +S3method(print,inzts_fit) S3method(print,summary_inz_frct) S3method(seasonplot,inz_ts) S3method(summary,inz_frct) export(decomp) +export(fit_model) export(ggplotable) export(inzightts) export(log_if) diff --git a/R/iNZightTS2-package.R b/R/iNZightTS-package.R similarity index 98% rename from R/iNZightTS2-package.R rename to R/iNZightTS-package.R index 558c6db..f0e34bf 100644 --- a/R/iNZightTS2-package.R +++ b/R/iNZightTS-package.R @@ -16,7 +16,7 @@ #' @importFrom rlang ':=' #' #' @name iNZightTS-package -NULL +"_PACKAGE" utils::globalVariables(c( diff --git a/R/model.R b/R/model.R new file mode 100644 index 0000000..5c71115 --- /dev/null +++ b/R/model.R @@ -0,0 +1,22 @@ +#' @export +fit_model <- function(data, x, method = c("arima", "ets"), ...) { + method <- match.arg(method) + fit <- switch(method, + "arima" = fabletools::model(data, fit = fable::ARIMA(rlang::enquo(x), ...)), + "ets" = fabletools::model(data, fit = fable::ETS(rlang::enquo(x), ...)) + ) + attr(fit, "method") <- method + attr(fit, "checked") <- FALSE + class(fit) <- c("inzts_fit", class(fit)) + fit +} + +#' @export +print.inzts_fit <- function(x, ...) { + cat("Model: ", attr(x, "method"), "\n") + print.default(x, ...) + + if (!attr(x, "checked")) { + cat("Warning: model has not been checked for assumptions.\n") + } +} diff --git a/man/iNZightTS-package.Rd b/man/iNZightTS-package.Rd index 86be8e7..d59b04e 100644 --- a/man/iNZightTS-package.Rd +++ b/man/iNZightTS-package.Rd @@ -1,7 +1,8 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/iNZightTS2-package.R +% Please edit documentation in R/iNZightTS-package.R \docType{package} \name{iNZightTS-package} +\alias{iNZightTS} \alias{iNZightTS-package} \title{Time Series Data Analysis} \description{ diff --git a/vignettes/.gitignore b/vignettes/.gitignore new file mode 100644 index 0000000..097b241 --- /dev/null +++ b/vignettes/.gitignore @@ -0,0 +1,2 @@ +*.html +*.R diff --git a/vignettes/model-checking.Rmd b/vignettes/model-checking.Rmd new file mode 100644 index 0000000..eac8b00 --- /dev/null +++ b/vignettes/model-checking.Rmd @@ -0,0 +1,34 @@ +--- +title: "model-checking" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{model-checking} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + collapse = TRUE, + comment = "#>" +) +``` + +```{r setup} +library(iNZightTS) +``` + +```{r tsObject} +visitors_ts <- inzightts(visitorsQ) +plot(visitors_ts, "Australia") +``` + +```{r model-checking, eval=FALSE} +visitors_fit <- fit_model(visitors_ts, ~Australia, method = "arima") +visitors_fit +plot(visitors_fit) +``` + +Without any model checking, outputs show warnings. + +To check the model, we can use the `check_model` function. This will launch an interactive process where we can check the model assumptions are satisfied.