我有一个阈值VAR。由于R中不可能使用非线性irf,我想用IRF来解决这个问题。
以下是我的多变量时间序列的代码,然后是TVAR
complete=ts.intersect(GDPdiff2,Inflationdiff2,Euribordiff2,CISSdiff2)
tvarcomplete= TVAR(complete, lag=4, nthresh=1, thDelay=1, thVar=complete[,1], trim=0.15)
我想将现有的时间序列与4个变量分成两个(一个VAR,其中所有变量的值具有实际GDP增长> 0和一个< 0)并且计算相应的IRF。
SPLITGDPup <- complete[(GDPdiff2>(0))]
没用。
答案 0 :(得分:0)
我对你的问题有一个两部分的答案:(1)我将向你展示如何正确地分组complete
,(2)我将指出一个非线性VAR的脉冲响应函数的资源。
您尝试对complete
进行子集的方式存在一些问题:(1)您基本上是对矩阵进行子集化,就像它是一个向量,以及(2)您使用的是长度为{的逻辑向量{1}}当你想要一个长度为length(GDPdiff2)
的逻辑向量时。为了说明,我首先制作一些示例数据,因为您没有提供您的数据:
nrow(complete)
现在我们将像你一样尝试对其进行子集化:
# set the seed for reproducibility
set.seed(123)
# make example data
ts1 <- ts(rnorm(10))
ts2 <- ts(rnorm(8))
complete <- ts.intersect(ts1, ts2)
complete
Time Series:
Start = 1
End = 8
Frequency = 1
ts1 ts2
1 -0.56047565 1.2240818
2 -0.23017749 0.3598138
3 1.55870831 0.4007715
4 0.07050839 0.1106827
5 0.12928774 -0.5558411
6 1.71506499 1.7869131
7 0.46091621 0.4978505
8 -1.26506123 -1.9666172
这导致了一个向量而不是一个矩阵。为什么?来自Hadley Wickham的Advanced R:
因为矩阵和数组是作为具有特殊属性的向量实现的,所以可以使用单个向量对它们进行子集化。在这种情况下,它们的行为就像一个向量。
此外,它从# attempt to subset like yours
complete[ts1 > 0]
[1] 1.55870831 0.07050839 0.12928774 1.71506499 0.46091621 -0.55584113
[7] 1.78691314 0.49785048 -1.96661716
的第二列中提取的元素与第一列的正元素不对齐。为什么?让我们看看您用于子集的逻辑向量:
complete
有10个元素,而ts1 > 0
[1] FALSE FALSE TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
只有8行,因为您使用的complete
只提供了完整的案例(ts.intersect
的观察次数少于ts2
。这两个问题的组合是您的子集策略不起作用的原因。以下是正确的方法:
ts1
或者,如果您知道并希望使用列号:
complete[complete[, 'ts1'] > 0, ]
ts1 ts2
[1,] 1.55870831 0.4007715
[2,] 0.07050839 0.1106827
[3,] 0.12928774 -0.5558411
[4,] 1.71506499 1.7869131
[5,] 0.46091621 0.4978505
我会提醒你做更多的谷歌搜索之前你做一个声明,“因为非线性irf在R中是不可能的”。在R中几乎任何东西都是可能的,并且由于R社区很棒,如果你知道在哪里看,你可能想要做的很多事情(关于现存的统计方法)已经被某人实施了
在您的情况下,如果您查看了GitHub repository for the package you're using a generalized impulse response function hasn't been implemented in the tsDyn package,您会看到here,其中一位作者为其创建了代码,您可以找到{{3}}这适用于complete[complete[, 1] > 0, ]
ts1 ts2
[1,] 1.55870831 0.4007715
[2,] 0.07050839 0.1106827
[3,] 0.12928774 -0.5558411
[4,] 1.71506499 1.7869131
[5,] 0.46091621 0.4978505
结果。