# NOT RUN {
data(Dodgeram)
# }
# NOT RUN {
# Example distance structure
components <- list(prop = c("AGE", "SEX.2", "FR.pass", "REST_USE1", "ROLLOVER1",
"IMPACT3", "SP_LIMIT", "DR_DRINK", "FIRE_EXP1.1"),
mahal = c("SEX.2", "AGE", "SP_LIMIT", "DR_DRINK"),
mahal = c("IMPACT3", "REST_USE1"))
wgts <- c(5, 8, 20)
distmat <- multigrp_dist_struc(Dodgeram,
grouplabel = c("NOSAB","optSAB","WITHSABS"), components, wgts)
## Propensity score caliper can be implemented mannually
distmat <- multigrp_dist_struc(Dodgeram,
grouplabel = c("NOSAB","optSAB","WITHSABS"),
list(mahal = c("SEX.2", "AGE", "SP_LIMIT", "DR_DRINK"),
mahal = c("IMPACT3", "REST_USE1")), wgts=c(2, 5))
distmat_prop <- multigrp_dist_struc(Dodgeram,
grouplabel = c("NOSAB", "optSAB", "WITHSABS"),
list(prop = c("AGE", "SEX.2", "FR.pass", "REST_USE1", "ROLLOVER1",
"IMPACT3", "SP_LIMIT", "DR_DRINK", "FIRE_EXP1.1")), 1)
## Distance structure with caliper
for(i in 1:length(distmat))
distmat[[i]][distmat_prop[[i]]>.2] <- 100*max(distmat[[i]])
## An example function for argument detail.
smahal <- function(z,X){
X<-as.matrix(X)
n<-dim(X)[1]
rownames(X)<-1:n
k<-dim(X)[2]
m<-sum(z)
for (j in 1:k) X[,j]<-rank(X[,j])
cv<-cov(X)
vuntied<-var(1:n)
rat<-sqrt(vuntied/diag(cv))
cv<-diag(rat)
# }
# NOT RUN {
<!-- %*%cv%*%diag(rat) -->
# }
# NOT RUN {
out<-matrix(NA,m,n-m)
Xc<-X[z==0,,drop=FALSE]
Xt<-X[z==1,,drop=FALSE]
rownames(out)<-rownames(X)[z==1]
colnames(out)<-rownames(X)[z==0]
#library(MASS)
icov<-ginv(cv)
for (i in 1:m)
out[i,]<-mahalanobis(Xc,Xt[i,],icov,inverted=T)
sqrt(out)
}
# }
Run the code above in your browser using DataLab