LoTTA_sharp_BIN {LoTTA} | R Documentation |
LoTTA_sharp_BIN
Description
Function that fits LoTTA model to the sharp RD data with binary outcomes. The score does NOT have to be normalized beforehand. We recommend NOT to transform the data before imputing it into the function, except for initial trimming of the score which should be done beforehand. The further trimming for the sensitivity analysis can be done through the function, which ensures that the data is normalized before the trimming.
Usage
LoTTA_sharp_BIN(
x,
y,
c,
ci = 0.95,
trimmed = NULL,
outcome_prior = list(pr = 1e-04),
n_min = 25,
param = c("eff", "a0l", "a1l", "a2l", "a3l", "a0r", "a1r", "a2r", "a3r", "kl", "kr"),
normalize = TRUE,
n.chains = 4,
burnin = 5000,
sample = 5000,
adapt = 1000,
inits = NULL,
method = "parallel",
seed = NULL,
...
)
Arguments
x |
|
y |
|
c |
|
ci |
|
trimmed |
|
outcome_prior |
|
n_min |
|
param |
|
normalize |
|
n.chains |
|
burnin |
|
sample |
|
adapt |
|
inits |
|
method |
|
seed |
|
... |
|
Value
The function returns the list with the elements:
Effect_estimate: contains a list with MAP estimate and HDI of the treatment effect on the original, unnormalized scale;
JAGS_output: contains output of the run.jags function for the normalized data if normalize=TRUE, based on this output mixing of the chains can be assessed;
Samples: contains posterior samples of the treatment effect (eff);
Normalized_data: contains a list of the normalized data (if normalized=TRUE) and the parameters used to normalize the data (see arg normalize);
Priors: contains a list of the outcome prior parameters ;
Inits contains the list of initial values and .RNG.seed value
Examples
# 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! ##
# data generation
N=100
x = sort(runif(N, -1, 1))
y = sample_prob55(x)
c = 0
# running LoTTA model on a sharp RDD with a binary outcome
out = LoTTA_sharp_BIN(x, y, c, burnin = 50, sample = 50, adapt = 10,n.chains=1
,method = 'simple',inits = NA)
## Use case example ##
# data generation
N=1000 # try different dataset size
x = sort(runif(N, -1, 1))
y = sample_prob55(x)
c = 0
# running LoTTA function on sharp RDD with binary outcomes;
# cutoff = 0, treatment effect = 0.55
# remember to check convergence and adjust burnin, sample and adapt if needed
out = LoTTA_sharp_BIN(x, y, c, burnin = 10000, sample = 5000, adapt = 1000,n.chains=4)
# print effect estimate:
out$Effect_estimate
# print JAGS output to asses convergence (the output is for normalized data)
out$JAGS_output
# plot posterior fit
LoTTA_plot_outcome(out,nbins = 60)