I have a question about TAR model. My series is Z and period is from 2003:2 to 2025:2 (monthly/ 265 observations).
The lag order of Z is 9. That's, Z ~AR(9) by AIC. I have determined transition variable as Z{2}.
Now, I need to apply Chan's method to select threshold value. That's, for linear attractor model, I need to find best SSQ and threshold values. For that, I wrote down two RATs codes, but I got wrong results.
Code: Select all
***
SET Z1 = Z{1}
SET Z2 = Z{2}
SET Z3 = Z{3}
SET Z4 = Z{4}
SET Z5 = Z{5}
SET Z6 = Z{6}
SET Z7 = Z{7}
SET Z8 = Z{8}
SET Z9 = Z{9}
***Code: Select all
compute low = 2003:2 + fix(.15*%nobs) , high = 2025:2 - fix(.15*%nobs)
compute rss_test = 1000000.0
set rss = 0.
set thresh_test = Z
order thresh_test
compute thresh = thresh_test(low)
do i = low,high
set plus = %if(z{2}<thresh_test(i),0,1)
set minus = 1 - plus
set Z1_plus = plus*z{1}
set Z2_plus = plus*z{2}
set Z3_plus = plus*z{3}
set Z4_plus = plus*z{4}
set Z5_plus = plus*z{5}
set Z6_plus = plus*z{6}
set Z7_plus = plus*z{7}
set Z8_plus = plus*z{8}
set Z9_plus = plus*z{9}
************************
set Z1_minus = minus* z{1}
set Z2_minus = minus* z{2}
set Z3_minus = minus* z{3}
set Z4_minus = minus* z{4}
set Z5_minus = minus* z{5}
set Z6_minus = minus* z{6}
set Z7_minus = minus* z{7}
set Z8_minus = minus* z{8}
set Z9_minus = minus* z{9}
*******
lin(noprint) z
# plus z1_plus z2_plus Z3_plus Z4_plus Z5_plus Z6_plus Z7_plus Z8_plus Z9_plus $
MINUS Z1_minus Z2_minus Z3_minus Z4_minus Z5_minus Z6_minus Z7_minus Z8_minus Z9_minus
***
com rss(i) = %rss
if %rss < rss_test {
compute rss_test = %rss
compute thresh = thresh_test(i)
}
end do i
dis 'We have found the attractor'
dis ' Threshold = ' thresh
set plus = %if(z{2}<THRESH,0,1)
set minus = 1 - plus
set Z1_plus = plus*z{1}
set Z2_plus = plus*z{2}
set Z3_plus = plus*z{3}
set Z4_plus = plus*z{4}
set Z5_plus = plus*z{5}
set Z6_plus = plus*z{6}
set Z7_plus = plus*z{7}
set Z8_plus = plus*z{8}
set Z9_plus = plus*z{9}
************************
set Z1_minus = minus* z{1}
set Z2_minus = minus* z{2}
set Z3_minus = minus* z{3}
set Z4_minus = minus* z{4}
set Z5_minus = minus* z{5}
set Z6_minus = minus* z{6}
set Z7_minus = minus* z{7}
set Z8_minus = minus* z{8}
set Z9_minus = minus* z{9}
*******
LINREG(print) z
# plus z1_plus z2_plus Z3_plus Z4_plus Z5_plus Z6_plus Z7_plus Z8_plus Z9_plus $
MINUS Z1_minus Z2_minus Z3_minus Z4_minus Z5_minus Z6_minus Z7_minus Z8_minus Z9_minus
sca(Header='Residual Sums of Squares',style=lines,hlabel='Threshold') 1 ;
# thresh_test rss low high
My question:
The code gives error as follows:
Can't Interpret SERIES[REAL] = SERIES[REAL]
## SX27. Illegal Combination of Data Types for Operation
>>>> + fix(.15*%nobs) ,<<<<
When I wrote down "SET low = 2003:02 + fix(.15*%nobs) , high = 2025:02 - fix(.15*%nobs)" in the first code, then I got an incorrect result. And I got the following wrong graph which I attached.
How can I correct these codes? or Which code should I use?
Thank you so much for your helps,
Best.