From 1afa28a3765ce57de8c81f8a2ee5890448eb6952 Mon Sep 17 00:00:00 2001 From: Keith Kranker <585071+kkranker@users.noreply.github.com> Date: Mon, 5 Mar 2018 15:57:48 -0700 Subject: [PATCH] move r code to subfolder --- CBPSBinary.R | 327 ----------------- CBPSMain.R | 890 ----------------------------------------------- CBPS_0.17.tar.gz | Bin 103770 -> 0 bytes analytic_vcov.R | 116 ------ mata classes.do | 60 ---- 5 files changed, 1393 deletions(-) delete mode 100644 CBPSBinary.R delete mode 100644 CBPSMain.R delete mode 100644 CBPS_0.17.tar.gz delete mode 100644 analytic_vcov.R delete mode 100644 mata classes.do diff --git a/CBPSBinary.R b/CBPSBinary.R deleted file mode 100644 index c2597cd..0000000 --- a/CBPSBinary.R +++ /dev/null @@ -1,327 +0,0 @@ -CBPS.2Treat<-function(treat, X, method, k, XprimeX.inv, bal.only, iterations, ATT, standardize, twostep, sample.weights, ...){ - - # There is probably an X'X missing somewhere that is causing these variance problems. - probs.min<- 1e-6 - - treat.orig<-treat - treat<-sapply(treat,function(x) ifelse(x==levels(factor(treat))[2],1,0)) - if(ATT == 2) treat<-1-treat - - if (ATT == 1){ - print(paste0("Finding ATT with T=",as.character(levels(factor(treat.orig))[2]), - " as the treatment. Set ATT=2 to find ATT with T=", - as.character(levels(factor(treat.orig))[1])," as the treatment")) - } - if (ATT == 2){ - print(paste0("Finding ATT with T=",as.character(levels(factor(treat.orig))[1]), - " as the treatment. Set ATT=1 to find ATT with T=", - as.character(levels(factor(treat.orig))[2])," as the treatment")) - } - - ##Note: Sample weights sum to n and n.c and n.t measured wrt sample weigths - sample.weights<-sample.weights/mean(sample.weights) - n<-dim(X)[1] - n.c<-sum(sample.weights[treat==0]) - n.t<-sum(sample.weights[treat==1]) - - ##Generates ATT weights. Called by loss function, etc. - ATT.wt.func<-function(beta.curr,X.wt=X){ - X<-as.matrix(X.wt) - n.c<-sum(sample.weights[treat==0]) - n.t<-sum(sample.weights[treat==1]) - n<-n.c+n.t - theta.curr<-as.vector(X%*%beta.curr) - probs.curr<-(1+exp(-theta.curr))^-1 - probs.curr<-pmin(1-probs.min,probs.curr) - probs.curr<-pmax(probs.min,probs.curr) - w1<-n/n.t*(treat-probs.curr)/(1-probs.curr) - w1 - } - - ##The gmm objective function--given a guess of beta, constructs the GMM J statistic. Used for vanilla binary treatments - gmm.func<-function(beta.curr,X.gmm=X,ATT.gmm=ATT,invV=NULL,sample.weights0=sample.weights){ - sample.weights<-sample.weights0 - ##Designate a few objects in the function. - X<-as.matrix(X.gmm) - ATT<-ATT.gmm - - ##Designate sample size, number of treated and control observations, - ##theta.curr, which are used to generate probabilities. - ##Trim probabilities, and generate weights. - n.c<-sum(sample.weights[treat==0]) - n.t<-sum(sample.weights[treat==1]) - n<-n.c+n.t - theta.curr<-as.vector(X%*%beta.curr) - probs.curr<-(1+exp(-theta.curr))^-1 - probs.curr<-pmin(1-probs.min,probs.curr) - probs.curr<-pmax(probs.min,probs.curr) - probs.curr<-as.vector(probs.curr) - if(ATT){ - w.curr<-ATT.wt.func(beta.curr)} - else{ - w.curr<-(probs.curr-1+treat)^-1} - - ##Generate the vector of mean imbalance by weights. - w.curr.del<-1/(n)*t(sample.weights*X)%*%(w.curr) - w.curr.del<-as.vector(w.curr.del) - w.curr<-as.vector(w.curr) - - ##Generate g-bar, as in the paper. - gbar<-c( 1/n*t(sample.weights*X)%*%(treat-probs.curr),w.curr.del) - - ##Generate the covariance matrix used in the GMM estimate. - ##Was for the initial version that calculates the analytic variances. - if(is.null(invV)) - { - if(ATT){ - X.1<-sample.weights^.5*X*((1-probs.curr)*probs.curr)^.5 - X.2<-sample.weights^.5*X*(probs.curr/(1-probs.curr))^.5 - X.1.1<-sample.weights^.5*X*(probs.curr)^.5 - } - else{ - X.1<-sample.weights^.5*X*((1-probs.curr)*probs.curr)^.5 - X.2<-sample.weights^.5*X*(probs.curr*(1-probs.curr))^-.5 - X.1.1<- sample.weights^.5*X - } - if (ATT){ - V<-rbind(1/n*cbind(t(X.1)%*%X.1,t(X.1.1)%*%X.1.1)*n/sum(treat), - 1/n*cbind(t(X.1.1)%*%X.1.1*n/sum(treat),t(X.2)%*%X.2*n^2/sum(treat)^2)) - } - else{ - V<-rbind(1/n*cbind(t(X.1)%*%X.1,t(X.1.1)%*%X.1.1), - 1/n*cbind(t(X.1.1)%*%X.1.1,t(X.2)%*%X.2)) - } - invV<-ginv(V) - } - - ##Calculate the GMM loss. - loss1<-as.vector(t(gbar)%*%invV%*%(gbar)) - out1<-list("loss"=loss1, "invV"=invV) - out1 - } - - gmm.loss<-function(x,...) gmm.func(x,...)$loss - - ##Loss function for balance constraints, returns the squared imbalance along each dimension. - bal.loss<-function(beta.curr,sample.weights0=sample.weights){ - sample.weights<-sample.weights0 - ##Generate theta and probabilities. - theta.curr<-as.vector(X%*%beta.curr) - probs.curr<-(1+exp(-theta.curr))^-1 - probs.curr<-pmin(1-probs.min,probs.curr) - probs.curr<-pmax(probs.min,probs.curr) - ##Generate weights. - if(ATT){ - w.curr<-1/n*ATT.wt.func(beta.curr) - } - else{ - w.curr<-1/n*(probs.curr-1+treat)^-1 - } - ##Generate mean imbalance. - loss1<-abs(t(w.curr)%*%(sample.weights*X)%*%XprimeX.inv%*%t(sample.weights*X)%*%(w.curr)) - loss1 - } - - ##Does not work with ATT. Need to fix this at some point. - gmm.gradient<-function(beta.curr, invV, ATT.gmm=ATT,sample.weights0=sample.weights) - { - sample.weights<-sample.weights0 - n.c<-sum(sample.weights[treat==0]) - n.t<-sum(sample.weights[treat==1]) - n<-n.c+n.t - ATT<-ATT.gmm - theta.curr<-as.vector(X%*%beta.curr) - probs.curr<-(1+exp(-theta.curr))^-1 - probs.curr<-pmin(1-probs.min,probs.curr) - probs.curr<-pmax(probs.min,probs.curr) - - ##Generate the vector of mean imbalance by weights. - if (ATT){ - w.curr<-ATT.wt.func(beta.curr) - } - else{ - w.curr<-(probs.curr-1+treat)^-1 - } - w.curr.del<-1/n*t(X*sample.weights)%*%(w.curr) - w.curr.del<-as.vector(w.curr.del) - w.curr<-as.vector(w.curr) - - ##Generate g-bar, as in the paper. - gbar<-c(1/n*t(X*sample.weights)%*%(treat-probs.curr),w.curr.del) - - ##Calculate derivative of g-bar - if (ATT){ - # Need to update here - dw<- -n/n.t*probs.curr/(1 - probs.curr) - dw[treat==1]<-0 - dgbar<-cbind(1/n*t(-X*sample.weights*probs.curr*(1-probs.curr))%*%X, - 1/n.t*t(X*dw*sample.weights)%*%X) - } - else{ - dgbar<-cbind(-1/n*t(X*sample.weights*probs.curr*(1-probs.curr))%*%X, - -1/n*t(X*sample.weights*(treat - probs.curr)^2/(probs.curr*(1-probs.curr)))%*%X) - } - out<-2*dgbar%*%invV%*%gbar - } - - bal.gradient<-function(beta.curr,sample.weights0=sample.weights) - { - ##Generate theta and probabilities. - sample.weights<-sample.weights0 - theta.curr<-as.vector(X%*%beta.curr) - probs.curr<-(1+exp(-theta.curr))^-1 - probs.curr<-pmin(1-probs.min,probs.curr) - probs.curr<-pmax(probs.min,probs.curr) - ##Generate weights. - if(ATT) w.curr<-1/n*ATT.wt.func(beta.curr) - else w.curr<-1/n*(probs.curr-1+treat)^-1 - - if (ATT){ - dw2<- -n/n.t*probs.curr/(1 - probs.curr) - dw2[treat==1]<-0 - dw<-1/n*t(X*dw2) - } - else{ - dw<-1/n*t(-X*(treat-probs.curr)^2/(probs.curr*(1-probs.curr))) - } - ##Generate mean imbalance. - loss1<-t(w.curr*sample.weights)%*%X%*%XprimeX.inv%*%t(X)%*%(w.curr*sample.weights) - out<-sapply(2*dw%*%X%*%XprimeX.inv%*%t(X)%*%(sample.weights*w.curr), function (x) ifelse((x > 0 & loss1 > 0) | (x < 0 & loss1 < 0), abs(x), -abs(x))) - out - } - - n<-length(treat) - n.t<-sum(treat==1) - - ##GLM estimation - glm1<-suppressWarnings(glm(treat~X-1,family=binomial)) - glm1$coef[is.na(glm1$coef)]<-0 - probs.glm<-glm1$fit - glm1$fit<-probs.glm<-pmin(1-probs.min,probs.glm) - glm1$fit<-probs.glm<-pmax(probs.min,probs.glm) - beta.curr<-glm1$coef - beta.curr[is.na(beta.curr)]<-0 - - alpha.func<-function(alpha) gmm.loss(beta.curr*alpha) - beta.curr<-beta.curr*optimize(alpha.func,interval=c(.8,1.1))$min - - ##Generate estimates for balance and CBPSE - gmm.init<-beta.curr - this.invV<-gmm.func(gmm.init)$invV - - if (twostep) - { - opt.bal<-optim(gmm.init, bal.loss, control=list("maxit"=iterations), method="BFGS", gr = bal.gradient, hessian=TRUE) - } - else - { - opt.bal<-optim(gmm.init, bal.loss, control=list("maxit"=iterations), method="BFGS", hessian=TRUE) - } - beta.bal<-opt.bal$par - - if(bal.only) opt1<-opt.bal - - if(!bal.only) - { - if (twostep) - { - gmm.glm.init<-optim(gmm.init, gmm.loss, control=list("maxit"=iterations), method="BFGS", hessian=TRUE, gr = gmm.gradient, invV = this.invV) - gmm.bal.init<-optim(beta.bal, gmm.loss, control=list("maxit"=iterations), method="BFGS", hessian=TRUE, gr = gmm.gradient, invV = this.invV) - } - else - { - gmm.glm.init<-optim(gmm.init, gmm.loss, control=list("maxit"=iterations), method="BFGS", hessian=TRUE) - gmm.bal.init<-optim(beta.bal, gmm.loss, control=list("maxit"=iterations), method="BFGS", hessian=TRUE) - } - if(gmm.glm.init$val0]) - - #Handle sample weights - if(is.null(sample.weights)) sample.weights<-rep(1,nrow(X)) - - # Parse formulae 2 and 3, if they are necessary - if (xor(is.null(baseline.formula), is.null(diff.formula))){ - stop("Either baseline.formula or diff.formula not specified. Both must be specified to use CBPSOptimal. Otherwise, leave both NULL.") - } - if(!is.null(baseline.formula)) - { - baselineX<-model.matrix(terms(baseline.formula)) - baselineX<-baselineX[,apply(baselineX,2,sd)>0] - diffX<- model.matrix(terms(diff.formula)) - diffX<-diffX[,apply(as.matrix(diffX),2,sd)>0] - } - else - { - baselineX <- NULL - diffX <- NULL - } - - fit <- eval(call("CBPS.fit", X = X, treat = Y, ATT=ATT, - intercept = attr(mt, "intercept") > 0L, method=method, iterations=iterations, - standardize = standardize, twostep = twostep, - baselineX = baselineX, diffX = diffX,sample.weights=sample.weights)) - - fit$na.action <- attr(mf, "na.action") - xlevels <- .getXlevels(mt, mf) - fit$data<-data - fit$call <- call - fit$formula <- formula - fit$terms<-mt - fit -} - -#' CBPS.fit determines the proper routine (what kind of treatment) and calls the -#' approporiate function. It also pre- and post-processes the data -#' -#' -#' @param ATT Default is 1, which finds the average treatment effect on the -#' treated interpreting the second level of the treatment factor as the -#' treatment. Set to 2 to find the ATT interpreting the first level of the -#' treatment factor as the treatment. Set to 0 to find the average treatment -#' effect. For non-binary treatments, only the ATE is available. -#' @param iterations An optional parameter for the maximum number of iterations -#' for the optimization. Default is 1000. -#' @param standardize Default is \code{TRUE}, which normalizes weights to sum -#' to 1 within each treatment group. For continuous treatments, normalizes -#' weights to sum up to 1 for the entire sample. Set to \code{FALSE} to return -#' Horvitz-Thompson weights. -#' @param method Choose "over" to fit an over-identified model that combines -#' the propensity score and covariate balancing conditions; choose "exact" to -#' fit a model that only contains the covariate balancing conditions. -#' @param twostep Default is \code{TRUE} for a two-step estimator, which will -#' run substantially faster than continuous-updating. Set to \code{FALSE} to -#' use the continuous-updating estimator described by Imai and Ratkovic (2014). -#' @param treat A vector of treatment assignments. Binary or multi-valued -#' treatments should be factors. Continuous treatments should be numeric. -#' @param X A covariate matrix. -#' @param sample.weights Survey sampling weights for the observations, if -#' applicable. When left NULL, defaults to a sampling weight of 1 for each -#' observation. -#' @param baselineX Similar to \code{baseline.formula}, but in matrix form. -#' @param diffX Similar to \code{diff.formula}, but in matrix form. -#' @param ... Other parameters to be passed through to \code{optim()}. -#' -#' @return CBPS.fit object -#' -#' @export -#' -CBPS.fit<-function(treat, X, baselineX, diffX, ATT, method, iterations, standardize, twostep, sample.weights=sample.weights,...){ - # Special clause interprets T = 1 or 0 as a binary treatment, even if it is numeric - if ((levels(factor(treat))[1] %in% c("FALSE","0",0)) & (levels(factor(treat))[2] %in% c("TRUE","1",1)) - & (length(levels(factor(treat))) == 2)) - { - treat<-factor(treat) - } - - # Declare some constants and orthogonalize Xdf. - - k=0 - if(method=="over") bal.only=FALSE - if(method=="exact") bal.only=TRUE - - names.X<-colnames(X) - names.X[apply(X,2,sd)==0]<-"(Intercept)" - - # Only preprocess if not doing CBPS Optimal - X.orig<-X - if(is.null(baselineX)){ - x.sd<-apply(as.matrix(X[,-1]),2,sd) - Dx.inv<-diag(c(1,x.sd)) - x.mean<-apply(as.matrix(X[,-1]),2,mean) - X[,-1]<-apply(as.matrix(X[,-1]),2,FUN=function(x) (x-mean(x))/sd(x)) - svd1<-svd(X) - X<-svd1$u - } - k<-qr(X)$rank - if (k < ncol(X)) stop("X is not full rank") - - # When you take the svd, this is the identity matrix. Perhaps - # we forgot to work this in somewhere - XprimeX.inv<-ginv(t(sample.weights^.5*X)%*%(sample.weights^.5*X)) - - # Determine the number of treatments - if (is.factor(treat)) { - no.treats<-length(levels(treat)) - if (no.treats > 4) stop("Parametric CBPS is not implemented for more than 4 treatment values. Consider using a continuous value.") - if (no.treats < 2) stop("Treatment must take more than one value") - - if (no.treats == 2) - { - if (!is.null(baselineX) && !is.null(diffX)) - { - if(ATT==1) - { - message("CBPSOptimal does not support ATT=1 for now. Try ATT=0.") - } - output<-CBPSOptimal.2Treat(treat, X, baselineX, diffX, iterations, ATT=0, standardize = standardize) - } - else - { - output<-CBPS.2Treat(treat, X, method, k, XprimeX.inv, bal.only, iterations, ATT, standardize = standardize, twostep = twostep, sample.weights=sample.weights) - } - } - - if (no.treats == 3) - { - output<-CBPS.3Treat(treat, X, method, k, XprimeX.inv, bal.only, iterations, standardize = standardize, twostep = twostep, sample.weights=sample.weights) - } - - if (no.treats == 4) - { - output<-CBPS.4Treat(treat, X, method, k, XprimeX.inv, bal.only, iterations, standardize = standardize, twostep = twostep, sample.weights=sample.weights) - } - - # Reverse the svd, centering and scaling - if (is.null(baselineX)){ - d.inv<- svd1$d - d.inv[d.inv> 1e-5]<-1/d.inv[d.inv> 1e-5] - d.inv[d.inv<= 1e-5]<-0 - beta.opt<-svd1$v%*%diag(d.inv)%*%coef(output) - beta.opt[-1,]<-beta.opt[-1,]/x.sd - beta.opt[1,]<-beta.opt[1,]-matrix(x.mean%*%beta.opt[-1,]) - } - else{ #added by Xiaolin to deal with cases when baselineX is not null. (12/26/2016) - beta.opt<-as.matrix(coef(output)) - } - output$coefficients<-beta.opt - output$x<-X.orig - - rownames(output$coefficients)<-names.X - - # Calculate the variance - variance<-output$var - - if (no.treats == 2){ - colnames(output$coefficients)<-c("Treated") - if (is.null(baselineX)){ - output$var<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%variance%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - } - else{ - output$var<-variance - } - colnames(output$var)<-names.X - rownames(output$var)<-colnames(output$var) - } - - if (no.treats == 3){ - colnames(output$coefficients)<-levels(as.factor(treat))[c(2,3)] - var.1.1<-variance[1:k,1:k] - var.1.2<-variance[1:k,(k+1):(2*k)] - var.2.1<-variance[(k+1):(2*k),1:k] - var.2.2<-variance[(k+1):(2*k),(k+1):(2*k)] - trans.var.1.1<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.1.1%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.1.2<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.1.2%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.2.1<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.2.1%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.2.2<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.2.2%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - output$var<-rbind(cbind(trans.var.1.1,trans.var.1.2),cbind(trans.var.2.1,trans.var.2.2)) - colnames(output$var)<-c(paste0(levels(as.factor(treat))[2],": ", names.X),paste0(levels(as.factor(treat))[3], ": ", names.X)) - rownames(output$var)<-colnames(output$var) - } - - if (no.treats == 4) - { - colnames(output$coefficients)<-levels(as.factor(treat))[c(2,3,4)] - var.1.1<-variance[1:k,1:k] - var.1.2<-variance[1:k,(k+1):(2*k)] - var.1.3<-variance[1:k,(2*k+1):(3*k)] - var.2.1<-variance[(k+1):(2*k),1:k] - var.2.2<-variance[(k+1):(2*k),(k+1):(2*k)] - var.2.3<-variance[(k+1):(2*k),(2*k+1):(3*k)] - var.3.1<-variance[(2*k+1):(3*k),1:k] - var.3.2<-variance[(2*k+1):(3*k),(k+1):(2*k)] - var.3.3<-variance[(2*k+1):(3*k),(2*k+1):(3*k)] - trans.var.1.1<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.1.1%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.1.2<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.1.2%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.1.3<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.1.3%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.2.1<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.2.1%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.2.2<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.2.2%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.2.3<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.2.3%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.3.1<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.3.1%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.3.2<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.3.2%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - trans.var.3.3<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.3.3%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - output$var<-rbind(cbind(trans.var.1.1,trans.var.1.2,trans.var.1.3),cbind(trans.var.2.1,trans.var.2.2,trans.var.2.3),cbind(trans.var.3.1,trans.var.3.2,trans.var.3.3)) - - colnames(output$var)<-c(paste0(levels(as.factor(treat))[2],": ", names.X),paste0(levels(as.factor(treat))[3], ": ", names.X),paste0(levels(as.factor(treat))[4], ": ", names.X)) - rownames(output$var)<-colnames(output$var) - } - } else if (is.numeric(treat)) { - # Warn if it seems like the user meant to input a categorical treatment - if (length(unique(treat)) <= 4) warning("Treatment vector is numeric. Interpreting as a continuous treatment. To solve for a binary or multi-valued treatment, make treat a factor.") - output<-CBPS.Continuous(treat, X, method, k, XprimeX.inv, bal.only, iterations, standardize = standardize, twostep = twostep, sample.weights=sample.weights) - - # Reverse svd, centering, and scaling - d.inv<- svd1$d - d.inv[d.inv> 1e-5]<-1/d.inv[d.inv> 1e-5] - d.inv[d.inv<= 1e-5]<-0 - beta.opt<-svd1$v%*%diag(d.inv)%*%coef(output) - beta.opt[-1,]<-beta.opt[-1,]/x.sd - - beta.opt[1,]<-beta.opt[1,]-matrix(x.mean%*%beta.opt[-1,]) - output$coefficients<-as.matrix(beta.opt) - output$x<-X.orig - - rownames(output$coefficients)<-c(names.X) - - # Calculate variance - var.1<-output$var - output$var<-Dx.inv%*%ginv(t(X.orig)%*%X.orig)%*%t(X.orig)%*%X%*%svd1$v%*%ginv(diag(svd1$d))%*%var.1%*%ginv(diag(svd1$d))%*%t(svd1$v)%*%t(X)%*%X.orig%*%ginv(t(X.orig)%*%X.orig)%*%Dx.inv - rownames(output$var)<-names.X - colnames(output$var)<-rownames(output$var) - } else { - stop("Treatment must be either a factor or numeric") - } - - output$method<-method - - output -} - -#' Print coefficients and model fit statistics -#' @param x an object of class \dQuote{CBPS} or \dQuote{npCBPS}, usually, a result of a call to \code{CBPS} or \code{npCBPS}. -#' @param digits the number of digits to keep for the numerical quantities. -#' @param ... Additional arguments to be passed to summary. -#' -#' @export -#' -print.CBPS <- function(x, digits = max(3, getOption("digits") - 3), ...) { - cat("\nCall: ", paste(deparse(x$call), sep = "\n", collapse = "\n"), - "\n\n", sep = "") - if (length(coef(x))) { - cat("Coefficients:\n") - print.default(format(x$coefficients, digits = digits), - print.gap = 2, quote = FALSE) - } - else cat("No coefficients\n\n") - if (max(class(x) == "CBPScontinuous")) - cat("\nSigma-Squared: ",x$sigmasq) - if (nzchar(mess <- naprint(x$na.action))) - cat(" (", mess, ")\n", sep = "") - cat("Residual Deviance:\t", format(signif(x$deviance, - digits)), "\n") - cat("J-Statistic:\t ", format(signif(x$J)),"\n") - cat("Log-Likelihood:\t ",-0.5*x$deviance, "\n") - invisible(x) -} - -# Expands on print by including uncertainty for coefficient estimates - - -#' Summarizing Covariate Balancing Propensity Score Estimation -#' -#' Prints a summary of a fitted CBPS object. -#' -#' Prints a summmary of a CBPS object, in a format similar to glm. The -#' variance matrix is calculated from the numerical Hessian at convergence of -#' CBPS. -#' -#' @param object an object of class \dQuote{CBPS}, usually, a result of a call -#' to CBPS. -#' @param ... Additional arguments to be passed to summary. -#' @return \item{call}{The matched call.} \item{deviance.residuals}{The five -#' number summary and the mean of the deviance residuals.} -#' \item{coefficients}{A table including the estimate for the each coefficient -#' and the standard error, z-value, and two-sided p-value for these estimates.} -#' \item{J}{Hansen's J-Statistic for the fitted model.} -#' \item{Log-Likelihood}{The log-likelihood of the fitted model.} -#' @author Christian Fong, Marc Ratkovic, and Kosuke Imai. -#' @seealso \link{CBPS}, \link{summary} -#' -#' @export -#' -summary.CBPS<-function(object, ...){ - ##x <- summary.glm(object, dispersion = dispersion, correlation = correlation, symbolic.cor = symbolic.cor, ...) - x<-NULL - names.X<-as.vector(names(object$coefficients)) - sd.coef <- diag(object$var)^.5 - coef.table<-(cbind(as.vector(object$coefficients),as.vector(sd.coef),as.vector(object$coefficients/sd.coef),as.vector(2-2*pnorm(abs(object$coefficients/sd.coef))))) - colnames(coef.table)<-c("Estimate", "Std. Error", "z value", "Pr(>|z|)") - if (ncol(coef(object)) == 1) - { - rownames(coef.table)<-rownames(object$coefficients)#names.X - } - if (ncol(coef(object)) > 1) - { - rnames<-array() - for (i in 1:ncol(coef(object))) - { - rnames[((i-1)*nrow(coef(object))+1):(i*nrow(coef(object)))]<-paste0(levels(as.factor(object$y))[i],": ",rownames(coef(object))) - } - rownames(coef.table)<-rnames - } - - pval <- coef.table[,4] - symp <- symnum(pval, corr=FALSE, - cutpoints = c(0, .001,.01,.05, .1, 1), - symbols = c("***","**","*","."," ")) - coef.print<-cbind(signif(coef.table,3),as.vector(symp)) - coef.print[coef.print=="0"]<-"0.000" - - cat("\nCall: \n", paste(deparse(object$call), sep = "\n", collapse = "\n"), - "\n", sep = "") - - - cat("\nCoefficients:\n") - - print(noquote(coef.print)) - cat("---\n") - cat("Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 \n") - #cat("\n Null J: ",object$J) - if(max(class(object)=="CBPScontinuous")){ - cat("\nSigma-Squared: ",object$sigmasq) - } - cat("\nJ - statistic: ",object$J) - cat("\nLog-Likelihood: ",-0.5*object$deviance, "\n") - - out<-list("call"=object$call,"coefficients"=coef.table,"J"=object$J) - invisible(out) -} - - - - -#' Calculate Variance-Covariance Matrix for a Fitted CBPS Object -#' -#' \code{vcov.CBPS} Returns the variance-covariance matrix of the main -#' parameters of a fitted CBPS object. -#' -#' This is the CBPS implementation of the generic function vcov(). -#' -#' @param object An object of class \code{formula} (or one that can be coerced -#' to that class): a symbolic description of the model to be fitted. -#' @param ... Additional arguments to be passed to vcov.CBPS -#' @return A matrix of the estimated covariances between the parameter -#' estimates in the linear or non-linear predictor of the model. -#' @author Christian Fong, Marc Ratkovic, and Kosuke Imai. -#' @seealso \link{vcov} -#' @references This documentation is modeled on the documentation of the -#' generic \link{vcov}. -#' @examples -#' -#' ### -#' ### Example: Variance-Covariance Matrix -#' ### -#' -#' ##Load the LaLonde data -#' data(LaLonde) -#' ## Estimate CBPS via logistic regression -#' fit <- CBPS(treat ~ age + educ + re75 + re74 + I(re75==0) + I(re74==0), -#' data = LaLonde, ATT = TRUE) -#' ## Get the variance-covariance matrix. -#' vcov(fit) -#' -#' -#' @export -#' -vcov.CBPS<-function(object,...){ - return(object$var) -} - -# Plot binary and multi-valued CBPS. Plots the standardized difference in means for each contrast -# before and after weighting. Defined for an arbitrary number of discrete treatments. - - -#' Plotting Covariate Balancing Propensity Score Estimation -#' -#' -#' This function plots the absolute difference in standardized means before and after -#' weighting. To access more sophisticated graphics for assessing covariate balance, -#' consider using Noah Greifer's \code{cobalt} package. -#' -#' The "Before Weighting" plot gives the balance before weighting, and the -#' "After Weighting" plot gives the balance after weighting. -#' -#' ### @aliases plot.CBPS plot.npCBPS -#' @param x an object of class \dQuote{CBPS} or \dQuote{npCBPS}, usually, a -#' result of a call to \code{CBPS} or \code{npCBPS}. -#' @param covars Indices of the covariates to be plotted (excluding the -#' intercept). For example, if only the first two covariates from -#' \code{balance} are desired, set \code{covars} to 1:2. The default is -#' \code{NULL}, which plots all covariates. -#' @param silent If set to \code{FALSE}, returns the imbalances used to -#' construct the plot. Default is \code{TRUE}, which returns nothing. -#' @param boxplot If set to \code{TRUE}, returns a boxplot summarizing the -#' imbalance on the covariates instead of a point for each covariate. Useful -#' if there are many covariates. -#' @param ... Additional arguments to be passed to plot. -#' @return For binary and multi-valued treatments, plots the absolute -#' difference in standardized means by contrast for all covariates before and -#' after weighting. This quantity for a single covariate and a given pair of -#' treatment conditions is given by \eqn{\frac{\sum_{i=1}^{n} w_i * (T_i == 1) -#' * X_i}{\sum_{i=1}^{n} (T_i == 1) * w_i} - \frac{\sum_{i=1}^{n} w_i * (T_i == -#' 0) * X_i}{\sum_{i=1}^{n} (T_i == 0) * w_i}}{[\sum w_i * (T_i == 1) * -#' X_i]/[\sum w_i * (T_i == 1)] - [\sum w_i * (T_i == 0) * X_i]/[\sum w_i * -#' (T_i == 0)]}. For continuous treatments, plots the weighted absolute -#' Pearson correlation between the treatment and each covariate. See -#' \url{https://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient#Weighted_correlation_coefficient. -#' } -#' @author Christian Fong, Marc Ratkovic, and Kosuke Imai. -#' @seealso \link{CBPS}, \link{plot} -#' -#' @export -#' -plot.CBPS<-function(x, covars = NULL, silent = TRUE, boxplot = FALSE, ...){ - bal.x<-balance(x) - if(is.null(covars)) - { - covars<-1:nrow(bal.x[["balanced"]]) - } - - no.treats<-length(levels(as.factor(x$y))) - balanced.std.mean<-bal.x[["balanced"]][covars,] - original.std.mean<-bal.x[["original"]][covars,] - no.contrasts<-ifelse(no.treats == 2, 1, ifelse(no.treats == 3, 3, 6)) - - abs.mean.ori.contrasts<-matrix(rep(0,no.contrasts*length(covars)),length(covars),no.contrasts) - abs.mean.bal.contrasts<-matrix(rep(0,no.contrasts*length(covars)),length(covars),no.contrasts) - contrast.names<-array() - true.contrast.names<-array() - contrasts<-c() - covarlist<-c() - ctr<-1 - for (i in 1:(no.treats-1)) - { - for (j in (i+1):no.treats) - { - abs.mean.ori.contrasts[,ctr]<-abs(original.std.mean[covars,i+no.treats]-original.std.mean[covars,j+no.treats]) - abs.mean.bal.contrasts[,ctr]<-abs(balanced.std.mean[covars,i+no.treats]-balanced.std.mean[covars,j+no.treats]) - contrast.names[ctr]<-paste0(i,":",j) - true.contrast.names[ctr]<-paste0(levels(as.factor(x$y))[i],":",levels(as.factor(x$y))[j]) - - contrasts<-c(contrasts, rep(true.contrast.names[ctr],length(covars))) - covarlist<-c(covarlist, rownames(balanced.std.mean)) - ctr<-ctr+1 - } - } - - max.abs.contrast<-max(max(abs.mean.ori.contrasts),max(abs.mean.bal.contrasts)) - m <- matrix(c(1,1,1,2,2,2,3,3,3),nrow = 3,ncol = 3,byrow = TRUE) - layout(mat = m,heights = c(0.4,0.4,0.3)) - - par(mfrow=c(2,1)) - if (!boxplot){ - plot(1, type="n", xlim=c(0,max.abs.contrast), ylim=c(1,no.contrasts),xlab="",ylab="",main="",yaxt='n', ...) - axis(side=2, at=seq(1,no.contrasts),contrast.names) - mtext("Absolute Difference of Standardized Means",side=1,line=2.25) - mtext("Contrasts",side=2,line=2) - mtext("Before Weighting",side=3,line=0.5,font=2) - for (i in 1:no.contrasts) - { - for (j in 1:length(covars)) - { - points(abs.mean.ori.contrasts[covars[j],i],i, ...) - } - } - plot(1, type="n", xlim=c(0,max.abs.contrast), ylim=c(1,no.contrasts), xlab="", ylab="", main="", yaxt='n', ...) - axis(side=2, at=seq(1,no.contrasts),contrast.names) - mtext("Absolute Difference of Standardized Means",side=1,line=2.25) - mtext("Contrasts",side=2,line=2) - mtext("After Weighting",side=3,line=0.5,font=2) - - for (i in 1:no.contrasts) - { - for (j in 1:length(covars)) - { - points(abs.mean.bal.contrasts[covars[j],i],i, ...) - } - } - } - else{ - boxplot(abs.mean.ori.contrasts, horizontal = TRUE, ylim = c(0,max.abs.contrast), xlim=c(1-0.5,no.contrasts+0.5), - xlab="", ylab="", main="", yaxt='n', ...) - axis(side=2, at=seq(1,no.contrasts),contrast.names) - mtext("Absolute Difference of Standardized Means",side=1,line=2.25) - mtext("Contrasts",side=2,line=2) - mtext("Before Weighting",side=3,line=0.5,font=2) - - boxplot(abs.mean.bal.contrasts, horizontal = TRUE, ylim = c(0,max.abs.contrast), xlim=c(1-0.5,no.contrasts+0.5), - xlab="", ylab="", main="", yaxt='n', ...) - axis(side=2, at=seq(1,no.contrasts),contrast.names) - mtext("Absolute Difference of Standardized Means",side=1,line=2.25) - mtext("Contrasts",side=2,line=2) - mtext("After Weighting",side=3,line=0.5,font=2) - } - - par(mfrow=c(1,1)) - - if(is.null(rownames(balanced.std.mean))) rownames(balanced.std.mean)<-paste0("X",covars) - if(!silent) return(data.frame("contrast" = contrasts, "covariate" = covarlist, - "balanced"=abs.mean.bal.contrasts, - "original"=abs.mean.ori.contrasts)) -} - -#' Plot the pre-and-post weighting correlations between X and T -#' @param x an object of class \dQuote{CBPS} or \dQuote{npCBPS}, usually, a -#' result of a call to \code{CBPS} or \code{npCBPS}. -#' @param covars Indices of the covariates to be plotted (excluding the intercept). For example, -#' if only the first two covariates from \code{balance} are desired, set \code{covars} to 1:2. -#' The default is \code{NULL}, which plots all covariates. -#' @param silent If set to \code{FALSE}, returns the imbalances used to -#' construct the plot. Default is \code{TRUE}, which returns nothing. -#' @param boxplot If set to \code{TRUE}, returns a boxplot summarizing the -#' imbalance on the covariates instead of a point for each covariate. Useful -#' if there are many covariates. -#' @param ... Additional arguments to be passed to balance. -#' -#' @export -#' -plot.CBPSContinuous<-function(x, covars = NULL, silent = TRUE, boxplot = FALSE, ...){ - bal.x<-balance(x) - if (is.null(covars)) - { - covars<-1:nrow(bal.x[["balanced"]]) - } - balanced.abs.cor<-abs(bal.x[["balanced"]][covars]) - original.abs.cor<-abs(bal.x[["unweighted"]][covars]) - - max.abs.cor<-max(max(original.abs.cor),max(balanced.abs.cor)) - - if(!boxplot){ - plot(1, type="n", xlim=c(0,max.abs.cor), ylim=c(1.5,3.5), xlab = "Absolute Pearson Correlation", ylab = "", yaxt = "n", ...) - axis(side=2, at=seq(2,3),c("CBPS Weighted", "Unweighted")) - points(x=original.abs.cor, y=rep(3, length(covars)), pch=19) - points(x=balanced.abs.cor, y=rep(2, length(covars)), pch=19) - } - else{ - boxplot(balanced.abs.cor, original.abs.cor, horizontal = TRUE, yaxt = 'n', xlab = "Absolute Pearson Correlation", ...) - axis(side=2, at=c(1,2),c("CBPS Weighted", "Unweighted")) - } - - if(!silent) return(data.frame("covariate"=rownames(bal.x[["balanced"]]),"balanced"=balanced.abs.cor, - "original"=original.abs.cor)) -} - - - -#' Optimal Covariate Balance -#' -#' Returns the mean and standardized mean associated with each treatment group, -#' before and after weighting. To access more comprehensive diagnotistics for -#' assessing covariate balance, consider using Noah Greifer's \code{cobalt} package. -#' -#' For binary and multi-valued treatments as well as marginal structural -#' models, each of the matrices' rows are the covariates and whose columns are -#' the weighted mean, and standardized mean associated with each treatment -#' group. The standardized mean is the weighted mean divided by the standard -#' deviation of the covariate for the whole population. For continuous -#' treatments, returns the absolute Pearson correlation between the treatment -#' and each covariate. -#' -#' ### @aliases balance balance.npCBPS balance.CBPS balance.CBMSM -#' @param object A CBPS, npCBPS, or CBMSM object. -#' @param ... Additional arguments to be passed to balance. -#' @return Returns a list of two matrices, "original" (before weighting) and -#' "balanced" (after weighting). -#' @author Christian Fong, Marc Ratkovic, and Kosuke Imai. -#' @examples -#' -#' ### -#' ### Example: Assess Covariate Balance -#' ### -#' data(LaLonde) -#' ## Estimate CBPS -#' fit <- CBPS(treat ~ age + educ + re75 + re74 + -#' I(re75==0) + I(re74==0), -#' data = LaLonde, ATT = TRUE) -#' balance(fit) -#' -#' @export -#' -balance<-function(object, ...) -{ - UseMethod("balance") -} - -#' Calculates the pre- and post-weighting difference in standardized means for covariate within each contrast -#' @param object A CBPS, npCBPS, or CBMSM object. -#' @param ... Additional arguments to be passed to balance. -#' -#' @export -#' -balance.CBPS<-function(object, ...){ - treats<-as.factor(object$y) - treat.names<-levels(treats) - X<-object$x - bal<-matrix(rep(0,(ncol(X)-1)*2*length(treat.names)),ncol(X)-1,2*length(treat.names)) - baseline<-matrix(rep(0,(ncol(X)-1)*2*length(treat.names)),ncol(X)-1,2*length(treat.names)) - w<-object$weights - cnames<-array() - - jinit<-ifelse(class(object)[1] == "npCBPS", 1, 2) - for (i in 1:length(treat.names)) - { - for (j in jinit:ncol(X)) - { - bal[j-1,i]<-sum((treats==treat.names[i])*X[,j]*w)/sum(w*(treats==treat.names[i])) - bal[j-1,i+length(treat.names)]<-bal[j-1,i]/sd(X[,j]) - baseline[j-1,i]<-mean(X[which(treats==treat.names[i]),j]) - baseline[j-1,i+length(treat.names)]<-baseline[j-1,i]/sd(X[,j]) - } - cnames[i]<-paste0(treat.names[i],".mean") - cnames[length(treat.names)+i]<-paste0(treat.names[i],".std.mean") - } - colnames(bal)<-cnames - rownames(bal)<-colnames(X)[-1] - colnames(baseline)<-cnames - rownames(baseline)<-colnames(X)[-1] - out<-list(balanced=bal,original=baseline) - out -} - -#' Calculates the pre- and post-weighting correlations between each covariate and the T -#' @param object A CBPS, npCBPS, or CBMSM object. -#' @param ... Additional arguments to be passed to balance. -#' -#' @export -#' -balance.CBPSContinuous<-function(object, ...){ - treat<-object$y - X<-object$x - w<-object$weights - n<-length(w) - cnames<-array() - - if ("npCBPS" %in% class(object)){ - jinit<-1 - bal<-matrix(rep(0,ncol(X)),ncol(X),1) - baseline<-matrix(rep(0,ncol(X)),ncol(X),1) - for (j in 1:ncol(X)) - { - bal[j,1]<-(mean(w*X[,j]*treat) - mean(w*X[,j])*mean(w*treat)*n/sum(w))/(sqrt(mean(w*X[,j]^2) - mean(w*X[,j])^2*n/sum(w))*sqrt(mean(w*treat^2) - mean(w*treat)^2*n/sum(w))) - baseline[j,1]<-cor(treat, X[,j], method = "pearson") - } - rownames(bal)<-colnames(X) - rownames(baseline)<-colnames(X) - } - else{ - bal<-matrix(rep(0,(ncol(X)-1)),ncol(X)-1,1) - baseline<-matrix(rep(0,(ncol(X)-1)),ncol(X)-1,1) - for (j in 2:ncol(X)) - { - bal[j-1,1]<-(mean(w*X[,j]*treat) - mean(w*X[,j])*mean(w*treat)*n/sum(w))/(sqrt(mean(w*X[,j]^2) - mean(w*X[,j])^2*n/sum(w))*sqrt(mean(w*treat^2) - mean(w*treat)^2*n/sum(w))) - baseline[j-1,1]<-cor(treat, X[,j], method = "pearson") - } - rownames(bal)<-colnames(X)[-1] - rownames(baseline)<-colnames(X)[-1] - } - - colnames(bal)<-"Pearson Correlation" - colnames(baseline)<-"Pearson Correlation" - out<-list(balanced=bal,unweighted=baseline) - out -} -######################################### diff --git a/CBPS_0.17.tar.gz b/CBPS_0.17.tar.gz deleted file mode 100644 index 1fa7fb526344e33cf29077a708f1f88c15ba430d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103770 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%0D%uidDGaH5<|7X`9!PCt~f#nB78t} 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 S_2>HIeEvTXPvt@YC(1/tol)){M = M+lambda*diag(rep(1,nrow(M)))} - - s <- as.vector(w*eps.delta)*Z - mtheta <- cbind(1/sigmasq.tilde*(eps.beta)^2 - 1, - as.vector(w*Ttilde)*Xtilde) - - M.inv = solve(M) - - inner <- matrix(0, nrow = P, ncol = P) - for (i in 1:N){ - inner.part <- s[i,] - Stheta%*%M.inv%*%mtheta[i,] - inner <- inner + inner.part%*%t(inner.part)/N - } - - Sdelta.inv = solve(Sdelta) - - V <- Sdelta.inv %*% inner %*% t(Sdelta.inv)/N - - return(V) -} - - diff --git a/mata classes.do b/mata classes.do deleted file mode 100644 index 8f8d286..0000000 --- a/mata classes.do +++ /dev/null @@ -1,60 +0,0 @@ -clear all -sysuse auto - -mata: - -class coord { - real scalar x, y - real scalar length(), angle() -} - -real scalar coord::length() -{ - return(sqrt(x^2 + y^2)) -} - -real scalar coord::angle() -{ - return(atan2(y, x)*360/(2*pi())) -} - -a=coord() -a.x = a.y = 1 -a.angle(); a.length() - -class gmatch { - real matrix X0, X1, y0, y1, w0, w1 - real rowvector diff() - void new() -} - -void gmatch::new() -{ - w0 = w1 = 1 -} - -real rowvector gmatch::diff() -{ - return(mean(X0) :- mean(X1)) -} - -mydta = gmatch() -mydta.X0 = (1\2) -mydta.X0 -mydta.X1 = (4\3) -mydta.diff() - -st_view(mydta.X0, ., "price length","foreign") - -// does view still work? -mydta.X0[1..4,.] -stata("replace price=2 in 1") -mydta.X0[1..4,.] - - -mata describe -mydta.X1= st_data(., "price length","foreign") -mydta.X1[1..4,.] -mata describe - -end