[Splm-commits] r60 - pkg/R
noreply at r-forge.r-project.org
noreply at r-forge.r-project.org
Wed Oct 28 23:07:26 CET 2009
Author: gpiras
Date: 2009-10-28 23:07:26 +0100 (Wed, 28 Oct 2009)
New Revision: 60
Added:
pkg/R/pbsjkJtest.R
Log:
upload new pbsjkJtestn
Added: pkg/R/pbsjkJtest.R
===================================================================
--- pkg/R/pbsjkJtest.R (rev 0)
+++ pkg/R/pbsjkJtest.R 2009-10-28 22:07:26 UTC (rev 60)
@@ -0,0 +1,80 @@
+`pbsjkJtest` <-
+function(formula, data, w, index=NULL, ...) {
+
+ ## performs Baltagi, Song, Jung and Koh J(oint) test
+ ## for RE, serial correlation and spatial corr.
+ ## Giovanni Millo, Trieste, this version: 19/03/2009
+
+ ## for our purpose data has to be (re)ordered
+ ## by time, then group (but this is cared for just below)
+
+ ## reorder data if needed
+
+ if(!is.null(index)) {
+ require(plm)
+ data <- plm.data(data, index)
+ }
+
+ gindex <- data[,1]
+ tindex <- data[,2]
+
+ ## for our purpose data has to be (re)ordered
+ ## by time, then group
+ data <- data[order(tindex, gindex),]
+
+ ## def. 'trace' function
+ tr<-function(x) sum(diag(x))
+
+ ## def. 'matrix square' function
+ msq<-function(x) x%*%x
+
+ ## make W matrix from listw object, if needed
+ if("listw" %in% class(w)) if(require(spdep)) w<-listw2mat(w)
+
+ ## retrieve restricted model's (OLS) residuals (ordered!)
+ X<-model.matrix(formula, data)
+ y<-model.response(model.frame(formula,data))
+ beta0<-lm(y~X-1)$coef
+ u.hat<-y-X%*%beta0
+
+ ## calc. data numerosities (do it better)
+ nt.<- length(y)
+ n.<- dim(w)[[1]]
+ t.<-nt./n.
+
+ ## henceforth notation as in Baltagi, Song, Jung, Koh (JE 2007)
+ Jt<-matrix(1,ncol=t.,nrow=t.)
+ In<-diag(1,n.)
+ It<-diag(1,t.)
+ G<-matrix(0,ncol=t.,nrow=t.)
+ for(i in 2:t.) {
+ G[i-1,i]<-1
+ G[i,i-1]<-1
+ }
+
+ ## NB do all this without Kronecker prods.!
+ A <- (crossprod(u.hat, kronecker(Jt, In)) %*% u.hat)/crossprod(u.hat)-1
+ F <- 1/2 * (crossprod(u.hat, kronecker(G, In)) %*% u.hat)/crossprod(u.hat)
+ H <- 1/2 * (crossprod(u.hat, kronecker(It, (t(w)+w))) %*% u.hat)/crossprod(u.hat)
+ b <- tr(msq(w+t(w)))/2
+
+ LMj <- n.*t.^2 / (2*(t.-1)*(t.-2)) * (A^2 - 4*A*F + 2*t.*F^2) + (n.^2*t.)/b*H^2
+
+ df.<-3
+ pval <- pchisq(LMj,df=df.,lower.tail=FALSE)
+
+ names(LMj)="LM"
+ names(df.)<-"df"
+
+ ##(insert usual htest features)
+ dname <- deparse(formula)
+ RVAL <- list(statistic = LMj, parameter = df.,
+ method = "Baltagi, Song, Jung and Koh joint test (J)",
+ alternative = "random effects or serial corr. or spatial dependence in error terms",
+ p.value = pval,
+ data.name = dname)
+ class(RVAL) <- "htest"
+ return(RVAL)
+
+}
+
Property changes on: pkg/R/pbsjkJtest.R
___________________________________________________________________
Name: svn:executable
+
More information about the Splm-commits
mailing list