在估算具有多个自变量的GMM时, 代码是
do_gmm <- function(X)
{
DE <- X[, "DE"]
rmrf_local <- X[, "rmrf_local"]
SMB_L <- X[,"SMB_L"]
h <- cbind(as.numeric(DE,rmrf_local,SMB_L))
coef(gmm(DE ~ rmrf_local,~SMB_L, x = h))
}
r <- rollapplyr(ALLX0, 24, do_gmm, by.column = FALSE, fill = NA)
代码有效,但在输出中,我只有第一个变量如下
> r
(Intercept) rmrf_local
[1,] 0.21 -0.32
[2,] 0.32 -0.04
[3,] -0.43 -0.03
[4,] -0.42 -0.23
我需要一些事情
> r
(Intercept) rmrf_local SMB_L
[1,] 0.21 -0.32 0.34
[2,] 0.32 -0.04 0.01
[3,] -0.43 -0.03 0.21
[4,] -0.42 -0.23 0.12
我不知道为什么,输出中错过了第二个变量。好吗?
答案 0 :(得分:1)
最后,我已经解决了以下问题
do_gmm <- function(X) {
DE <- DE[,1]<- X[, "DE"]
rmrf_local <- X[, "rmrf_local"]
SMB_L <- X[,"SMB_L"]
HML_L <- X [, "HML_L"]
h <- cbind(rmrf_local,SMB_L, HML_L)
coef(gmm(DE ~ rmrf_local+SMB_L+HML_L, x = h))
}
r <- rollapplyr(ALLX0, 24, do_gmm, by.column = FALSE, fill = NA)
r <- data.frame(r)
r
# X.Intercept. rmrf_local SMB_L HML_L
#1 -5.555761e-02 0.022837356 -0.937533698 -0.0424317893
#2 -4.264533e-02 0.032031878 -0.793814606 -0.0856941501
#3 -4.468413e-02 0.023003578 -0.789339020 -0.0968315078
#4 -5.088025e-02 0.028099687 -0.866812624 -0.0189772617