Last chance! 50% off unlimited learning
Sale ends in
Estimate Lauderdale and Herzog's (2016) model for one-dimensional document author (e.g. speakers) positions based on multiple groups of texts (e.g. debates). Each group of texts is scaled using Slapin and Proksch's (2008) "wordfish" Poisson scaling model of one-dimensional document positions, and then the positions from a particular author are scaled across groups using a second-level linear factor model, using conditional maximum likelihood.
textmodel_wordshoal(x, groups, authors, dir = c(1, 2), tol = 0.001)
the dfm from which the model will be fit
the name of a variable in the document variables for data giving the document group for each document
the name of a variable in the document variables for data giving the author of each document
set global identification by specifying the indexes for a pair of
authors such that
a convergence threshold for the log-posterior of the model
An object of class textmodel_fitted_wordshoal. This is a list containing:
log-posterior tolerance used in fitting
global identification of the dimension
estimated document positions
debate marginal effects
estimated document fixed effects
estimated document debate-level positions
document groups
document authors
log likelihood at convergence
standard errors for theta-hats
corpus to which the model was fit
Returns estimates of relative author positions across the full corpus of texts.
Benjamin E. Lauderdale and Alexander Herzog. 2016. "Measuring Political Positions from Legislative Speech." Political Analysis 24 (3, July): 374-394.
# NOT RUN {
data(data_corpus_irish30, package = "quantedaData")
iedfm <- dfm(data_corpus_irish30, remove_punct = TRUE)
wordshoalfit <-
textmodel_wordshoal(iedfm, dir = c(7,1),
groups = docvars(data_corpus_irish30, "debateID"),
authors = docvars(data_corpus_irish30, "member.name"))
fitdf <- merge(as.data.frame(summary(wordshoalfit)),
docvars(data_corpus_irish30),
by.x = "row.names", by.y = "member.name")
fitdf <- subset(fitdf, !duplicated(memberID))
aggregate(theta ~ party.name, data = fitdf, mean)
# }
Run the code above in your browser using DataLab