How does one obtain a standard error estimate of the difference between a direct and conventional estimates in a combined list experiment? Background
Aronow, Coppock, Crawford, and Green (2015) discuss a "combined list experiment." For background, this is used when surveying questions that might be prone to social desirability biases.
It is a two-step process:


*

*Ask everyone their opinion on $Y$. Let us assume it is 1 or 0 for having belief or not having belief.

*Randomly assign people to see a list of 5 (control) or 6 (treatment) beliefs. The latter includes $Y$, the former does not. You ask people to write down the number of statements they agree with. This is meant to give them somewhat of a "shield" against social desirability.
The same participants do 1 and 2 (hence "combined" list experiment).
The "direct" estimate is just the mean of asking everyone their opinion from Step 1. The "conventional" estimate is from Step 2: It is the mean of the treatment condition minus the mean of the control.
An Example
They have a ready-made example in their list package for R. I copy the code for their example here:
library(list)
data("combinedListExps")
combinedListExps <- na.omit(combinedListExps)
out.1 <- combinedListDirect(list1N ~ list1treat, 
                            data = subset(combinedListExps, directsfirst==1), 
                            treat = "list1treat", direct = "direct1")

Now, the focus on their paper is getting an unbiased estimate of the true, underlying belief. For the moment, I do not care about this. What I am interested in is a standard error for the difference between the direct and conventional estimates.
After running the code above, we can see the direct and conventional estimates:
> summary(out.1)$conv.est
   t.nona 
0.7477391 
> summary(out.1)$direct.est
[1] 0.656

From the list experiment (Step 2), our estimate for the belief was about 75%. But when we asked about it directly, we only got 66%. I would like to know if this difference is statistically significantly different from zero. I would like to have a standard error for the estimate, I would like to be able to construct a 95% CI for it, etc. I would like to estimate this so I can decide whether or not people are BS'ing me in the direct question; I want to use it as a way to measure level of social desirability, and I'd like to have an uncertainty estimate of it.
To show that my description of Steps 1 and 2 above were correct, we can compute these outside of the package:
> mns <- with(subset(combinedListExps, directsfirst == 1), tapply(list1N, list1treat, mean))
> diff(mns)
        1 
0.7477391 
> with(subset(combinedListExps, directsfirst == 1), mean(direct1))
[1] 0.656

Question
Does anyone know of a way to calculate a standard error for this difference of conventional minus direct (which, in this case, is about .09)?
My Attempt
When I don't know the answer, I try to bootstrap. I define a function to get direct and conventional estimates:
# y is the direct response, binary
# z is the treatment assignment, binary
# v is a count of how many items the participant agreed with
list_exp <- function(y, z, v) {
  direct_est <- mean(y, na.rm = TRUE)
  conv_est <- unname(diff(tapply(v, z, mean, na.rm = TRUE)))
  return(conv_est - direct_est)
}

I can use this with bootstrapping, and obtain a standard error:
set.seed(1839)
dat <- subset(combinedListExps, directsfirst == 1)
out <- sapply(seq_len(5000), function(zzz) {
  cases <- sample(1:nrow(dat), nrow(dat), TRUE)
  list_exp(dat$direct1[cases], dat$list1treat[cases], dat$list1N[cases])
})

This gets us about the correct estimate:
> mean(out)
[1] 0.09350558

But the standard error is huuuuuuge, and the 95% CI would include a huge range of possible differences—including that people were lying to us in the opposite direction:
> sd(out)
[1] 0.08235265

This seems like a wildly inefficient and wrong way to calculate a standard error for this difference. So how can I do it?
 A: I emailed this to the lead authors of the paper, as well as the maintainer of the R package, and this is what the email exchange with one of them resulted in:

Under the regularity conditions in our paper, the bootstrap should be asymptotically valid. I'd recommend the bootstrap for whatever you're using.
If you want an analytic expression, it should be straightforward to derive the asymptotic variance of the difference using the calculations for Prop 1, and then plug in sample analogues to get an estimator.
Eady (https://gregoryeady.com/Papers/The_Statistical_Analysis_of_Misreporting.pdf) uses a model-based approach under which SEs are straightforward. The latter will be more efficient if the model assumptions are met.

I followed-up with clarification:

So if you think the bootstrap is valid, then perhaps the combined list experiment might not be the best method for showing what I want to show? That is, showing the difference between conventional and directional might not be the most efficient way to demonstrate that social desirability bias exists. Because, for the example in the package/at that link, the difference is 9.35ppts, but the bootstrapped SE is 8.24ppts, meaning the 95% CI is a wide gulf of [-6.80, 25.50], meaning we'd need either (a) a ton of respondents or (b) a massive effect to show anything as significant.
I must admit that I don't know the theoretical/proof side of statistics as well (I can read it and understand it, but it takes me a bit), but I can take a track at looking at Prop 1 and seeing what I can do. To verify if I'm right, though, you think that the bootstrap method I linked to is asymptotically valid, meaning that the analytic and bootstrapped methods should converge as N approaches infinity, yes?

To which they replied:

To confirm -- yes, the bootstrap and analytic SE should agree in large samples. There's no need to derive the analytic unless you have some specific need. I'd recommend the bootstrap, which should have better small N properties.
Yes, that sounds right to me, though it's a generic feature of using any of these indirect response methods. List experiments, randomized response typically have very poor precision. The model-based approaches for inference may get you a bit more precision, but at the cost of robustness.

