# functions to generate the data
ilogit <- function(x) {
return(1 / (1 + exp(-x)))
}
fun_prob55 <- function(x) {
P = rep(0, length(x))
P[x >= 0.] = ilogit((8.5 * x[x >= 0.] - 1.5)) / 10.5 + 0.65 - 0.0007072
P[x < 0.] = (x[x < 0.] + 1)^4 / 15 + 0.05
return(P)
}
sample_prob55 <- function(x) {
P = rep(0, length(x))
P[x >= 0.] = ilogit((8.5 * x[x >= 0.] - 1.5)) / 10.5 + 0.65 - 0.0007072
P[x < 0.] = (x[x < 0.] + 1)^4 / 15 + 0.05
t = rep(0, length(x))
for (j in 1:length(x)) {
t[j] = sample(c(1, 0), 1, prob = c(P[j], 1 - P[j]))
}
return(t)
}
## Toy example - for the function check only! ##
N=100
x = sort(runif(N, -1, 1))
t = sample_prob55(x)
c_prior=0 # known cutoff
# running LoTTA treatment-only model;
out = LoTTA_treatment(x,t,c_prior,burnin = 50, sample = 50, adapt = 10,n.chains=1
,method = 'simple',inits = NA)
## Use case example ##
# \donttest{
N=500
x = sort(runif(N, -1, 1))
t = sample_prob55(x)
# comment out to try different priors:
c_prior=list(clb=-0.25,cub=0.25) # uniform prior on the interval [-0.25,0.25]
# c_prior=list(cstart=-0.25,cend=0.25,grid=0.05) # uniform discrete prior
# on -0.25, -0.2, ..., 0.25
# c_prior=0 # known cutoff c=0
# running LoTTA treatment-only model;
# cutoff = 0, compliance rate = 0.55
# remember to check convergence and adjust burnin, sample and adapt if needed
out = LoTTA_treatment(x,t,c_prior,burnin = 10000,sample = 5000,adapt=1000)
# print effect estimate:
out$Effect_estimate
# print JAGS output to asses convergence (the output is for normalized data)
out$JAGS_output
# plot posterior fit of the treatment probablity function
LoTTA_plot_treatment(out,nbins = 60)
# }
Run the code above in your browser using DataLab