BARTpred_CV | R Documentation |
A helper function. Allows you to fit observed joint probabilities with BART, or with a monotonicity constraint
BARTpred_CV( df, treat = "G", Outcome = "B", vars, mono = T, nd_post = 20, n_skip = 20, nfold = 5 )
df |
dataframe including the covariates plus the treatment and outcome columns |
treat |
String of name of treatment column |
Outcome |
string, name of outcome column |
vars |
list of names of columns of covariates |
mono |
Boolean, whether or not to use monotonicity constraint |
nd_post |
number of posterior draws to keep |
n_skip |
number of burn in samples |
nfold |
how many cross validation folds you want, integer value |
N <- 500 # Number of random samples a=1 x1=runif(N, -a,a) x2=runif(N, -a,a) x3=runif(N,-a,a) x4=runif(N,-a,a) x5=runif(N, -a,a) beta1= -0.2 alpha1= 0.7 beta0= -0 alpha0= -0.5 mu1 <- beta0+beta1*(x1+x2+x3+x4+x5) mu2 <- alpha0+alpha1*(x1+x2+x3+x4+x5) mu<-matrix(c(mu1, mu2), nrow=N, ncol=2) rho=.5 gamma=1 B1.true=pnorm(mu2+gamma) B0.true=pnorm(mu2) sigma <- matrix(c(1, rho,rho,1), 2) # Covariance matrix sim_data=t(sapply(1:N, function(i)MASS::mvrnorm(1, mu = mu[i,], Sigma = sigma ))) #generate the binary treatments G=sapply(1:N, function(i)ifelse(sim_data[i,1]>=0, 1,0)) #generate the binary outcomes B=sapply(1:N, function(i)ifelse(sim_data[i,2]>=-1*gamma*G[i], 1,0)) print(table(G,B)) covariates=data.frame(x1,x2,x3,x4,x5,B, G) vars=c('x1','x2','x3','x4','x5') CV_pred=BARTpred_CV(covariates, treat='G', Outcome='B', vars=vars,mono=T, nd_post=200, n_skip=500, nfold=5) output=do.call('rbind', CV_pred$imp_frame) cc=ggrocs(list(PB1G0=pROC::roc(output$B[output$G==0], output$BG0[output$G==0]), PB1G1=pROC::roc(output$B[output$G==1], output$BG1[output$G==1]), PG1=pROC::roc(output$G[], output$G1)), breaks = seq(0,1,0.1), tittle = "ROC perf. predicting our probs") #pick a function to integrate over #here the standard deviation is chosen to match the generated data f=function(u){ dnorm(u, mean=0, sd=sqrt(rho/(1-rho))) } treat_frame=integrate_function(as.matrix(output), constraint=T, f=f, n_cores=1)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.