This function generates a sample from the posterior distribution of the measurement model of political support. Individuallevel covariates may be included in the model. The details of the model are given under `Details'. See also Bullock et al. (2011).
endorse(Y, data, data.village = NA, village = NA, treat = NA, na.strings = 99, identical.lambda = TRUE, covariates = FALSE, formula.indiv = NA, hierarchical = FALSE, formula.village = NA, h = NULL, group = NULL, x.start = 0, s.start = 0, beta.start = 1, tau.start = NA, lambda.start = 0, omega2.start = .1, theta.start = 0, phi2.start = .1, kappa.start = 0, psi2.start = 1, delta.start = 0, zeta.start = 0, rho2.start = 1, mu.beta = 0, mu.x = 0, mu.theta = 0, mu.kappa = 0, mu.delta = 0, mu.zeta = 0, precision.beta = 0.04, precision.x = 1, precision.theta = 0.04, precision.kappa = 0.04, precision.delta = 0.04, precision.zeta = 0.04, s0.omega2= 1, nu0.omega2 = 10, s0.phi2 = 1, nu0.phi2 = 10, s0.psi2 = 1, nu0.psi2 = 10, s0.sig2 = 1, nu0.sig2 = 400, s0.rho2 = 1, nu0.rho2 = 10, MCMC = 20000, burn = 1000, thin = 1, mh = TRUE, prop = 0.001, x.sd = TRUE, tau.out = FALSE, s.out = FALSE, omega2.out = TRUE, phi2.out = TRUE, psi2.out = TRUE, verbose = TRUE, seed.store = FALSE, update = FALSE, update.start = NULL)
Y  a list of the variable names for the responses. It should
take the following form:
If 

data  data frame containing the individuallevel variables.
The cases must be complete, i.e., no 
data.village  data frame containing the villagelevel variables.
The cases must be complete, i.e., no 
village  character. The variable name of the village indicator in the individuallevel data. If auxiliary information is included, this should correspond to the variable name of the units at which prediction is desired. 
treat  An optional matrix of non negative integers indicating
the treatment
status of each observation and each question.
Rows are observations
and columns are questions. 0 represents the control status while
positive integers indicate treatment statuses.
If 
na.strings  a scalar or a vector indicating the values of the
response variable that are to be interpreted as ``Don't Know'' or
``Refused to Answer.'' The value should not be 
identical.lambda  logical. If 
covariates  logical. If 
formula.indiv  a symbolic description specifying the individual level
covariates for the support parameter and the ideal points. The formula
should be onesided, e.g. 
hierarchical  logical. IF 
formula.village  a symbolic description specifying the village level covariates for the support parameter and the ideal points. The formula should be onesided. 
h  Auxiliary data functionality. Optional named numeric vector with length equal to number of groups. Names correspond to group labels and values correspond to auxiliary moments (i.e. to the known share of the sensitive trait at the group level). 
group  Auxiliary data functionality. Optional character string.
The variable name of the group indicator in the individuallevel data
(e.g. 
x.start  starting values for the ideal points vector \(x\). If

s.start  starting values for the support parameter, \(s_ijk\).
If 
beta.start  starting values for the question related parameters,
\(\alpha_j\) and \(\beta_j\).
If 
tau.start  starting values for the cut points in the response
model. If 
lambda.start  starting values for the coefficients in the
support parameter model, \(\lambda_jk\).
If 
omega2.start  starting values for the variance of the support
parameters, \(\omega_{jk}^{2}\).
If set to a scalar, the starting values for
\(omega_{jk}^{2}\) will be the diagonal matrix with
the diagonal elements set to the scalar.
If 
theta.start  starting values for the means of the
\(\lambda_{jk}\) for each endorser.
If 
phi2.start  starting values for the covariance matrices of the
coefficients
of the support parameters, \(\Phi_{k}\).
\(\Phi_{k}\) is assumed to be a diagonal matrix.
If 
kappa.start  starting values for the coefficients on village level covariates in the
support parameter model, \(\kappa_k\).
If 
psi2.start  starting values for the variance of the village random intercepts in the support
parameter model, \(\psi_{k}^{2}\).
If 
delta.start  starting values for the coefficients on individual level covariates in the ideal
point model. Will be used only if 
zeta.start  starting values for the coefficients on village level covariates in the ideal
point model. Will be used only if 
rho2.start  numeric. starting values for the variance of the village random intercepts in the ideal point
model, \(\rho^{2}\). The default is 
mu.beta  the mean of the independent Normal prior on the
question related parameters. Can be either a scalar or a matrix of
dimension the number of questions times 2.
The default is 
mu.x  the mean of the independent Normal prior on the
question related parameters. Can be either a scalar or a vector of
the same length as the number of observations.
The default is 
mu.theta  the mean of the independent Normal prior on the
mean of the coefficients in the support parameter model.
Can be either a scalar or a vector of
the same length as the dimension of covariates.
The default is 
mu.kappa  the mean of the independent Normal prior on the
coefficients of village level covariates. Can be either a scalar or a matrix of
dimension the number of covariates times the number of endorsers.
If auxiliary information is included, the value of 
mu.delta  the mean of the independent Normal prior on the
the coefficients in the ideal point model.
Can be either a scalar or a vector of
the same length as the dimension of covariates.
The default is 
mu.zeta  the mean of the independent Normal prior on the
the coefficients of village level covariates in the ideal point model.
Can be either a scalar or a vector of
the same length as the dimension of covariates.
The default is 
precision.beta  the precisions (inverse variances) of the
independent Normal prior on the
question related parameters. Can be either a scalar or
a 2 \(\times\) 2 diagonal matrix.
The default is 
precision.x  scalar. The known precision of the
independent Normal distribution on the
ideal points.
The default is 
precision.theta  the precisions of the
independent Normal prior on the means of the coefficients
in the support parameter model. Can be either a scalar or
a vector of the same length as the dimension of covariates.
The default is 
precision.kappa  the precisions of the
independent Normal prior on the coefficients of village level covariates
in the support parameter model. Can be either a scalar or
a vector of the same length as the dimension of covariates.
If auxiliary information is included, the value of 
precision.delta  the precisions of the
independent Normal prior on the the coefficients
in the ideal point model. Can be either a scalar or
a square matrix of the same dimension as the dimension of
covariates.
The default is 
precision.zeta  the precisions of the
independent Normal prior on the the coefficients of village level covariates
in the ideal point model. Can be either a scalar or
a square matrix of the same dimension as the dimension of
covariates.
The default is 
s0.omega2  scalar. The scale of the independent scaled
inverse chisquared
prior for the variance parameter in the support parameter model.
If auxiliary information is included, the value of 
nu0.omega2  scalar. The degrees of freedom of the independent
scaled inversechisquared
prior for the variance parameter in the support parameter model.
If auxiliary information is included, the value of 
s0.phi2  scalar. The scale of the independent
scaled inversechisquared
prior for the variances of the coefficients in
the support parameter model.
The default is 
nu0.phi2  scalar. The degrees of freedom of the independent
scaled
inversechisquared
prior for the variances of the coefficients in
the support parameter model.
The default is 
s0.psi2  scalar. The scale of the independent
scaled inversechisquared
prior for the variances of the village random intercepts in
the support parameter model.
The default is 
nu0.psi2  scalar. The degrees of freedom of the independent
scaled
inversechisquared
prior for the variances of the village random intercepts in
the support parameter model.
The default is 
s0.sig2  scalar. The scale of the independent
scaled inversechisquared
prior for the variance parameter in
the ideal point model.
The default is 
nu0.sig2  scalar. The degrees of freedom of the independent
scaled
inversechisquared
prior for the variance parameter in the ideal point model.
The default is 
s0.rho2  scalar. The scale of the independent
scaled inversechisquared
prior for the variances of the village random intercepts in
the ideal point model.
The default is 
nu0.rho2  scalar. The degrees of freedom of the independent
scaled
inversechisquared
prior for the variances of the village random intercepts in
the ideal point model.
The default is 
MCMC  the number of iterations for the sampler. The default is

burn  the number of burnin iterations for the sampler. The
default is 
thin  the thinning interval used in the simulation. The default
is 
mh  logical. If 
prop  a positive number or a vector consisting of positive
numbers. The length of the vector should be the same as the number of
questions. This argument sets proposal variance for the
MetropolisHastings algorithm in sampling the cut points of the
response model. The default is 
x.sd  logical. If 
tau.out  logical. A switch that determines whether or not to
store the cut points in the response model. The default is

s.out  logical. If 
omega2.out  logical. If 
phi2.out  logical. If 
psi2.out  logical. If 
verbose  logical. A switch that determines whether or not to
print the progress of the chain and Metropolis acceptance ratios for
the cut points of the response model. The default is

seed.store  logical. If 
update  logical. If 
update.start  list. If the function is run to update a chain, the output
object of the previous run should be supplied. The default is 
The model takes the following form: Consider an endorsement experiment where we wish to measure the level of support for \(K\) political actors. In the survey, respondents are asked whether or not they support each of \(J\) policies chosen by researchers. Let \(Y_{ij}\) represent respondent \(i\)'s answer to the survey question regarding policy \(j\). Suppose that the response variable \(Y_{ij}\) is the ordered factor variable taking one of \(L_{j}\) levels, i.e., \(Y_{ij} \in \{0, 1, \dots, L_{j}  1\}\) where \(L_{j} > 1\). We assume that a greater value of \(Y_{ij}\) indicates a greater level of support for policy \(j\). We denote an \(M\) dimensional vector of the observed characteristics of respondent \(i\) by \(Z_i\).
In the experiment, we randomly assign one of \(K\) political actors as an endorser to respondent \(i\)'s question regarding policy \(j\) and denote this treatment variable by \(T_{ij} \in \{0,1,\dots,K\}\). We use \(T_{ij}=0\) to represent the control observations where no political endorsement is attached to the question. Alternatively, one may use the endorsement by a neutral actor as the control group. The model for the response variable, \(Y_{ij}\), is given by, $$Y_{ij} = l \; {\rm if} \; \tau_{l} < Y^{*}_{ij} \le \tau_{l + 1}, $$ $$Y^{*}_{ij} \;  \; T_{ij} = k \sim \mathcal{N}( \alpha_{j} + \beta_{j} (x_{i} + s_{ijk}), \; I) $$ where \(l \in \{0, 1, \dots, L_{j} \}, \tau_{0} = \infty < \tau_{1} = 0 < \tau_{2} < \dots < \tau_{L_{j}} = \infty\). \(\beta_j\)'s are assumed to be positive.
The model for the support parameter, \(s_{ijk}\), is given by if \(T_{ij} \neq 0\), $$ s_{ijk} \sim \mathcal{N}(Z_i^{T} \lambda_{jk}, \; \omega_{jk}^2) $$ with covariates, and $$ s_{ijk} \sim \mathcal{N}(\lambda_{jk}, \; \omega_{jk}^2), $$ without covariates, for \(j = 1, \dots, J, \; k = 1, \dots, K\), and if \(T_{ij} = 0, \; s_{ijk} = 0\).
The \(\lambda\)'s in the support parameter model are modeled in the following hierarchical manner, $$ \lambda_{jk} \sim \mathcal{N}(\theta_k, \; \Phi_k) $$ for \(k = 1, \dots, K\).
If you set identical.lambda = FALSE
and hierarchical = TRUE
,
the model for \(s_{ijk}\) is if \(T_{ij} \neq 0\),
$$
s_{ijk} \sim \mathcal{N}(\lambda^{0}_{jk, village[i]} + Z_i^{T} \lambda_{jk}, \; \omega_{jk}^2)
$$
and
$$
\lambda^{0}_{jk, village[i]} \sim \mathcal{N}(V_{village[i]}^{T} \kappa_{jk}, \; \psi_{jk}^2)
$$
for \(k = 1, \dots, K\) and \(j = 1, \dots, J\). In addition,
\(\lambda\) and \(\kappa\) are modeled in the following
hierarchical manner,
$$
\lambda^{*}_{jk} \sim \mathcal{N}(\theta_k, \; \Phi_k)
$$
for \(k = 1, \dots, K\), where \(\lambda^{*}_{jk} =
(\lambda^{T}_{jk}, \kappa^{T}_{jk})^{T}\).
If you set identical.lambda = TRUE
and hierarchical = TRUE
,
the model for \(s_{ijk}\) is if \(T_{ij} \neq 0\),
$$
s_{ijk} \sim \mathcal{N}(\lambda^{0}_{k, village[i]} + Z_i^{T} \lambda_{k}, \; \omega_{k}^2)
$$
and
$$
\lambda^{0}_{k, village[i]} \sim \mathcal{N}(V_{village[i]}^{T} \kappa_{k}, \; \psi_{k}^2)
$$
for \(k = 1, \dots, K\).
If the covariates are included in the model, the model for the
ideal points is given by
$$
x_{i} \sim \mathcal{N}(Z_{i}^{T} \delta, \; \sigma_{x}^{2})
$$
for \(i = 1, \dots, N\) where \(\sigma_x^2\) is a known prior
variance.
If you set hierarchical = TRUE
,
the model is
$$
x_{i} \sim \mathcal{N}(\delta^{0}_{village[i]} + Z_i^{T} \delta, \; \sigma^2)
$$
and
$$
\delta^{0}_{village[i]} \sim \mathcal{N}(V_{village[i]}^{T} \zeta, \; \rho^2)
$$
for \(k = 1, \dots, K\).
Finally, the following independent prior distributions are placed on unknown parameters, $$ \alpha_j \sim \mathcal{N}(\mu_\alpha, \; \sigma_\alpha^2) $$ for \(j = 1, \dots, J\), $$ \beta_j \sim \mathcal{TN}_{\beta_j > 0}(\mu_\beta, \; \sigma_\beta^2) $$ for \(j = 1, \dots, J\), $$ \delta \sim \mathcal{N}(\mu_\delta, \; \Sigma_\delta), $$ $$ \theta_k \sim \mathcal{N}(\mu_\theta, \; \Sigma_\theta) $$ for \(k = 1, \dots, K\), $$ \omega_{jk}^2 \sim {\rm Inv}\chi^{2}(\nu_{\omega}^0, \; s_{\omega}^0) $$ for \(j = 1, \dots, J\) and \(k = 1, \dots, K\), and $$ {\rm diag}(\Phi_k) \sim {\rm Inv}\chi^{2}(\nu_{\Phi}^0, \; s_{\Phi}^0) $$ for \(k = 1, \dots, K\), where \(\Phi_k\) is assumed to be a diagonal matrix.
An object of class "endorse"
, which is a list containing the following
elements:
an "mcmc"
object. A sample from the posterior distribution
of \(\alpha\) and \(\beta\).
If x.sd = TRUE
, a vector of the standard deviation of
the ideal points in each draw. If x.sd = FALSE
, an mcmc
object that contains a sample from the posterior distribution of the
ideal points.
If s.out = TRUE
, an mcmc object that contains a sample
from the posterior distribution of \(s_{ijk}\). Variable
names are:
s(observation id)(question id)
.
If covariates = TRUE
, an mcmc object that contains
a sample from the posterior distribution of \(\delta\).
If tau.out = TRUE
, an mcmc object that contains a
sample from the posterior distribution of \(\tau\).
an mcmc object. A sample from the posterior distribution
of \(\lambda\). Variable names are:
lambda(question id)(group id).(covariate id)
.
an mcmc object. A sample from the posterior distribution of \(\theta\).
an mcmc object.
an mcmc object.
logical value indicating whether estimation incorporates auxiliary moments
integer count of the number of auxiliary moments
Bullock, Will, Kosuke Imai, and Jacob N. Shapiro. (2011) “Statistical Analysis of Endorsement Experiments: Measuring Support for Militant Groups in Pakistan,” Political Analysis, Vol. 19, No. 4 (Autumn), pp.363384.
not_run({ data(pakistan) Y < list(Q1 = c("Polio.a", "Polio.b", "Polio.c", "Polio.d", "Polio.e"), Q2 = c("FCR.a", "FCR.b", "FCR.c", "FCR.d", "FCR.e"), Q3 = c("Durand.a", "Durand.b", "Durand.c", "Durand.d", "Durand.e"), Q4 = c("Curriculum.a", "Curriculum.b", "Curriculum.c", "Curriculum.d", "Curriculum.e")) ## Varyinglambda nonhierarchical model without covariates endorse.out < endorse(Y = Y, data = pakistan, identical.lambda = FALSE, covariates = FALSE, hierarchical = FALSE) ## Varyinglambda nonhierarchical model with covariates indiv.covariates < formula( ~ female + rural) endorse.out < endorse(Y = Y, data = pakistan, identical.lambda = FALSE, covariates = TRUE, formula.indiv = indiv.covariates, hierarchical = FALSE) ## Commonlambda nonhierarchical model with covariates indiv.covariates < formula( ~ female + rural) endorse.out < endorse(Y = Y, data = pakistan, identical.lambda = TRUE, covariates = TRUE, formula.indiv = indiv.covariates, hierarchical = FALSE) ## Varyinglambda hierarchical model without covariates div.data < data.frame(division = sort(unique(pakistan$division))) div.formula < formula(~ 1) endorse.out < endorse(Y = Y, data = pakistan, data.village = div.data, village = "division", identical.lambda = FALSE, covariates = FALSE, hierarchical = TRUE, formula.village = div.formula) ## Varyinglambda hierarchical model with covariates endorse.out < endorse(Y = Y, data = pakistan, data.village = div.data, village = "division", identical.lambda = FALSE, covariates = TRUE, formula.indiv = indiv.covariates, hierarchical = TRUE, formula.village = div.formula) ## Commonlambda hierarchical model without covariates endorse.out < endorse(Y = Y, data = pakistan, data.village = div.data, village = "division", identical.lambda = TRUE, covariates = FALSE, hierarchical = TRUE, formula.village = div.formula) ## Commonlambda hierarchical model with covariates endorse.out < endorse(Y = Y, data = pakistan, data.village = div.data, village = "division", identical.lambda = TRUE, covariates = TRUE, formula.indiv = indiv.covariates, hierarchical = TRUE, formula.village = div.formula) })