# Create Threshold Transitions

This example shows how to create a threshold transition object and access its properties.

Threshold-switching models (`tsVAR`) switch among states, and corresponding submodels, when the value of a univariate threshold variable changes relative to a set of threshold levels. Threshold transitions can be discrete (TAR models), resulting in abrupt changes of state, or smooth (STAR models), resulting in a continuous mixing of states. The switching mechanism is encapsulated in a threshold transition object of type `threshold`. Each object describes the levels and rates of the transitions it contains.

### Discrete Threshold Transitions

Create a threshold transition object with discrete transitions at levels 2 and 8.

`ttD = threshold([2 8])`
```ttD = threshold with properties: Type: 'discrete' Levels: [2 8] Rates: [] StateNames: ["1" "2" "3"] NumStates: 3 ```

`ttD` is a `threshold` object representing threshold transitions of an arbitrary threshold variable. The command line lists its properties; you can access the value of a property by using dot notation, for example, access the number of states using `ttD.NumStates`.

The two levels divide the threshold variable range into three distinct states labeled "1", "2" and "3" by default. The states correspond to values of a threshold variable in the intervals $\left(-\infty ,2\right)$, $\left[2,8\right)$, and $\left[8,\infty \right)$, respectively.

### Smooth Threshold Transitions

Transition functions describe each transition. Their range includes values between 0 and 1. Smooth transitions require a rate that indicates how quickly the mixing of states occurs in the neighborhood of a threshold level. Three common types of smooth transition functions are [1]: asymmetric transitions associated with normal and logistic cumulative distribution functions, and symmetric transitions associated with exponential functions.

Create threshold transitions with logistic transitions among all states, and assign names `"Low"`, `"Med"`, and `"Hi"` to the states. Specify that the transition rate from `"Low"` to `"Med"` is 3.5, and the rate from `"Med"` to `"Hi"` is 1.5.

```ttL = threshold([2 8],Type="logistic",Rates=[3.5 1.5], ... StateNames=["Low" "Med" "High"])```
```ttL = threshold with properties: Type: 'logistic' Levels: [2 8] Rates: [3.5000 1.5000] StateNames: ["Low" "Med" "High"] NumStates: 3 ```

### Custom Transition Function

The `threshold` function supports custom transition functions, specified as a function handle using the name-value argument TransitionFunction.

Create a function that models the extreme-value cumulative distribution. The inputs to the transition function are the transition variable data `z`, threshold levels `t`, and rates `r`.

`tfun = @(z,t,r)evcdf(z,t,1/r);`

Create threshold transition with extreme-value cumulative distribution transitions.

```ttEV = threshold([2 8],Type="custom",TransitionFunction=tfun, ... Rates=[3.5 1.5])```
```ttEV = threshold with properties: Type: 'custom' Levels: [2 8] Rates: [3.5000 1.5000] StateNames: ["1" "2" "3"] NumStates: 3 ```

The transition function is hidden in the display, but accessible, like any other property, by using dot notation.

`F = ttEV.TransitionFunction`
```F = function_handle with value: @(z,t,r)evcdf(z,t,1/r) ```

## References

[1] Enders, Walter. Applied Econometric Time Series. New York: John Wiley & Sons, Inc., 2009.