A copy of this question can be found on Cross Validated: https://stats.stackexchange.com/questions/645362
I am estimating a system of seemingly unrelated regressions (SUR) in R. Each of the equations has one unique regressor and one common regressor. I am using `gmm::sysGmm` and am experimenting with different weighting matrices. I get the same results (point estimates, standard errors and anything else that I can see (**except** for the value of the $J$-test) regardless of the weighting matrix. I do not think this is correct. The phenomenon persists regardless of what type of covariance matrix estimator I use: `MDS`, `CondHom` or `HAC`. It also persists regardless of whether I use unrestricted estimation or restrict the coefficients on one of the variables (the common regressor) to be equal across equations. **Question:** Why does system GMM via `gmm::sysGmm` yield identical results for any weighting matrix? How can I make it yield proper results that vary with the weighting matrix (if that makes sense and I am not mistaken, of course)? ------------------------------ R code for a reproducible example library(gmm) library(systemfit) # Generate and prepare the data n <- 1000 # sample size m <- 100 # length of the "second part" of the sample N <- 3 # number of equations set.seed(321); x <- matrix(rnorm(n*N),ncol=N); colnames(x) <- paste0("x",1:N) # generate regressors dummy <- c( rep(0,n-m), rep(1,m) ) # generate a common regressor x <- cbind(x,dummy) # include the common regressor with the rest of the regressors set.seed(123); y <- matrix(rnorm(n*N),ncol=N); colnames(y) <- paste0("y",1:N) # a placeholder for dependent variables for(i in 1:N){ y[,i] <- i + sqrt(i)*x[,i] - i*dummy + y[,i]*15*sqrt(i) # y[,i] is a linear function of x[,i] and dummy, # plus an error term with equation-specific variance } data1 <- as.data.frame(cbind(y,x)) # create a data frame of all data (y and x) # Create the model equations and moment conditions ES_g = ES_h <- list() # ES ~ equation system for(i in 1:N){ ES_g[[i]] <- as.formula(assign(paste0("eq",i), value=paste0("y",i," ~ x",i," + dummy"))) # define linear equations of SUR ES_h[[i]] <- as.formula(assign(paste0("eq",i), value=paste0( "~ x",i," + dummy"))) # define the moment conditions for GMM } # Estimate a WLS-type weighting matrix to use as a user-specified weighting matrix in GMM m0 <- systemfit(formula=ES_g, method="OLS", data=data1) OLSmat <- diag(diag(m0$residCov)); Wmat <- solve(OLSmat) # Choose the type of covariance matrix in GMM vc1 <- "MDS" vc1 <- "CondHom" vc1 <- "HAC" #vc1 <- "TrueFixed" # Choose between restricted and unrestricted estimation cec1=NULL # unrestricted cec1=3 # restrict the coefficient on the dummy to be equal across equations # Estimate the model with `sysGmm` using different weighting matrices: identity, "optimal" and manually specified m1a <- sysGmm(g=ES_g, h=ES_h, wmatrix="ident" , weightsMatrix=NULL, vcov=vc1, crossEquConst=cec1, data=data1); summary(m1a) m1b <- sysGmm(g=ES_g, h=ES_h, wmatrix="optimal", weightsMatrix=NULL, vcov=vc1, crossEquConst=cec1, data=data1); summary(m1b) m1c <- sysGmm(g=ES_g, h=ES_h, weightsMatrix=Wmat, vcov=vc1, crossEquConst=cec1, data=data1); summary(m1c) ------------------------------ R session info: R version 4.3.3 (2024-02-29 ucrt) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 19045) Matrix products: default locale: [1] LC_COLLATE=English_United States.utf8 LC_CTYPE=English_United States.utf8 [3] LC_MONETARY=English_United States.utf8 LC_NUMERIC=C [5] LC_TIME=English_United States.utf8 time zone: Europe/Berlin tzcode source: internal attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] systemfit_1.1-30 lmtest_0.9-40 zoo_1.8-12 car_3.1-2 carData_3.0-5 Matrix_1.6-1 [7] gmm_1.8 sandwich_3.0-2 loaded via a namespace (and not attached): [1] MASS_7.3-60.0.1 compiler_4.3.3 tools_4.3.3 abind_1.4-5 rstudioapi_0.15.0 grid_4.3.3 [7] lattice_0.22-5 ------------------------------ Kind regards, Richard [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.