Basics
I’m a fifth-year PhD student in the Department of Political Science at Washington University – hence the wustl.edu. I study comparative politics with a special interest in the European Union. I also specialize in political methodology, and I find that the advanced industrial democracies are an especially rich source of data. My dissertation deals with the European Court of Justice, developing measures and models of outcomes and member state preferences. (See below)
In the Spring of 2009 I will be am in Paris with
the Groupe Sociétés, Religions,
Laïcités (GSRL which is part of CNRS, and also affiliated with the
École Pratique des Hautes Études (EPHE). The French love
alphabetisms. Besides eating
beaucoup de croissants, I hope to conduct some useful fieldwork
there as well as at the ECJ in Luxembourg.
My blog is mostly actually a log of stuff I read or run across that I want to be able to find later. It also frequently has a list of food I plan to make in a given week, so I can remember what I was excited to make when I bought all those ripe zucchini or that pair of rabbits. This site, malecki.wustl.edu, will grow over time with research projects and other stuff I’m working on.
Dissertation Abstract
Several features of the European Court of Justice have unduly hindered its study alongside other high courts. Its decisions are ostensibly en banc, with no written dissents and no judge-votes revealed. To date, most research on the Court's role in European integration has treated it as a unitary actor. However, like the other EU institutions, the Court is composed of individuals appointed by the member state governments. I argue that member states pay closer attention to appointing judges than previously thought, and that appointments constitute a hitherto unremarked indication of preferences over integration.
I develop an ecological item-response model of judges' preferences that exploits this hierarchical prior information, and the fact that the court’s organization into chambers systematically reveals information about individual behavior even though individual judge-votes are not observed. The model is applicable to other courts that hear cases in panels. Leverage is increased by treating outcomes as ordered (rather than binary) based on the Commission’s position revealed either as a litigant or through tendered observations. Finally, archival research probes the richness of member state observations as a dynamic indicator of integration preferences.
Other Projects

Current research projects include a paper on satisfaction with democracy at the European level and its interaction with national institutions and politics. Presented as a poster at APSA 2007; a draft of the paper will be available soon.
Estimating legislator preferences and party effects in the European Parliament, with Matt Gabel and Simon Hix. This paper uses my extension of MCMCpack, a hierarchical item-response theory (IRT) model with covariates on ideal points θ for exogenous preference and party. See below for implementation details and instructions on building and installing.
With Brian F. Crisp, I’m investigating how legislators
operate in the unusual institutional context of a nationwide
district with preference voting (a form of
semi-open list). More to the point, do legislators cultivate
geographic constituencies using these preference votes? Do
parties?
Another project is an attempt to explore the empirical implications of informational cascades in the incidence of strikes. A draft of the paper is available here. How do union leaders and members decide to strike? What information do they have about the probability of success and of reprisal? Moreover, I argue that what they learn about these probabilities and others' assessments influences the course of events.
I am also assisting with data modeling, management, and collection with several professors' projects in the department.
- The use of executive decree authority (just data collection with perl, see below) with Brian F. Crisp and fellow student Amanda Driscoll.
R package apsrtable
apsrtable()
for R, now finally a package, with documentation and everything! (example PDF). To install, just tell R:
install.pacakges("apsrtable")It accepts lm and glm objects with either the standard or user-supplied variance-covariance matrix, placing standard errors below coefficients and in parentheses; it adorns estimates with either one or multiple glittering stars and other symbols; and uses dcolumn to align output, with the pleasant side effect of math-mode for model output (no xtable $-$ negative signs!). Model naming is flexible, either auto-numbering with an adjustable counter, or using a vector of user-supplied names; selected coefficients can be omitted from the output; and the order of coefficients is determined by the models supplied and several options for processing them. The latex it produces is formatted to be legible in tex source. It also plays well with Sweave. Here's the output from the example:
apsrtb> apsrtable(lm.D90, lm.D9, digits=1, align="center",
apsrtb+ stars="default", model.counter=0, order="rl")
\begin{table}[!ht]
\caption{}
\label{}
\begin{tabular}{cD{.}{.}{-1}D{.}{.}{-1}}\hline
& \multicolumn{1}{c}{Model 0} & \multicolumn{1}{c}{Model 1}\\
% & Model 0 & Model 1\\
(Intercept) & & 5.0 ***\\
& & (0.2) \\
groupTrt & 4.7 *** & -0.4 \\
& (0.2) & (0.3) \\
groupCtl & 5.0 *** & \\
& (0.2) & \\
$N$ & 20 & 20 \\
$R^2$ & 1.0 & 0.1 \\
adj. $R^2$ & 1.0 & 0.0 \\\hline
\multicolumn{3}{l}{Standard errors in parentheses}\\
\end{table}
MCMCpack with hierarchical IRT

I made a poster for PolMeth 2008 about the model, perhaps a bit glib, but I liked it and had fun making it.
The devel version of MCMCpack includes my hierarchical model in “new” Scythe calls. This means: faster model fitting through very slick templating. However, you may still want to use the code below, which is built against old Scythe. Why? The database part described in this paper and this presentation. Because measurement models often have lots and lots of parameters and can take a very long time to converge (though this is faster than the canonical 1d irt model), and can quickly exceed even modern memory capacity. On the distant horizon is to create a flexible storage-and-replication model for MCMCpack.
modMCMCpack.tgz. I recommend installing this package into a sandbox lib.loc and not your main R library. MCMCirtHier1d has begun talks to join MCMCpack, but for now it's struggling with the acquis codebasaire.
wget http://malecki.wustl.edu/modMCMCpack.tgz tar -zxvf modMCMCpack.tgz R CMD INSTALL -l ~/R MCMCpack
A set of covariates Xj are used to predict ideal points θ ~ N(X'β, σ2) with standard Normal, IG prior on β and σ2. The full conditional distribution for (binary) θ is described in Fox 2007. a,b∈η is the typical IRT update. β and σ2 are Normal regression updates.
Prerequisites: Hier IRT also implements a new storage technique for MCMC draws. Thus SQLite3 and RSQLite are up to you to find and install. On a Mac, you can simply fink install sqlite3 sqlite3-dev and in ubuntu or debian it should be doable with apt-get install sqlite3 libsqlite3-dev. Similarly, in (sudo'd) R you should be able to install.packages("RSQLite"). Note that it defaults to storing both item (bill) and person parameters and that memory is no longer a limitation on storage.
Fitting a model: A data.frame with named covariates is expected. The following code fits a model to the MCMCpack SupremeCourt dataset using covariates for the party of the appointing president and for sex.
library(MCMCpack,lib.loc="~/R")
data(SupremeCourt)
file.remove("Hier1d.db")
presparty <- c(1,1,0,1,1,1,1,0,0)
sex <- c(0,0,1,0,0,0,0,1,0)
Xjdata <- data.frame(presparty=presparty,sex=sex)
posterior1 <- MCMCirtHier1d(t(SupremeCourt),
alpha.start=.2, beta.start=.2,
burnin=500, mcmc=200000, thin=20,
verbose=500,
Xjdata=Xjdata,
betastart=c(-.5,.5),sigmastart=1,
drop.tables=TRUE)
dbh <- dbConnect("SQLite","Hier1d.db")
beta <- dbReadTable(dbh,"beta")
theta <- dbReadTable(dbh,"theta")
a <- dbReadTable(dbh,"a")
The development version of the code puts bill parameters a,b into separate database tables because SQLite defines a maximum of 2000 columns per table. This means we can analyze a maximum of 2000 bills (1000 if η are both stored in one table). You can overcome this by installing sqlite3 and RSQLite with the configure variable SQLITE_MAX_COLUMN=n. RSQLite builds and installs its own SQLite library and is needed to create and work with the samples in R. I don't know which one is actually used by the #include <sqlite3.h> in MCMCirtHier1d.cc so I suggest doing it to both.
Code Snippets &c.
Here are code snippets I use all the time that may be of more general use.
- Latex document template, Xetex template, beamer template, and Sweave template. I also have a mostly-working xetex one. Xetex lets tex use fonts from the Mac OS system instead of the asinine tex font tree.)
- My modified apsr.bst. The recommended location for this file in the fink distribution of tetex is /sw/share/texmf-local/bibtex/bst/natbib/apsr.bst. I also recommend placing a symlink to your .bib file in /sw/share/texmf-local/bibtex/bib/. After doing this you have to run texhash of course. If anyone knows how to get latex/bibtex to handle jstor urlencoded links, let me know! Details: JStor static links are cumbersome urlencoded things (e.g., http://links.jstor.org/sici?sici=0020-8183(199824)52:1%3C121:WAT%22OT%3E2.0.CO;2-8). Latex chokes on them because they contain a lot of its (stupid) comment character %. They need to be urldecoded (above would be http://links.jstor.org/sici?sici=0020-8183(199824)52:1<121:WAT"OT>2.0.CO;2-8 and probably checked for any latex-special characters like &. JStor themselves seem to be fixing this problem by having better behaved urls (http://www.jstor.org/view/00208183/di012150/01p0008j/0) but they'll have to support their arcane legacy ones as above forever.
- aumatrix.R and trimau.pl, here only for reference of manipulating ugly raw files described here to make useful data frames.
- Decree stuff from GLIN (web scraping with perl, some other stuff, see getResults.pl for resultset retrieval, individual page getting, and database insertion.)
- I mantain the digital archive of the papers US Supreme Court Justice Harry A. Blackmun for Lee Epstein at Northwestern.
- Soon: an interface to my growing table of country codes. Currently includes World Values Survey, IMF, and GLIN codes, with country names. If you have a dataset with country codes / names, I’d love to include it. Allows cross-national databases to be used together by a pair of SQL joins to this table.
Computers and Laziness
I am disinclined to do the same work more than once. This sort of precludes my participation in a lot of occupations where repetition is the order of the day. I use computers to help me avoid duplicating work. If you buy into the idea that lumper/splitter (searcher/sorter in GMail's terms) is a basic divide in how people approach problems and their world more generally, I am firmly in the Lumper category. I throw things together and let the computer sort it out later. Both GMail and Apple's Spotlight help me live in an unsorted world (and, in a much cruder way, so do locate and kpsewhere and which).

Upcoming
- Slovak billcoding web app fixes
- Work on SQL storage of MCMC samples
- Read party-effects in legislatures stuff for that paper
- Finish parser for ECJ case citations
- Make xetex work
- Surely there's a wine tasting I could be at right about now
Links
Files