Changes in version 0.6-10 2024-02-10
------------------------------------
o Fixed issue with aliases in Rd files.
Changes in version 0.6-9 2021-06-19
------------------------------------
o Experimental version for calling smooth::msarima() and smooth::auto.msarima() from tso().
Changes in version 0.6-8 2019-02-24
------------------------------------
o Fixed the Date field in the DESCRIPTION file (2018 -> 2019).
Changes in version 0.6-7 2019-02-23
------------------------------------
o The utilities for structural time series models have been disabled.
The package 'stsm' and the function 'KFKSDS::KF' are no longer imported.
Those utilities were an experimental version that extended the
procedure for detection of outliers in ARIMA models to other models
in state space form. The vignette still documents this approach.
If interested in the code, check previous versions or contact the maintainer.
o Fix in 'outliers.effects': computations were not correct for the case of
innovational outliers. 'c(1, mas)' is now used instead of 'c(1, -mas)' as
the MA coefficients. Reported by D. Kehl.
o Tentative approach enabled by argument 'check.rank' in 'discard.outliers'
in order to deal with perfect collinearity among the regressor variables.
o Further fixes in function 'calendar.effects' to make it independent of the locale.
Changes in version 0.6-6 2017-05-27
------------------------------------
o Fix in function 'calendar.effects'. Reported by C. Espeleta.
By using weekday as a decimal number instead of a character,
the function now works regardless of the the locale in use.
o Fix in 'locate.outliers.oloop'. https://stats.stackexchange.com/questions/281921/
If the series contains NAs, the NAs in the residuals that are passed to
'outliers.tstatistics' are now imputed with the mean of the remaining residuals;
before, those NAs were propagated throughout the t-statistics preventing the detection
of outliers at some points.
o Fix in 'discard.outliers'. https://stackoverflow.com/questions/44191499/
If all the outliers were discarded by method "en-masse", the matrix of outliers
resulted in a zero-column matrix and 'forecast::auto.arima()' returned
error when trying to assign column names to it. The zero column matrix
is now replaced by 'NULL'.
o The maximum number of iterations in the outer loop can now be set by the user
(before it was set to 4, which is currently the default). It can be set through
the argument 'maxit.oloop' in functions 'tso', 'tso0' and 'locate.outliers.oloop'.
Suggested by J. Byers and M. Dothan.
o The function 'remove.outliers' has been renamed as 'discard.outliers'.
The arguments 'remove.method' and 'remove.cval' in function 'tso' have
been renamed as 'discard.method' and 'discard.cval'.
The old names still work (except in 'tso0'), but a warning is given
as they will be most likely be ignored in a future version.
The name 'remove' may be misleading to users. A user expected this function to
remove the outliers from the original data. The series cleaned from outliers
is returned by 'tso' in the list element named 'yadj'. This function discards
(and removes from the set of potential outliers) those outliers that turned out
to be non-significant in the updated model.
o Column names (if not provided) are now assigned to argument 'xreg'.
If it is a vector, it is converted to a one-column matrix.
This simplifies the usage of this argument.
Example: before, 'tso(x, xreg=cbind(series1=series1))' was the correct usage,
now 'tso(x, xreg=series1)' or 'tso(x, xreg=seq_along(x))' work.
Changes in version 0.6-5 2016-12-08
------------------------------------
o Created "find.consecutive.outliers" to find outliers that were detected
at consecutive time points by "locate.outliers.oloop" and "locate.outliers.iloop".
If is called within the inner and outer loops and now also by "remove.outliers",
so that the whole set of outliers is also checked (not only those at the
current inner or outer iterations).
The outlier with the highest t-statistic in absolute value is kept
and the others are discarded.
This is done for all types of outliers, before it was done only for LS.
o "coefs2poly" has been rebuilt. The code has been simplified using
the output x$model$phi and x$model$theta from stats::arima().
o Note: the following change in R 3.2.1,
'arima(*, xreg = .) (for d >= 1) computes estimated variances based on a the
number of effective observations as in R version 3.0.1 and earlier. (PR#16278)',
may lead to changes in the results returned by 'tso'.
I have observed that in some examples of the manual the same coefficient
estimates are obtained, but the standard errors change slightly compared to
the version from November 2014.
This is most likely due to the above-mentioned change in 'arima' and may
affect the t-statistics that are used for the detection of outliers:
e.g., the example 'resAirp' in the documentation reported 4 outliers in the
version from November 2014, now and additional outlier LS39 is obtained.
o remove.outliers(remove.method="bottom-up"): the coefficients and t-statistics
are also updated in "moall".
o remove.outliers(remove.method="en-masse"): if outliers are discarded then the
model is refit without the discarded outliers and the coefficients and
t-statistics in "moall" are updated.
o When 'maxit' is greater than 1 in tso(), duplicates and outliers at consecutive
type points (if any) are discarded keeping the outlier from the older iteration.
Changes in version 0.6-4 2016-07-28
------------------------------------
o Development version distributed to some users (not submitted to CRAN).
o Fix in "locate.outliers": in some instances consecutive LS were not removed correctly.
Thanks to Paymon Ashourian for reporting this issue.
Changes in version 0.6-3 2016-07-07
------------------------------------
o Imported some functions in the NAMESPACE suggested by R CMD check.
o Fixed the link to some URLs given in the vignette.
Changes in version 0.6-2 2015-05-18
------------------------------------
o Development version not submitted to CRAN.
o Updated the function "coefs2poly" in order to deal with ARIMA
models that apply the regular difference operator two times, I(2).
Email Michael Dothan, May 18, 2015.
Email Diego Selle, November 24, 2015.
Changes in version 0.6-1 2015-04-15
------------------------------------
o Development version not submitted to CRAN.
o Imported stats::filter in DESCRIPTION and NAMESPACE files in order to avoid conflict
with dply::filter. Thanks to Nathan Kugland, Derek Holmes and Eric Goldsmith for reporting this.
Changes in version 0.6 2015-01-27
-----------------------------------
o The functionalities of package "stsm" have been restored now
that the package "stsm" has been updated on CRAN.
Changes in version 0.5 2015-01-25
-----------------------------------
o This is submitted to CRAN as a transitory version where some
functions related to package "stsm" are disabled.
Package "stsm.class" has been merged into package "stsm".
If the new version of "stsm" is submitted these warnings are obtained:
"Warning: replacing previous import by 'stsm.class::char2numeric'
when loading 'tsoutliers'".
If "tsoutliers" is submitted first, it requires disabling "stsm"
functionalities since the current version of "stsm" on CRAN is not updated
with the class and methods defined in package "stsm.class".
o Adapted function "tso" to the new output format from functions
"maxlik.Xd.XXX", where now information related to "xreg" is not
stored as a separate list element.
o Removed option in remove.method = "linear-regression" since now
exogenous regressors are better handled by package "stms"
(despite possible difficulties computing standard errors).
o Added warning informing that currently "maxit" > 1 is not allowed in
function "tso" for tsmethod="stsm".
Before an uninformative error was returned.
o Fixed function 'locate.outliers' for the case where the length of
argument 'types' is one.
Thanks to Boriss Siliverstovs for reporting this issue.
o The examples, DESCRIPTION and NAMESPACE files have been updated now that
the class and methods defined in package "stsm.class" have been
merged in package "stsm".
o Non-standardised residuals are used in 'locate.outliers.oloop'. Despite
the standardised residuals can be used to obtain t-statistics and decide
on the significance of outliers, coefficient estimates of these regressors
do not reflect the scale of the data and hence the series was not adjusted
correctly for the presence of outliers in the iterations run in
'locate.outliers.oloop'.
o The default arguments to fit a structural time series model has been changed
from 'stsm::maxlik.fd.scoring' to 'stsm::maxlik.td.optim' in order to take
advantage of some recent enhancements in package "stsm" when regressors are
included in the model.
o Some issues have been modified in order to deal with the presence of missing observations.
- 'locate.outliers': NA values (if any) are now ignored when obtaining 'id0resid'.
- 'outliers.tstatistics.ArimaPars' and 'outliers.tstatistics.stsmSS':
na.rm=TRUE is used in when 'quantile' is called;
NAs generated by 'filter' when obtaining 'ao.xy' are now explicitly removed
instead of removing all possible NAs present in the original series.
o The package has benefited from some updates in package "stsm" that deal with
external regressors. Now more reliable results are obtained when a "stsm" model
is used. See for example application to Nile time series in section 6.1 of the
document tsoutliers.pdf attached to the package.
o Results from some simulation exercises are reported in Section 5 of the
document tsoutliers.pdf attached to the package.
o Fixed file 'index.html' in the 'doc' directory and validated
at as HTML 4.01 Transitional.
Changes in version 0.4 2014-06-26
-----------------------------------
o The function 'tsoutliers' has been renamed as
'tso' to avoid conflict with the function of the same name
in package 'forecast'. To keep resemblance in the names,
the function 'tsoutliers0' has been renamed as 'tso0'.
o The function 'jarque.bera.test' has been renamed as
'JarqueBera.test' to avoid conflict with the function of
the same name in package 'tseries'.
o function 'plot.tsoutliers': fixed "plot(cbind(x$y, x$yadj), ..."
a typo ("x$adj" instead of "x$yadj") made the range of the y-axis
not cover the range of the original and adjusted series in some cases.
Changes in version 0.3 2014-05-17
-----------------------------------
o First version available on CRAN.
o Some level of abstraction is given to some functions using
S3 methods. The interfaces "outliers.tstatistics" and
"outliers.regressors" can now be used regardless of whether
the baseline model is an ARIMA or a structural time series model.
This has simplified some parts of the code and the prototype of
some functions where the argument "tsmethod" is no longer needed.
o The functions 'IOtstat.arima', 'AOtstat.arima', 'LStstat.arima',
'TCtstat.arima' and 'SLStstat.arima' are not exported in the NAMESPACE.
A new function 'outliers.tstatistics' has been designed as a common
interface to those functions.
o Debugging versions for the computation of the t-statistics has been removed.
The versions of 'IOtstat.arima', 'AOtstat.arima', 'LStstat.arima',
'TCtstat.arima' and 'SLStstat.arima' that seem to be faster have been chosen.
Recomputation of 'ARMAtoMA()' for each type of outlier is avoided.
o New function 'outliers' has been added. This function is useful to
easily create the input 'data.frame' (containing characters and integers)
of functions 'outliers.effects' and 'outliers.regressors.arima'. Thus,
these functions can be used as a common interface for functions
'XXeffect' and 'XXxreg', which are not necessary to be exported.
o The functions 'IOeffect', 'AOeffect', 'LSeffect', 'TCeffect and 'SLSeffect'
are not exported in the NAMESPACE. The function 'outliers.effects' is used
as a common interface to those functions.
o 'outliers.regressors.arima' has been simplified and speeded-up by choosing
the versions of 'AOxreg', 'LSxreg', 'TCxreg' and 'SLSxreg' that seem to be
faster. Recomputation of 'ARMAtoMA()' for each type of outlier is avoided.
Argument 'arimafit' is no longer needed.
o The functions 'IOxreg', 'AOxreg', 'LSxreg', 'TCxreg' and 'SLSxreg'
are not exported in the NAMESPACE. The function 'outliers.regressors.arima'
is used as a common interface to those functions.
Version 0.2
-----------------------------------
o The function 'outliers.regressors.arima' is a debugging version that uses
different versions to do the computations.