I started using brms very recently instead of stan, trying to estimate bias in election polls based on a model by Shirani-Mehr et al. (2018). For this purpose I have data on presidential state level polls nested in state level elections, including the republican two party vote share (poll), the actual election result (vote), the sample size(n) and some covariates. For this purpose I assume, that the poll result is the election result + x. Further, the excess variance above SRS should be estimated. The model looks as follows:
poll_i \sim\mathcal{N(p_i,\sigma_i^2)}
logit(p_{i}) = logit(vote_{state\_election[i]}) + x_{state\_election[i]}
\sigma_i^2 = \frac{p_i*(1-p_i)}{n} + excess_{state\_election[i]}
The model block of the stan code for it should look similar to:
model {
...
for(i in 1:N){
logit_p[i] = logit_vote[stateElection[i]] + x[stateElection[i]] ;
p[i] = inv_logit(logit_p[i]);
poll[i] ~ normal(p[i], sqrt(p[i] * (1 - p[i]) / n[i] + excess[stateElection[i]]));
}
}
I was wondering how to access mu (which corresponds to p in my model ) to estimate sigma
My attempts were not very fruitful so far:
formula <- bf(poll ~ 0 + logit_scaled(vote) + (1 |stateE[quote="Sina, post:1, topic:15575, full:true"]
I started using brms very recently instead of stan, trying to estimate bias in election polls based on a model by Shirani-Mehr et al. (2018). For this purpose I have data on presidential state level polls nested in state level elections, including the republican two party vote share (poll), the actual election result (vote), the sample size(n) and some covariates. For this purpose I assume, that the poll result is the election result + x. Further, the excess variance above SRS should be estimated. The model looks as follows:
poll_i \sim\mathcal{N(p_i,\sigma_i^2)}
logit(p_{i}) = logit(vote_{state\_election[i]}) + x_{state\_election[i]}
\sigma_i^2 = \frac{p_i*(1-p_i)}{n} + excess_{state\_election[i]}
The model block of the stan code for it should look similar to:
model {
...
for(i in 1:N){
logit_p[i] = logit_vote[stateElection[i]] + x[stateElection[i]] ;
p[i] = inv_logit(logit_p[i]);
poll[i] ~ normal(p[i], sqrt(p[i] * (1 - p[i]) / n[i] + excess[stateElection[i]]));
}
}
I was wondering how to access mu (which corresponds to p in my model ) to estimate sigma
My attempts were not very fruitful so far:
formula <- bf(poll ~ 0 + logit_scaled(vote) + (1 |stateElection),
sigma ~ 1 + (1| stateElection))