# forecast 9.0.1

* Performance improvements for ARFIMA model search
* `forecast.mlm()` now finds `newdata` when passed as an argument from another function (#880)
* `residuals.tslm()` now allows `type = "working"` as per CRAN request
* Code modernization and performance improvements

# forecast 9.0.0
  * `ets()` now allows missing values in the time series (#952)
  * Added `mean_model()` and `forecast.mean_model()`
  * Added `rw_model()` and `forecast.rw_model()` (m-muecke, #969)
  * Added `spline_model()` and `forecast.spline_model()` (#1013)
  * Added `theta_model()` and `forecast.theta_model()` (#1014)
  * Added `croston_model()` and `forecast.croston_model()` (#1015)
  * Added simulated and bootstrapped prediction intervals to more models (#1040)
  * Added parallelization for `nnetar()` (m-muecke, #346)
  * More consistent handling of biasadj across models
  * `accuracy()` rewritten to use S3 methods for models and remove `accuracy.default()` (#912)
  * Bug fixes and performance improvements
  * Documentation improvements

# forecast 8.24.0
  * Documentation improvements
  * Bug fixes

# forecast 8.23.0
  * Prevented RNG state changing when the package is attached (#954, #955).
  * `head.ts()` and `tail.ts()` only defined for R < 4.5.0 due to new base R functions.

# forecast 8.22.0
  * `hfitted()` now much faster for ARIMA models (danigiro, #949)
  * `hfitted()` now much faster for ETS models, and produces fitted values from
    initial states (#950)

# forecast 8.21.1
  * `nnetar()` now allows p or P to be 0
  * Bug fixes and improved docs

# forecast 8.21
  * Fixed df calculation for Ljung-Box tests in `checkresiduals()`
  * Fixed some broken tests

# forecast 8.20
  * Improvements to unit tests, and migrate to testthat 3e
  * Prevent failure in C23 mode

# forecast 8.19
  * Bug fixes

# forecast 8.18
  * Updated RW forecasts to use an unbiased estimate of sigma2
  * Bug fixes

# forecast 8.17.0
  * Updated `dm.test()` to add alternative variance estimators. (#898)
  * Added `simulate.tbats()` for simulating from TBATS models.
  * Added dependency on generics for `accuracy()` and `forecast()` (#902)
  * Bug fixes

# forecast 8.16
  * Fixed `tslm()` incorrectly applying Box-Cox transformations when an `mts`
is provided to the `data` argument (#886).
  * Set D=0 when `auto.arima()` applied to series with 2m observations or fewer.
  * Improved performance of parallel search of ARIMA models (jonlachmann, #891).
  * Fixed scoping of functions used in `ggAcf()` (#896).
  * Fixed checks on xreg in `simulate.Arima()` (#818)
  * Improved docs and bug fixes.

# forecast 8.15
  * Changed `summary()` methods to defer console output until `print()`
  * Changed default `s.window` values for `mstl()`, `stlf()` and `stlm()`. The new defaults are based on extensive empirical testing.

# forecast 8.14
  * Changed default `BoxCox(lambda = "auto")` lower bound to -0.9.
  * Use better variance estimates for ets bias adjustments.
  * Improved robustness of `autoplot.seas()` for non-seasonal decomposition.
  * Fixed scoping of parameters in `auto.arima(parallel = TRUE)` (#874).
  * Fixed handling of `xreg` in `tsCV()`.

# forecast 8.13
  * Fixed forecasts from `Arima()` with drift with initial NAs.
  * Fixed season colours in `gglagplot()` to match y-axis (original data).
  * Fixed facet order for classical decomposition `autoplot()`
  * Fixed `summary()` erroring for `tslm()` models containing NA values.

# forecast 8.12
  * Fixed bias adjusted forecast mean for ARIMA forecasts.
  * Improved naming of `accuracy()` generic formals.
  * Fix seasonal periods for `taylor` dataset.

# forecast 8.11
  * The axis for `gglagplot()` have been reversed for consistency with `stats::lag.plot()`.

# forecast 8.10
  * Updates to remove new CRAN errors
  * Bug fixes

# forecast 8.9
  * Updates for CRAN policies on Suggests packages
  * Bug fixes

# forecast 8.8
  * Updates for compatibility with fable
  * Bug fixes

# forecast 8.7
  * Documentation improvements
  * Bug fixes

# forecast 8.6
  * Reduced conflicts with tidy forecasting packages
  * Forecast autoplots now use same colour shading as `autolayer()` and geom_forecast
  * Documentation improvements
  * Bug fixes

# forecast 8.5
  * Updated `tsCV()` to handle exogenous regressors
  * Reimplemented lagwalk methods (`naive()`, `snaive()`, `rwf()`) for speed improvements
  * Added support for passing arguments to `auto.arima()` unit root tests
  * Improved `auto.arima()` stepwise search algorithm
  * Documentation improvements
  * Bug fixes

# forecast 8.4
  * Added `modelAR()`, generalising `nnetar()` to support user-defined functions
  * Added na.action argument to `ets()`
  * Documentation improvements
  * Bug fixes

# forecast 8.3
  * Added `mstl()` to handle multiple seasonal decomposition
  * `stlf()`, `stlm()`, `tsoutliers()` and `tsclean()` all now use `mstl()`.
  * Updated `tsCV()` to handle multiple horizons
  * Switched unit root tests in `ndiffs()` to use urca package
  * Added `ocsb.test()`
  * Changed method for choosing D in `auto.arima()` to a measure of seasonal strength.
  * Added `baggedModel()` function to generalize baggedETS
  * Added bootstrapped PI to more functions
  * Allowed lambda='auto' for all functions with lambda argument.
  * Updated author list to include all major contributors
  * Documentation improvements
  * Bug fixes

# forecast 8.2
  * Added pkgdown site
  * Added rolling window option to `tsCV()`
  * Improved robustness to short time series and missing values
  * Bug fixes

# forecast 8.1
  * Added `as.character.ets()`, `as.character.bats()`, `as.character.tbats()`
  * Made `gghistogram()` and `checkresiduals()` robust to missing values
  * All documentation now generated using roxygen
  * Improved documentation for many functions
  * Added `autoplot.msts()` and `autolayer.msts()`
  * Added as.character methods for many models to generate model names
  * Added `as.ts.forecast()`
  * autoplot method for bats/tbats models
  * Better ARIMA trace output
  * Made accuracy an S3 method
  * Bug fixes

# forecast 8.0
  * Added tips to start up message
  * Added pipe operator
  * Added `tsCV()` and `CVar()` functions
  * Added baggedETS
  * Added `head.ts()` and `tail.ts()`, so head and tail now work properly on ts objects.
  * Added `gghistogram()` and `checkresiduals()`
  * Added `ggseasonplot()` with polar coordinates
  * Modified defaults for `gglagplot()`
  * Added `autolayer.ts()`
  * Added type argument to `residuals()` for different types of residuals
  * Added support for seas objects from the seasonal package
  * Component extraction for seasonal decomposition methods
  * Range bars for decomposition autoplots
  * Added `autoplot.StructTS()`
  * Added vignette based on 2008 JSS article by Hyndman and Khandakar
  * Improved ggplot functions
  * mforecast objects re-structured
  * Added `as.data.frame.mforecast()`
  * `autoplot()` functions now exported
  * Refit support for `arfima()` and `stlm()`
  * Better bias adjustment support after Box-Cox transformation
  * `print.ARIMA()` has better labelling of constants
  * Bug fixes
  * Removed fortify method for forecast objects

# forecast 7.3
  * Added prediction intervals and simulation for `nnetar()`.
  * Documentation improvement
  * Bug fixes

# forecast 7.2
  * Faceting for `autoplot.mts()`
  * Box-Cox support for ses, holt, hw
  * `ets()` now works for tiny time series
  * Added h-step fitted values in `fitted()` function.
  * seasonal adjustment added to `thetaf()`
  * y now the standard first argument in all modelling functions
  * Added truncate argument to `auto.arima()`
  * `seasadj()` now an S3 method
  * series with frequency < 1 and non-integer seasonality now handled better
  * ggplot2 theme support
  * Added gglagplot, gglagchull
  * `Arima()` and `auto.arima()` now allow any argument to be passed to `stats::arima()`.
  * Bug fixes and speed improvements

# forecast 7.1
  * Fixed bug in `auto.arima()` where the Box-Cox transformation was sometimes applied twice
  * Improved axes for ggseasonalplot
  * Improved `tslm()` to avoid some problems finding data
  * `nnetar()` updated to allow subsets
  * Modified initial values for `ets()`
  * Improved unit tests to avoid deprecated functions and to avoid data from fpp
  * Removed fpp from Suggests list

# forecast 7.0
  * Added ggplot2 graphics
  * Bias adjustment option added for all functions that allow Box-Cox transformations
  * Added `Ccf()` function, and rewrote `Acf()` to handle multivariate series.
  * `tslm()` completely rewritten to be more robust and to handle fourier terms more easily
  * Support for multivariate linear models added
  * `subset.ts()` more robust, and captures some errors.
  * Added xreg argument to `nnetar()`
  * Improved labels in seasonplot
  * More unit tests added
  * Documentation improvements
  * Bug fixes

# forecast 6.2
  * Many unit tests added using testthat.
  * Fixed bug in `ets()` when very short seasonal series were passed in a data frame.
  * Fixed bug in `nnetar()` where the initial predictor vector was reversed.
  * Corrected model name returned in `nnetar()`.
  * Fixed bug in `accuracy()` when non-integer seasonality used.
  * Made `auto.arima()` robust to non-integer seasonality.
  * Fixed bug in `auto.arima()` where allowmean was ignored when stepwise=FALSE.
  * Improved robustness of `forecast.ets()` for explosive models with multiplicative trends.
  * Exogenous variables now passed to VAR forecasts
  * Increased maximum nmse in `ets()` to 30.
  * Made `tsoutliers()` more robust to weak seasonality
  * Changed `tsoutliers()` to use supsmu on non-seasonal and seasonally adjusted data.
  * Fixed bug in `tbats()` when seasonal period 1 is a small multiple of seasonal period 2.
  * Other bug fixes

# forecast 6.1
  * Made `auto.arima()` more robust

# forecast 6.0
  * Modified `dm.test()` to give error when variance is zero
  * Corrected help file for `splinef()`.
  * Fixed typo in accuracy help file regarding RMSE
  * Fixed bug in `accuracy()` which occurred with Arima and ets objects.
  * Fixed `arima.errors()` to handle Box-Cox transformed models.
  * Modified `auto.arima()` to be stricter on near-unit-roots.
  * Added allowmean argument in `auto.arima()`.
  * Improved handling of constant series in `Arima()` and `forecast.Arima()`.
  * Added `plot.Arima()` and `plot.ar()` functions.
  * Added as.character.Arima
  * Captured problem in bats/tbats where data are constant.
  * Modified TBATS and BATS estimation to avoid occasional instabilities.
  * Fixed bug in forecasts from bats which labelled them as TBATS.
  * Added allow.multiplicative.trend argument to `ets()`.
  * Set allow.multiplictive.trend=FALSE in `stlf()`, `stlm()` and `forecast.ts()`.
  * Simplified arguments in `stlf()`.
  * Added taperedacf and taperedpacf functions
  * Added functions for bootstrapping time series

# forecast 5.9
  * Improved documentation of `accuracy()` function.
  * Fixed occasional bug in `accuracy()` when test set is a single observation.
  * Improved `Acf()` to give better handling of horizontal axis for seasonal data or when ... is passed.
  * Removed `print.Arima()` and `predict.Arima()` and added `print.ARIMA()`
  * method argument now passed when re-fitting an ARIMA model.
  * Fixed error when CH test applied to short series

# forecast 5.8
  * Fixed bug in versions of R before 3.10 when using fourier and fourierf.
  * Made `BoxCox.lambda()` robust to missing values.

# forecast 5.7
  * Fixed bug in tbats/bats where optional arguments were not being passed to `auto.arima()`.
  * Revised `fourier()` and `fourierf()` to avoid large orders, and to avoid zero columns.
  * Improved accuracy of `fourier()` and `fourierf()`, while simplifying the code.
  * Removed duplicate columns returned by fourier/fourierf with multiple seasonal periods.
  * Corrected some bugs in `simulate.Arima()` for models involving xreg.
  * Centred simulations from `simulate.Arima()` for non-stationary models by conditioning on first observation.
  * Added `findfrequency()` function.
  * Fixed error in computed residuals from `forecast.stl()`.
  * Improved handling of very short series in `auto.arima()`.
  * Fixed error in forecasting with additive damped models. Damping previously applied only from second forecast horizon.
  * Fixed misuse of `abs()` in two places in C code.
  * Added na.action argument to `Acf()` and fixed na.action argument in `tsdisplay()`.

# forecast 5.6
  * Improved tbats and bats by ensuring ARMA coefficients are not close to the
    boundary of invertibility and stationarity.
  * Improved `nsdiffs()` handling of degenerate series (e.g., all zeros).
  * Improved `forecast.ar()` when function buried within other functions.
  * Improved handling of degenerate ARIMA models when xreg used.
  * More robust ets initialization.
  * Fixed problem in `na.interp()` with seasonal data having frequency <= 5.
  * Removed undocumented option to use Rmalschains for optimization of ets.

# forecast 5.5
  * Improved documentation for croston
  * Added `stlm()` and `forecast.stlm()` functions, and added forecastfunction argument as a way of
    specifying a forecast method in `stlf()` and `forecast.stl()`.
  * Improved `forecast.ar()` so that it is more likely to work if `ar()` and `forecast.ar()` are
    embedded within other functions.
  * Improved handling of ARIMA models with seasonality greater than 48
  * Improved handling of some degenerate regression models in nsdiffs
  * Changed AIC for poor models from 1e20 to Inf.
	* Update `fourier()` and `fourierf()` to work with msts object.
	* Added a new argument find.frequency to `forecast.ts()`.
	* Added new arguments d and D to `accuracy()` for MASE.
  * Corrected bugs in `accuracy()`.
  * Better handling of regression models with perfect fit in `auto.arima()`.
  * Fixed bug in `tbats.components()` when there are no seasonal components.

# forecast 5.4
  * Fixed bug in `forecast.tbats()` and `forecast.bats()` when ts.frequency does not match seasonal.periods.
  * Fixed bug in `getResponse.lm()` when there's a logged dependent variable.
  * Modified `ets()` to avoid problems when data contains large numbers.
  * Modified `ets()` to produce forecasts when the data are constant.
  * Improved `arima.errors()` to find xreg more often, and to return an error if it can't be found.

# forecast 5.3
  * Unit tests added
  * Fixed bug in `zzhw()` which reversed the sign of the residuals.
  * Updated help file for `CV()` to specify it is only leave-one-out.
  * Fixed `guer.cv()` to allow non-integer periods without warning.
  * Added use.initial.values argument in `ets()`.
  * Added `arimaorder()` function.
  * Modified warnings suppression by using `suppressWarnings()` throughout.

# forecast 5.2
  * Changed default number of cores to 2 for all functions that use parallel processing.
  * Removed remaining call to `bats()` from examples that are run.

# forecast 5.1
  * Fixed bug in `tsoutliers()` and `tsclean()` with very short seasonal series.
  * Fixed bug in `Arima()` when seasonal order is specified numerically instead of via a list.
  * Removed dimension attribution from output of `arima.errors()`
  * Improved handling of "test" in accuracy
  * Changed parallel processing to parLapply for `auto.arima()`
  * Added timeDate dependency to avoid errors in `easter()` and link to Rcpp >= 0.11.0.

# forecast 5.0
  * Added argument model to `dshw()`.
  * Added `bizdays()` and `easter()` for calendar variables.
  * Added arguments max.D and max.d to `auto.arima()`, `ndiffs()` and `nsdiffs()`.
  * Made several functions more robust to zoo objects.
  * Corrected an error in the calculation of AICc when using `CV()`.
  * Made minimum default p in `nnetar()` equal to 1.
  * Added `tsoutliers()` and `tsclean()` for identifying and replacing outliers
  * Improved `na.interp()` to handle seasonality and added argument lambda to `na.interp()`
  * Added robust option to `forecast.ts()` to allow outliers and missing values
  * Improved output from `snaive()` and `naive()` to better reflect user expectations
  * Allowed `Acf()` to handle missing values by using na.contiguous
  * Changed default information criterion in `ets()` to AICc.
  * Removed drift term in `Arima()` when d+D>1.
  * Added bootstrap option to `forecast.Arima()`

# forecast 4.8
  * Fixed bug in `rwf()` that was introduced in v4.7

# forecast 4.7
  * Added `forecast.forecast()` to simply return the object that is passed.
  * Removed leading zero in package number. i.e., 4.7 instead of 4.07.
  * better handling of nearly constant time series, and nearly linear time series
  * improved handling of missing values in `rwf()`
  * corrected fitted values and residuals in `meanf()` for time series data
  * `bats()` and `tbats()` now handle missing values in the same way as `ets()`. i.e., using longest contiguous portion.
  * better handling of very short time series
  * initial states for `ets()` modified for very short time series (less than 3 years).
  * nsdiffs with CH test now handles degenerate cases without returning an error.
  * nnetar now handles missing values
  * Fixed bug in `forecast.varest()` so residuals and fitted values computed correctly.
  * Added `accuracy()` calculation for VAR models
  * Fixed a bug in `simulate.fracdiff()` when future=TRUE. Sometimes the future argument was being ignored.

# forecast 4.06
  * `accuracy()` was returning a mape and mpe 100 times too large for in-sample errors.

# forecast 4.05
  * Fixed bug in `hw()` so it works when initial="simple"
  * Allowed `bats()` and `tbats()` to take non-positive values.
  * `ets()` now calls optim direct via c code making `ets()` run much faster.
  * Added Rmalschains as a possible optimizer in `ets()`. Not documented.
  * Modified `forecast.lm()` so it is more likely that the original data are stored in the returned object.
  * Corrected bug in `forecast.Arima()` that occurred when a Box-Cox transformation was used with bootstrap=TRUE.
  * `accuracy()` updated so that it gives more information, and returns a matrix of both test and training measures.
  * Corrected training error measures for `splinef()` forecasts.

# forecast 4.04
  * Added ylim argument to `Acf()`
  * Avoided clash with the signal package when using `auto.arima()`.
  * Fixed problem in `plot.forecast()` when all historical data are NA or when there is no available historical data.
  * `forecast.Arima()` is now a little more robust if a zoo object is passed instead of a ts object.
  * `CV()` now handles missing values in the residuals.
  * Fixed bug in `holt()` and `hw()` so that the printed model no longer contains missing values.

# forecast 4.03
  * `forecast.lm()` now guesses the variable name if there is only one predictor variable.
  * Removed error trap in `forecast.lm()` when no xreg variables passed as it was catching legitimate calls.

# forecast 4.02
  * Fixed error in the prediction intervals returned by `forecast.ets()` when simulation was used and a Box-Cox transformation was specified.
  * Fixed bug in `accuracy()` when a numerical f vector was passed.
  * Fixed man file for Diebold-Mariano test.
  * Corrected references in `nsdiffs()` help page.
  * Added warning to nsdiffs when series too short for seasonal differencing.
  * Fixed problem in getResponse.Arima when Arima object created by stats::`arima()` from within a function.
  * Added `tbats.components()` and extended `seasadj()` to allow tbats objects.
  * Added undocumented functions for forecasting, printing and plotting output from vars::VAR.

# forecast 4.01
  * Error now trapped when newxreg variables not passed to `forecast.lm()`
  * Corrected help file for `dshw()` to remove references to prediction intervals.
  * Improved help file for `dm.test()` to give more information about the alternative hypotheses.
  * Improved `dm.test()` performance for small samples by using a t-distribution instead of normal.
  * Modified `bats()` and `tbats()` examples to follow CRAN policies on parallel processing.
  * Moved some packages from Depends to Imports.
  * Added `getResponse()` function to return the historical time series from various time series model objects.
  * Modified `accuracy()` to use `getResponse()`.
  * Allowed user-generated innovations in `simulate.ets()`, `simulate.Arima()`, etc.
  * Allowed xreg argument in `forecast.stl()` and `stlf()` when ARIMA model used.
  * Removed reliance on caret, and associated fitted and residuals functions.

# forecast 4.00
  * More robust handling of degenerate ARIMA models.
  * New defaults for shaded colors used for prediction intervals in plots.
  * `auto.arima()` now remembers the name of the series when a Box-Cox transformation is used.
  * New function `nnetar()` for automatic neural network forecasting of time series.
  * `arfima()` now tries harder to ensure the ARMA part is stationary.
  * ts control added for forecast of linear models in `forecast.lm()`.
  * Fixed bug in `bats()` which caused an error when use.box.cox=FALSE and use.trend=FALSE.
  * Added residuals and fitted methods for train and avNNet objects from caret package.
  * `accuracy()` can now figure out overlapping times for x and f.
  * `rwf()` now handles missing values.
  * Revised `ses()`, `holt()` and `hw()` so that they can optionally use traditional initialization.

# forecast 3.25
  * Fixed bug in `simulate.Arima()`.
  * Improved handling of short seasonal time series in `auto.arima()`.
  * Added seasonal argument to `auto.arima()`.
  * Fixed bug in `splinef()` and added gcv method for estimating smoothing parameter.

# forecast 3.24 (23 July 2012
  * Fixed bug in `auto.arima()` introduced in v3.23 which meant a ARIMA(0,0,0) model was
    returned about half the time.

# forecast 3.23
  * Fixed bug in `arfima()` which meant the drange argument was being ignored.
  * Extended `auto.arima()` so it returns something sensible when the data are constant.

# forecast 3.22
  * Increased maximum forecast horizon for ets models from 2000 to unlimited.
  * Corrected bug in `Arima()`. Previously include.constant=FALSE was ignored.
  * Some corrections to bats and tbats.
  * Modified parallel implementation in `auto.arima()` for Windows.

# forecast 3.21
  * Fixed bug in `auto.arima()` when lambda is non-zero and stepwise is FALSE.
  * Fixed bug in `auto.arima()` in selecting d when D>0.
  * Fixed bug in `ets()` when seasonal period is less than 1.
  * Turned off warnings in `auto.arima()` and `ets()` when seasonal period is less than 1.
  * Added plotting methods for bats and tbats objects.
  * Changed default forecast horizons for bats and tbats objects.
  * Modified bats and tbats so they now use seasonal.periods when ts and msts objects are being modelled.

# forecast 3.20
  * Fixed bugs in `forecast.lm()`.
  * Improved handling of newdata in `forecast.lm()` to provide more meaningful error messages.
  * Fixed bug in `dm.test()` that occurred when errors were very small.

# forecast 3.19
  * Improved plotting of forecast objects from lm models
  * Added MASE for lm forecasts using insample mean forecasts for scaling.
  * Modified definition of MASE for seasonal time series to use seasonal `naive()` insample scaling.
  * Modified `meanf()` to allow it to be used with cross-sectional data.
  * Updated `accuracy()` to allow it to be used with cross-sectional data, lm forecasts and lm objects.

# forecast 3.18
  * Added method for plotting non-time-series forecasts to `plot.forecast()`.
  * Removed partial arg matching.
  * Cleaned up some code, removing commented out sections, etc.
  * Added robust option to `stlf()`.
  * Added `naive()` and rwdrift options to `stlf()` and `forecast.stl()`.
  * Improved handling of msts objects in `BoxCox.lambda()`
  * Fixed some minor bugs in `tbats()` and bats
  * Improved speed of `bats()` and `tbats()`.

# forecast 3.17
  * Improved `forecast.lm()` so it is more likely to find the original data from an lm object.
  * Parallel processing now available in `auto.arima()` when stepwise=FALSE
  * Default model selection in `auto.arima()` changed to AICc rather than AIC. This may affect model selection for very short time series.
  * max orders in `auto.arima()` now restricted to be less than 1/3 of length of data.

# forecast 3.16
  * Corrected problem with AIC computation in bats and tbats
  * Fixed handling of non-seasonal data in bats
  * Changed dependency to >= R 2.14.0 in order to ensure parallel package available.

# forecast 3.15
  * New functions `tbats()` and `forecast.tbats()` for multiple seasonal time series modelling.
  * `bats()` and `tbats()` use parallel processing when possible.
  * Minor improvements to `bats()` and `forecast.bats()`.
  * `decompose()` removed as the function in the stats package has now been fixed.

# forecast 3.14
  * Improved documentation for `forecast.ts()`
  * Corrected bug in `dshw()` when applied to a non-ts object.
  * Added error message when `dshw()` applied to data containing zeros or negative values
  * Added checks when `dshw()` applied to time series with non-nested periods.
  * Added msts object class for multiple seasonal time series
  * Made taylor data set an msts object.
  * Added `bats()` function for multiple seasonal time series modelling
  * Added `forecast.bats()` function for forecasting BATS models
  * Byte compiling turned on
  * Depending on Rcpp and RcppArmadillo to speed some code up.

# forecast 3.13
  * Bug fix for `forecast.StructTS()` due to changes in the StructTS object. The default h was being set to 0.
    Thanks to Tarmo Leinonen for reporting this problem.
  * Bug fix for `forecast.stl()` where h longer than one seasonal period sometimes returned missing forecasts.
    Thanks to Kevin Burton for reporting this problem.
  * `forecast.stl()` no longer allows a seasonal ETS model to be specified. Thanks to Stefano Birmani for the suggestion.

# forecast 3.12
  * Added option to control ets model in `stlf()` and `forecast.stl()`. Thanks to Stefano Birmani for the suggestion.
  * Reordered arguments for `forecast.lm()` and `stlf()` to be consistent with other forecast functions.
  * Modified `tslm()` so that it is more likely to find the relevant data when it is not passed as an argument.
  * Fixed bug in `forecast.ets()` which returned all zero forecasts for some models when seasonal period > 24.

# forecast 3.11
  * Fixed bug in `dshw()` when smallest period is odd

# forecast 3.10
  * Added lambda argument to `naive()` and `snaive()`.
  * Fixed bug in `ets()` with high frequency data.
  * Fixed bug in `rwf()` where incorrect fitted values and residuals were sometimes returned.
  * Modified number of lags displayed by default in `tsdisplay()`.

# forecast 3.09
  * Fixed bug causing occasional problems in `simulate.Arima()` when MA order greater than 2 and future=TRUE.

# forecast 3.08
  * Bug fix in `forecast.stl()` which occurred when forecast horizon is less than seasonal period.
  * Added lambda argument to `forecast.stl()`.

# forecast 3.07
  * Bug fix in `ets()` concerning non-seasonal models and high-frequency data. It sometimes returned all forecasts equal to zero.

# forecast 3.06
  * Switched to useDynLib in preparation for Rv2.14.0.

# forecast 3.05
  * Fixed bug in `ets()` which prevent non-seasonal models being fitted to high frequency data.

# forecast 3.04
  * Fixed bug when drift and xreg used together in `auto.arima()` or `Arima()`.

# forecast 3.03
  * Bug fix in `dshw()` which was using slightly incorrect seasonal estimates for the forecasts
  * Bug fix in `forecast.StructTS()` due to change in structure of StructTS object.
  * Better error capture in tslm when seasonal dummies are specified for non-seasonal data.
  * Re-formatted some help files to prevent viewing problems with the pdf manual.

# forecast 3.02
  * Bug fixes

# forecast 3.00
  * Added Box-Cox parameter as argument to `Arima()`, `ets()`, `arfima()`, `stlf()`, `rwf()`, `meanf()`, `splinef()`
  * Added Box-Cox parameter as argument to `forecast.Arima()`, `forecast.ets()`, `forecast.fracdiff()`, `forecast.ar()`, `forecast.StructTS()`, `forecast.HoltWinters()`.
  * Removed lambda argument from `plot.forecast()` and `accuracy()`.
  * Added `BoxCox.lambda()` function to allow automatic choice for Box-Cox parameter using Guerrero's method or the profile log likelihood method.
  * Modified BoxCox and InvBoxCox to return missing values when lambda < 0 and data < 0.
  * Add `nsdiffs()` function for selecting the number of seasonal differences.
  * Modified selection of seasonal differencing in `auto.arima()`.
  * Better error message if seasonal factor used in `tslm()` with non-seasonal data.
  * Added PI argument to `forecast.ets()` to allow only point forecasts to be computed.
  * Added include.constant argument to `Arima()`.
  * Added `subset.ts()` function.
  * Upgraded `seasonplot()` function to allow colors and to fix some bugs.
  * Fixed fitted values returned by `forecast.HoltWinters()`
  * Modified `simulate.Arima()` because of undocumented changes in `filter()` function in stats package.
  * Changed residuals returned by `splinef()` to be ordinary residuals. The standardized residuals are now returned as standardizedresiduals.
  * Added `dshw()` function for double-seasonal Holt-Winters method based on Taylor (2003).
  * Fixed further bugs in the `decompose()` function that caused the results to be incorrect with odd frequencies.

# forecast 2.19
  * Added xreg information to the object returned by `auto.arima()`.
  * Added `Acf()`, `Pacf()`, `ma()` and `CV()` functions.
  * Fixed bugs in re-fitting ARIMA models to new data.

# forecast 2.18 (2011-05-19)
  * Fixed bug in `seasonplot()` where year labels were sometimes incorrect.

# forecast 2.17
  * Modified `simulate.Arima()` to handle seasonal ARIMA models.
  * Modified `ets()` to handle missing values. The largest continuous section of data is now modelled.
  * Improved `plot.forecast()` to handle missing values at the end of the observed series.
  * Added replacement `decompose()` to avoid truncation of seasonal term and seasonally adjusted series.
  * Fixed bug in `seasadj()` to handle multiplicative decomposition, and to avoid missing values at ends.

# forecast 2.16
  * Changed the way missing values are handled in tslm

# forecast 2.15
  * Added `fourier()`, `fourierf()`, tslm
  * Improved `forecast.lm()` to allow trend and seasonal terms.

# forecast 2.14
  * Added `forecast.lm()`
  * Modified `accuracy()` and `print.forecast()` to allow non time series forecasts.
  * Fixed visibility of `stlf()`.

# forecast 2.13
  * Fixed bug in `accuracy()` when only 1 forecast is specified.
  * Added `forecast.stl()` and `stlf()` functions
  * Modified `forecast.ts()` to use `stlf()` if frequency > 12.
  * Made `BoxCox()` and `InvBoxCox()` robust to negative values
  * Fixed bug in `simulate.Arima()` when future=TRUE. There was a bias in the sample paths.

# forecast 2.12
  * Added `naive()` and `snaive()` functions.
  * Improved handling of seasonal data with frequency < 1.
  * Added lambda argument to `accuracy()`.

# forecast 2.11
  * If MLE in `arfima()` fails (usually because the series is non-stationary), the LS estimate is now returned.

# forecast 2.10
  * Fixed bug in `arfima()` where the MA parameters were of the wrong sign if estim="mle" chosen.
  * `arfima()` now allowed to have a sequence of missing values at the start of the series and end of the series

# forecast 2.09
  * Fixed bug in `forecast.fracdiff()` which caused an error when h=1.
  * Added shadebars to `plot.forecast()`.
  * Fixed bug in `plot.forecast()` to allow plotting when h=1.

# forecast 2.08
  * Added pp test option for `auto.arima()` and `ndiffs()`.
  * Fixed bug in `simulate.ets()` which was causing problems when forecasting from some ETS models including ETS(M,M,N).

# forecast 2.07
  * Fixed bug in `simulate.Arima()`. Previous sample paths when d=2 and future=TRUE were incorrect.
  * Changed way color is implemented in `plot.forecast()` to avoid colour changes when the graphics window is refreshed.

# forecast 2.06
  * Added MLE option for `arfima()`.
  * Added `simulate.Arima()`, `simulate.ar()` and `simulate.fracdiff()`

# forecast 2.05
  * Added `arfima()` and a forecast method to handle ARFIMA models from `arfima()` and `fracdiff()`.
  * Added residuals and fitted methods for fracdiff objects.

# forecast 2.04
  * Fixed bug in `auto.arima()` that occurred rarely.

# forecast 2.03
  * Added an option to `auto.arima()` to allow drift terms to be excluded from the models considered.

# forecast 2.02
  * Fixed bug in `auto.arima()` that occurred when there was an xreg but no drift, approximation=TRUE and stepwise=FALSE.

# forecast 2.01
  * Fixed bug in time index of `croston()` output.
  * Added further explanation about models to `croston()` help file.

# forecast 2.00
  * Package removed from forecasting bundle

# forecast 1.26 (29 August 2009)
  * Added `as.data.frame.forecast()`. This allows `write.table()` to work for forecast objects.

# forecast 1.25 (22 July 2009)
  * Added argument to `auto.arima()` and `ndiffs()` to allow the ADF test to be used instead of the KPSS test in selecting the number of differences.
  * Added argument to `plot.forecast()` to allow different colors and line types when plotting prediction intervals.
  * Modified `forecast.ts()` to give sensible results with a time series containing fewer than four observations.

# forecast 1.24 (9 April 2009)
  * Fixed bug in `dm.test()` to avoid errors when there are missing values in the residuals.
  * More informative error messages when `auto.arima()` fails to find a suitable model.

# forecast 1.23 (22 February 2009)
  * Fixed bugs that meant xreg terms in `auto.arima()` sometimes caused errors when stepwise=FALSE.

# forecast 1.22 (30 January 2009)
  * Fixed bug that meant regressor variables could not be used with seasonal time series in `auto.arima()`.

# forecast 1.21 (16 December 2008)
  * Fixed bugs introduced in v1.20.

# forecast 1.20 (14 December 2008)
  * Updated `auto.arima()` to allow regression variables.
  * Fixed a bug in `print.Arima()` which caused problems when the data were inside a data.frame.
  * In `forecast.Arima()`, argument h is now set to the length of the xreg argument if it is not null.

# forecast 1.19 (7 November 2008)
  * Updated `Arima()` to allow regression variables when refitting an existing model to new data.

# forecast 1.18 (6 November 2008)
  * Bug fix in `ets()`: models with frequency less than 1 would cause R to hang.
  * Bug fix in `ets()`: models with frequency greater than 12 would not fit due to parameters being out of range.
  * Default lower and upper bounds on parameters alpha, beta and gamma in `ets()` changed to 0.0001 and 0.9999 (instead of 0.01 and 0.99).

# forecast 1.17 (10 October 2008)
  * Calculation of BIC did not account for reduction in length of series due to differencing. Now fixed in `auto.arima()` and in `print.Arima()`.
  * `tsdiag()` now works with ets objects.

# forecast 1.16 (29 September 2008)
  * Another bug fix in `auto.arima()`. Occasionally the root checking would cause an error. The condition is now trapped.

# forecast 1.15 (16 September 2008)
  * Bug fix in `auto.arima()`. The series wasn't always being stored as part of the return object when stepwise=FALSE.

# forecast 1.14 (1 August 2008)
  * The time series stored in M3 in the Mcomp package did not contain all the components listed in the help file. This problem has now been fixed.

# forecast 1.13 (16 June 2008)
  * Bug in `plot.ets()` fixed so that plots of non-seasonal models for seasonal data now work.
  * Warning added to `ets()` if the time series contains very large numbers (which can cause numerical problems). Anything up to 1,000,000 should be ok, but any larger and it is best to scale the series first.
  * Fixed problem in `forecast.HoltWinters()` where the lower and upper limits were interchanged.

# forecast 1.12 (22 April 2008)
  * Objects are now coerced to class ts in `ets()`. This allows it to work with zoo objects.
  * A new function `dm.test()` has been added. This implements the Diebold-Mariano test for predictive accuracy.
  * Yet more bug-fixes for `auto.arima()`.

# forecast 1.11 (8 February 2008)
  * Modifications to `auto.arima()` in the case where ML estimation does not work for the chosen model. Previously this would return no model. Now it returns the model estimated using CSS.
  * AIC values reported in `auto.arima()` when trace=TRUE and approximation=TRUE are now comparable to the final AIC values.
  * Addition of the expsmooth package.

# forecast 1.10 (21 January 2008)
  * Fixed bug in `seasadj()` so it allows multiple seasonality
  * Fixed another bug in `print.Arima()`
  * Bug fixes in `auto.arima()`. It was sometimes returning a non-optimal model, and occasionally no model at all. Also, additional stationarity and invertibility testing is now done.

# forecast 1.09 (11 December 2007)
  * A new argument 'restrict' has been added to `ets()` with default TRUE. If set to FALSE, then the unstable ETS models are also allowed.
  * A bug in the `print.Arima()` function was fixed.

# forecast 1.08 (21 November 2007)
  * AICc and BIC corrected. Previously I had not taken account of the sigma^2 parameter when computing the number of parameters.
  * `arima()` function changed to `Arima()` to avoid the clash with the `arima()` function in the stats package.
  * `auto.arima()` now uses an approximation to the likelihood when selecting a model if the series is more than 100 observations or the seasonal period is greater than 12. This behaviour can be over-ridden via the approximation argument.
  * A new function `plot.ets()` provides a decomposition plot of an ETS model.
  * `predict()` is now an alias for `forecast()` wherever there is not an existing `predict()` method.
  * The argument conf has been changed to level in all forecasting methods to be consistent with other R functions.
  * The functions `gof()` and `forecasterrors()` have been replaced by `accuracy()` which handles in-sample and out-of-sample forecast accuracy.
  * The initialization method used for a non-seasonal ETS model applied to seasonal data was changed slightly.
  * The following methods for ets objects were added: summary, coef and logLik.
  * The following methods for Arima objects were added: summary.

# forecast 1.07 (25 July 2007)
  * Bug fix in summary of in-sample errors. For ets models with multiplicative errors, the reported in-sample values of MSE, MAPE, MASE, etc., in `summary()` and `gof()` were incorrect.
  * ARIMA models with frequency greater than 49 now allowed. But there is no unit-root testing if the frequency is 50 or more, so be careful!
  * Improvements in documentation.

# forecast 1.06 (15 June 2007)
  * Bug fix in `auto.arima()`. It would not always respect the stated values of max.p, max.q, max.P and max.Q.
  * The tseries package is now installed automatically along with the forecasting bundle, whereas previously it was only suggested.

# forecast 1.05 (28 May 2007)
  * Introduced `auto.arima()` to provide a stepwise approach to ARIMA modelling. This is much faster than the old `best.arima()`.
  * The old grid-search method used by `best.arima()` is still available by using stepwise=FALSE when calling `auto.arima()`.
  * Automated choice of seasonal differences introduced in `auto.arima()`.
  * Some small changes to the starting values of ets models.
  * Fixed a bug in applying `ets()` to new data using a previously fitted model.

# forecast 1.04 (30 January 2007)
  * Added include.drift to `arima()`
  * Fixed bug in seasonal forecasting with `ets()`

# forecast 1.03 (20 October 2006)
  * Fixed some DOS line feed problems that were bothering unix users.

# forecast 1.02 (12 October 2006)
  * Added AICc option to `ets()` and `best.arima()`.
  * Corrected bug in calculation of fitted values in ets models with multiplicative errors.

# forecast 1.01 (25 September 2006)
  * Modified `ndiffs()` so that the maximum number of differences allowed is 2.

# forecast 1.0 (31 August 2006)
  * Added MASE to `gof()`.
  * `croston()` now returns fitted values and residuals.
  * `arima()` no longer allows linear trend + ARMA errors by default. Also, drift in non-stationary models can be turned off.
  * This version is the first to be uploaded to CRAN.

# forecast 0.99992 (8 August 2006)
  * Corrections to help files. No changes to functionality.

# forecast 0.99991 (2 August 2006)
  * More bug fixes. `ets()` now converges to a good model more often.

# forecast 0.9999 (1 August 2006)
  * Mostly bug fixes.
  * A few data sets have been moved from fma to forecast as they are not used in my book.
  * `ets()` is now considerably slower but gives better results. Full optimization is now the only option (which is what slows it down). I had too many problems with poor models when partial optimization was used. I'll work on speeding it up sometime, but this is not a high priority. It is fast enough for most use. If you really need to forecast 1000 series, run it overnight.
  * In `ets()`, I've experimented with new starting conditions for optimization and it seems to be fairly robust now.
  * Multiplicative error models can no longer be applied to series containing zeros or negative values. However, the forecasts from these models are not constrained to be positive.

# forecast 0.999 (27 July 2006)
  * The package has been turned into three packages forming a bundle. The functions and a few datasets are still in the forecast package. The data from Makridakis, Wheelwright and Hyndman (1998) is now in the fma package. The M-competition data is now in the Mcomp package. Both fma and Mcomp automatically load forecast.
  * This is the first version available on all operating systems (not just Windows).
  * `pegels()` has been replaced by `ets()`. `ets()` only fits the model; it doesn't produce forecasts. To get forecasts, apply the forecast function to the ets object.
  * `ets()` has been completely rewritten which makes it slower, but much easier to maintain. Different boundary conditions are used and a different optimizer is used, so don't expect the results to be identical to what was done by the old `pegels()` function. To get something like the results from the old `pegels()` function, use `forecast()` on `ets()`.
  * `simulate.ets()` added to simulate from an ets model.
  * Changed name of cars to auto to avoid clash with the cars data in the datasets package.
  * arima2 functionality is now handled by `arima()` and pegels2 functionality is now handled by `ets()`.
  * `best.arima()` now allows the option of BIC to be used for model selection.
  * Croston's method added in function `croston()`.
  * `ts.display()` renamed as `tsdisplay()`
  * `mean.f()` changed to `meanf()`, `theta.f()` changed to `thetaf()`, `rw.f()` changed to `rwf()`, `seasonaldummy.f()` to `seasonaldummyf()`, `sindex.f()` to `sindexf()`, and `spline.f()` to `splinef()`. These changes are to avoid potential problems if anyone introduces an 'f' class.

# forecast 0.994 (4 October 2004)
  * Fixed bug in `arima()` which caused `predict()` to sometimes fail when there was no xreg term.
  * More bug fixes in handling regression terms in arima models.
  * New `print.Arima()` function for more informative output.

# forecast 0.993 (20 July 2004)
  * Added forecast function for structural time series models obtained using `StructTS()`.
  * Changed default parameter space for `pegels()` to force admissibility.
  * Added option to `pegels()` to allow restriction to models with finite forecast variance. This restriction is imposed by default.
  * Fixed bug in `arima.errors()`. Changes made to `arima()` meant `arima.errors()` was often returning an error message.
  * Added a namespace to the package making fewer functions visible to the user.

# forecast 0.99 (21 May 2004)
  * Added automatic selection of order of differencing for `best.arima()`.
  * Added possibility of linear trend in arima models.
  * In `pegels()`, option added to allow parameters of an exponential smoothing model to be in the 'admissible' (or invertible) region rather than within the usual (0,1) region.
  * Fixed some bugs in `pegels()`.
  * Included all M1 and M3 data and some functions to subset and plot them.
  * Note: This package will only work in R1.9 or later.

# forecast 0.98 (23 August 2003)
  * Added facilities in `pegels()`.
      o It is now possible to specify particular values of the smoothing parameters rather than always use the optimized values. If none are specified, the optimal values are still estimated as before.
      o It is also possible to specify upper and lower bounds for each parameter separately.
  * New function: `theta.f()`. This implements the Theta method which did very well in the M3 competition.
  * A few minor problems with `pegels()` fixed and a bug in `forecast.plot()` that meant it didn't work when the series contained missing values.

# forecast 0.972 (11 July 2003)
  * Small bug fix: `pegels()` did not return correct model when model was partially specified.

# forecast 0.971 (10 July 2003)
  * Minor fixes to make sure the package will work with R v1.6.x. No changes to functionality.

# forecast 0.97 (9 July 2003)
  * Fully automatic forecasting based on the state space approach to exponential smoothing has now been added. For technical details, see Hyndman, Koehler, Snyder and Grose (2002).
  * Local linear forecasting using cubic smoothing splines added. For technical details, see Hyndman, King, Pitrun and Billah (2002).

# forecast 0.96 (15 May 2003)
  * Many functions rewritten to make use of methods and classes. Consequently several functions have had their names changed and many arguments have been altered. Please see the help files for details.
  * Added functions `forecast.Arima()` and `forecat.ar()`
  * Added functions `gof()` and `seasadj()`
  * Fixed bug in `plot.forecast()`. The starting date for the plot was sometimes incorrect.
  * Added residuals components to `rw.f()` and `mean.f()`.
  * Made several changes to ensure compatibility with Rv1.7.0.
  * Removed a work-around to fix a bug in `monthplot()` command present in R v<=1.6.2.
  * Fixed the motel data set (columns were swapped)
