Open Science: what we can learn from open-source software engineers

April 1, 2012

I believe that sharing data, and the code to analyze it, should be more common in academia – especially in sociology.  It will save a lot of researcher time, and ensure that the work that we do is reproducible.  My last post announced my contribution to github which consists of code to prepare some data from the exceptionally popular Add Health data.  I’ll use this post to briefly describe github, revision control, and open-source programming more generally.

Let’s start with something everyone knows about… Wikipedia.  It’s one of the marvels of our time, and it was created by hundreds of thousands of people collaborating with little top-down control.

In the world of computer programming, sites like github have done something similar to Wikipedia in the way they’ve harnessed the energy of the crowd.   A legitimate complaint about Wikipedia, often made by experts, is that non-experts have difficulty accounting for the uneven quality of its articles.  Sites like github mostly avoid this problem.  There are plenty of people posting code that isn’t very good, but this isn’t really a problem because most users never even come across it, and they have a pretty good idea how much to trust something based on the reputation of the author.  For some of the most popular projects “editor” or “maintainer” would be a more accurate title than “author,” because many individuals are contributing and the owner of the project spends more time approving changes other people make than writing their own changes.

Unlike Wikipedia, sites hosting open-source software, like github, often embrace having multiple versions (known as “forks”) of the same code.  For every contributor to a project, many more people merely fork it and make minor changes for their personal use.  Still, a significant number of programmers do seek the satisfaction, and the badge of honor, that comes with suggesting a change in the code of a popular project, and having it approved.

An absolutely integral part of all collaborative software engineering, not just open-source, is version control (aka revision control) software.  This software allows users to keep a history of all previous versions of a piece of code (or some times other kinds of document), and to instantly highlight differences, and merge improvements made on separate copies.

I recommend most data analysts begin using version control software, even if they don’t plan on writing code collaboratively, because its easy to use and it facilitates backup, and good organization.  I first discussed version control for data analysis here, but there is a much better discussion of  for data analysts here.  I took that advice, about a year ago, and started using git.  It was simpler than I thought, and it is necessary to contribute to (though not to copy code from)  github.  Note that while I’m using R for the Add Health code I’m sharing, there is absolutely no reason not to use tools like git and github with SPPS, STATA, SAS, html, etc.

Advertisements

Share your code! (Here is some for Add Health)

March 26, 2012

The National Longitudinal Study of Adolescent Health, aka Add Health, has been in use for more than a decade ago.  Thousands of researchers have used it.  This is fantastic.  There are great economies of scale in the data collection.

Sadly, we researchers have wasted years doing things that others have already done. Anyone beginning a new project must first clean their data.  Add Health doesn’t require as much cleaning as some other, messier sources of data, thanks to people like Joyce Tabor, James Moody, Ken Frank, and many others.  Still, I think research would be sped up quite a lot, and communication greatly enhanced, if people shared their code more widely.  Therefore I’ve created my first github code repository which prepares the variables from the widely used in-school questionnaire portion of Add Health.

https://github.com/MichaelMBishop/inschoolAddHealth

This will be of most use to people using R, but the data could be exported.  The script also includes cross tabulations and fairly detailed comments which I hope will help people think about the data.  Some time soon I’ll upload more code.

I recommend Jeremy Freese on reproducibility in sociological research here and here.  Andy Abbott’s best objections don’t apply to a widely used data source like Add Health.

p.s.  Do share links to other code repositories in the comments!


Network Analysis Bleg for Help

March 16, 2010

So I’ve been working with the National Longitudinal Study of Adolescent Health (Add Health) for a while but I’ve only recently began looking at the raw friendship nomination data.  I’m hoping that someone can give me some practical advice.

My first question this: would you recommend using the network or igraph package?

I’m working in R, and I want to create some measures of centrality.    I wasn’t planning on doing ERG models or anything else complicated at the moment, just simple stuff.   If you want to recommend a different programming environment I’m happy to hear you make your case.