Title: | Fit the Hysteretic Threshold Autoregressive Model |
---|---|
Description: | Estimate parameters of the hysteretic threshold autoregressive (HysTAR) model, using conditional least squares. In addition, you can generate time series data from the HysTAR model. For details, see Li, Guan, Li and Yu (2015) <doi:10.1093/biomet/asv017>. |
Authors: | Daan de Jong [aut, cre] |
Maintainer: | Daan de Jong <[email protected]> |
License: | MIT + file LICENSE |
Version: | 1.2.1 |
Built: | 2025-02-05 04:40:49 UTC |
Source: | https://github.com/daandejongen/hystar |
Estimate the parameters of the hysteretic threshold autoregressive (HysTAR) model.
hystar_fit( data, r = c(0.1, 0.9), d = 0L, p0 = 1L, p1 = 1L, p_select = c("bic", "aic", "aicc", "aiccp"), thin = FALSE, tar = FALSE, show_progress = FALSE )
hystar_fit( data, r = c(0.1, 0.9), d = 0L, p0 = 1L, p1 = 1L, p_select = c("bic", "aic", "aicc", "aiccp"), thin = FALSE, tar = FALSE, show_progress = FALSE )
data |
a vector, matrix or data.frame containing the outcome variable
|
r |
A vector or a matrix with search values for
|
d |
A numeric vector with one or more values for the search space of the delay parameter. Defaults to 1. Typically, d is not very large, so a reasonable search space might be 0, 1, 2, ..., 5. |
p0 |
A numeric vector with one or more values for the search space of the autoregressive order of Regime 0. Defaults to 1. |
p1 |
Same as |
p_select |
The information criterion that should be minimized to select
the orders
|
thin |
|
tar |
|
show_progress |
|
In regime 0, is predicted by values up to
.
This implies that the first
time points can not be predicted. E.g.,
if
,
would miss a value from
. Similarly, the
value of the delay parameter implies that the regime is unknown for the first
time points. To ensure that the same data are used on all options for
d
, p0
and p1
, the first max(d, p0, p1)
observations are discarded for
estimation of the parameters.
An object of S3 class hystar_fit
, which is a list
containing the following
items:
$data
. A data.frame
containing
y
, the outcome variable
z
, the threshold variable
H
, a logical vector that indicates at which time points the hysteresis
effect is happening. Note that this vector starts with NA
(s), since not all
values can be predicted in the HysTAR model. See Details.
R
, the regime indicator vector. (Also starts with NA
(s).)
$residuals
. Also accessible with the residuals()
S3 method.
$coefficients
, a vector with the estimated coefficients.
With the coef()
S3 method, the coefficients are represented in a matrix.
Use the confint()
method to get the confidence intervals of the estimates.
$delay
, a scalar with the estimate for the delay parameter.
$thresholds
, a vector with the estimates of the thresholds.
$orders
, a vector with the estimates of the orders.
$resvar
, a vector with the estimates of the residual variances.
$rss
, the minimized residual sum of squares.
$ic
, a vector with the aic, the corrected aic and the bic.
$n
, a vector with the total effective observations and the
effective obeservations in regime 0 and regime 1.
$eff
, a vector with the time indicators of the effective observations.
$equiv
, a matrix containing equivalent estimates for the delay and thresholds,
i.e., estimates that imply exactly the same regime indicator vector, and
as a result the same minimal residual sum of squares.
$r_search
, a vector with the -values that were considered.
$tar
, Logical: TRUE
if a TAR model was fitted.
Implemented generics for the hystar_fit
class:
plot()
plots the z
variable and the y
variable above one another.
Shading of the background visualizes the regimes. Thresholds are drawn as
horizontal lines in the z
plot. You can provide regime_names (char vector of 2),
main (char vector of 1), xlab (char vector of 1) and ylab (char vector of 2).
summary()
, this also provides the p-values and standard errors for the
estimates of the coefficients.
print()
prints the estimates within the mathematical representation of the model.
Note that the scalar multiplied with e[t]
is the standard deviation
of the residuals, not the variance. See also the model definition above.
coef()
confint()
residuals()
fitted()
nobs()
The HysTAR model is defined as:
with
where denotes the order of regime
with
coefficients
,
is the standard deviation of the residuals, and
is a delay parameter. The parameters of primary interest are
the thresholds
. We let
, where
is the number of observations.
Daan de Jong.
Li, Guodong, Bo Guan, Wai Keung Li, en Philip L. H. Yu. ‘Hysteretic Autoregressive Time Series Models’. Biometrika 102, nr. 3 (september 2015): 717–23.
Zhu, Ke, Philip L H Yu, en Wai Keung Li. ‘Testing for the Buffered Autoregressive Process’. Munich Personal RePEc Archive, (november 2013).
simulated_control_variable <- z_sim() simulated_hystar_model <- hystar_sim(simulated_control_variable) fitted_hystar_model <- hystar_fit(simulated_hystar_model$data)
simulated_control_variable <- z_sim() simulated_hystar_model <- hystar_sim(simulated_control_variable) fitted_hystar_model <- hystar_fit(simulated_hystar_model$data)
directs you to the hystar website https://daandejongen.github.io/hystar/index.html
hystar_info()
hystar_info()
Nothing
With this function, you can simulate observations from the HysTAR model, given its parameter values.
hystar_sim( z, r = c(-0.5, 0.5), d = 0, phi_R0 = c(0, 0.5), phi_R1 = c(2, 0.5), resvar = c(1, 1), start_regime = NULL )
hystar_sim( z, r = c(-0.5, 0.5), d = 0, phi_R0 = c(0, 0.5), phi_R1 = c(2, 0.5), resvar = c(1, 1), start_regime = NULL )
z |
A numeric vector representing the observed threshold variable.
You can simulate |
r |
A numeric vector of length 2, representing the threshold values
|
d |
A positive whole number representing the value of the
delay parameter. It must be smaller than |
phi_R0 |
A vector containing the constant and autoregressive parameters
|
phi_R1 |
The same as |
resvar |
A numeric vector of length 2 representing the variances of the
residuals |
start_regime |
Optionally, a 0 or 1 that indicates which regime should be the
first, in case the |
Some details:
To simulate y
, 50 burn-in samples according the starting regime are used.
The coefficients imply a stationary process of if
and
. See Zhu, Yu and Li (2013), p5.
A list of class hystar_sim
with elements
$data
, a data.frame
with length(z)
rows and 4 columns:
y
, the outcome variable
z
, the threshold variable
H
, a logical vector that indicates at which time
points the hysteresis effect is happening. Note that this vector starts
with NA
(s), since the first time points have no values observed
for
.
R
, the regime indicator vector.
$thresholds
, a numeric vector with the two threshold values,
$d
, the delay parameter,
$phi
, a numeric vector containing the coefficients. The names are such
that phi_R1_2
represents , the second lag
autoregressive coefficient in Regime 1,
$orders
, a numeric vector containing the two orders, and
$resvar
, a numeric vector with the residual variances of both regimes.
Implemented generics for the hystar_sim
class:
plot()
plots the z
variable and the y
variable above one another.
Shading of the background visualizes the regimes. Thresholds are drawn as
horizontal lines in the z
plot. You can provide regime_names (char vector of 2),
main (char vector of 1), xlab (char vector of 1) and ylab (char vector of 2).
summary()
gives an overview of the true parameter values that were used.
print()
prints the parameter values within the mathematical representation
of the model. Note that the scalar multiplied with e[t]
is the standard deviation
of the residuals, not the variance. See also the model definition above.
The HysTAR model is defined as:
with
where denotes the order of regime
with
coefficients
,
is the standard deviation of the residuals, and
is a delay parameter. The parameters of primary interest are
the thresholds
. We let
, where
is the number of observations.
Daan de Jong.
Li, Guodong, Bo Guan, Wai Keung Li, en Philip L. H. Yu. ‘Hysteretic Autoregressive Time Series Models’. Biometrika 102, nr. 3 (september 2015): 717–23.
Zhu, Ke, Philip L H Yu, en Wai Keung Li. ‘Testing for the Buffered Autoregressive Process’. Munich Personal RePEc Archive, (november 2013).
simulated_control_variable <- z_sim() simulated_hystar_model <- hystar_sim(simulated_control_variable) fitted_hystar_model <- hystar_fit(simulated_hystar_model$data)
simulated_control_variable <- z_sim() simulated_hystar_model <- hystar_sim(simulated_control_variable) fitted_hystar_model <- hystar_fit(simulated_hystar_model$data)
This is a function you can use to simulate time series data
for a threshold variable of the HysTAR model. The time series is a (co)sine
wave, such that thresholds are crossed in a predictable way.
This function is designed to be used in combination with hystar_sim()
.
z_sim( n_t = 100, n_switches = 2, start_regime = 0, start_hyst = FALSE, range = c(-1, 1) )
z_sim( n_t = 100, n_switches = 2, start_regime = 0, start_hyst = FALSE, range = c(-1, 1) )
n_t |
The desired length of the simulated time series of |
n_switches |
A scalar indicating the desired number of regime switches.
Basically, it is the number of times the variable moves to (and reaches) its
minimum or to its maximum. If the thresholds are within the range of |
start_regime |
The starting regime of the HysTAR model, 0 (default) or 1. |
start_hyst |
Logical, should |
range |
A numeric vector of length 2 indicating the desired range (min, max) of |
The first value of y
that can be predicted in the HysTAR model is
at time point , where
.
This is because we need to observe
and
.
So the first observed value of
z
that determines a regime
is at time point .
To make sure that this time point corresponds to the start that you request,
z_sim()
starts with 10 extra time points. In this way, hystar_sim
can
select the appropriate time points, based on d
and p0
, p1
.
A numeric vector of length n_t
. This vector has two attributes
"start_regime"
and "start_hyst"
corresponding to the values you provided.
These attributes are used by hystar_sim()
.
The HysTAR model is defined as:
with
where denotes the order of regime
with
coefficients
,
is the standard deviation of the residuals, and
is a delay parameter. The parameters of primary interest are
the thresholds
. We let
, where
is the number of observations.
simulated_control_variable <- z_sim() simulated_hystar_model <- hystar_sim(simulated_control_variable) fitted_hystar_model <- hystar_fit(simulated_hystar_model$data)
simulated_control_variable <- z_sim() simulated_hystar_model <- hystar_sim(simulated_control_variable) fitted_hystar_model <- hystar_fit(simulated_hystar_model$data)