gpt4 book ai didi

r - 从 R 中的 ca.jo 中的 Johannsen 协整法估计 t 统计量

转载 作者:行者123 更新时间:2023-12-04 02:15:42 24 4
gpt4 key购买 nike

我正在研究 R 中“vars”库中的小插图工作示例。我理解小插图中的大部分示例,期望小插图的表 5 here

运行以下代码,我看到协整向量和加载点估计值的来源,但我不明白 t 统计量的来源。

我运行了这段代码:

library("vars")
data("Canada")
Canada <- Canada[, c("prod", "e", "U", "rw")]
vecm <- ca.jo(Canada[, c("rw", "prod", "e", "U")], type = "trace", ecdet = "trend", K = 3, spec = "transitory")
vecm.r1 <- cajorls(vecm, r = 1)

并得到这些特征向量和权重,

    Eigenvectors, normalised to first column:
(These are the cointegration relations)

rw.l1 prod.l1 e.l1 U.l1 trend.l1
rw.l1 1.00000000 1.0000000 1.0000000 1.000000 1.0000000
prod.l1 0.54487553 -3.0021508 0.7153696 -7.173608 0.4087221
e.l1 -0.01299605 -3.8867890 -2.0625220 -30.429074 -3.3884676
U.l1 1.72657188 -10.2183404 -5.3124427 -49.077209 -5.1326687
trend.l1 -0.70918872 0.6913363 -0.3643533 11.424630 0.1157125

Weights W:
(This is the loading matrix)

rw.l1 prod.l1 e.l1 U.l1 trend.l1
rw.d -0.084814510 0.048563997 -0.02368720 -0.0016583069 5.722004e-12
prod.d -0.011994081 0.009204887 -0.09921487 0.0020567547 -7.478364e-12
e.d -0.015606039 -0.038019447 -0.01140202 -0.0005559337 -1.229460e-11
U.d -0.008659911 0.020499657 0.02896325 0.0009140795 1.103862e-11

它在表 5 中给出了正确的 alpha 和 beta 值。

但我不知道表 5 中的 t 统计量是在代码中的何处导出的。请问有人能给我指出正确的方向吗?

问候,

詹姆斯

最佳答案

我对 urca 最大的不满是:它不计算 beta 向量的 t 统计量。看起来作者可能在某个时候想要包含该功能(因此您在上面引用的小插图中的表 5)但没有抽出时间实际去做。

好消息:对于一个协整向量 (r=1) 的情况,有示例代码可用于获取标准误差。看这个discussion thread

当存在单个协整向量时与 urca 的长期协整关系的标准误

继续上面的示例,上面讨论的 nabble 线程给出的代码是:

 alpha <- coef(vecm.r1$rlm)[1, ]  # the coefficients on ecm1
beta <- vecm.r1$beta # the point estimates of beta

resids <- resid(vecm.r1$rlm)
N <- nrow(resids)
sigma <- crossprod(resids) / N

## t-stats for beta
beta.se <- sqrt(diag(kronecker(solve(crossprod(vecm@RK[, -1])),
solve(t(alpha) %*% solve(sigma) %*% alpha))))
beta.t <- c(NA, beta[-1] / beta.se)
names(beta.t) <- rownames(vecm.r1$beta)
beta.t

这完全重现了小插图给出的标准错误。

与Gretl比较

如果我们使用 gretl 运行相同的模型,我们会得到完全相同的 beta 点估计值,但标准误差大致一致:

Gretl Standard Errors for Cointegrating Vector

奖励:使用 urca 和 texreg 创建具有标准误差的协整向量的 LaTeX 表

您需要编写一个稍微笨拙的“提取”函数来将标准误差和点估计值组合成 texreg 喜欢的形式:

 extract.cajo_beta <- function(cajo, orls) {
alpha <- coef(orls$rlm)[1, ];
resids <- resid(orls$rlm);
N <- nrow(resids);
sigma <- crossprod(resids) / N;

# get standard errors and p-values
beta <- orls$beta
beta.se <- sqrt(diag(kronecker(solve(crossprod(cajo@RK[, -1])),
solve(t(alpha) %*% solve(sigma) %*% alpha))));
beta.se2 <- c(NA, beta.se);
beta.t <- c(NA, beta[-1] / beta.se);
beta.pval <- dt(beta.t, df= orls$rlm$df.residual)

tr <- createTexreg(coef.names = as.character(rownames(beta)), coef = as.numeric(beta), se = beta.se2,
pvalues = beta.pval,
# remove this goodness of fit measure afterwards from the table
gof.names = c('Dummy'), gof = c(1), gof.decimal = c(FALSE)
);
return(tr);
}

然后运行:

 > screenreg(extract.cajo_beta(vecm, vecm.r1))

=================
Model 1
-----------------
rw.l1 1.00

prod.l1 0.54
(0.61)
e.l1 -0.01
(0.68)
U.l1 1.73
(1.45)
trend.l1 -0.71 *
(0.28)
-----------------
Dummy 1
=================
*** p < 0.001, ** p < 0.01, * p < 0.05

关于r - 从 R 中的 ca.jo 中的 Johannsen 协整法估计 t 统计量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33883920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com