See you there!
Politics, lifehacking, data mining, and a dash of the scientific method from an up-and-coming policy wonk.
Monday, September 23, 2013
Sayonara again
See you there!
Monday, October 24, 2011
Moving to a new home...
So please point your blog readers to http://compSocSci.blogspot.com so the adventure can continue.
(The contents of this blog will remain online, searchable, etc. for the forseeable future.)
Wednesday, September 7, 2011
Latex: tikz
See the gallery of example here.
Here are some links that were helpful for preparing my presentation:
- http://www.jmilne.org/not/CDGuide.html
- http://heather.cs.ucdavis.edu/~matloff/beamer.html
- http://www.latex-community.org/forum/viewtopic.php?f=5&t=1152
- http://www.texample.net/tikz/examples/
- http://www.uncg.edu/cmp/reu/presentations/Charles%20Batts%20-%20Beamer%20Tutorial.pdf
- http://faq.ktug.or.kr/wiki/uploads/beamer_guide.pdf
Tuesday, September 6, 2011
Topics that came up at ASPA, part 1.
From a section on game theory and experimentation:
- Quantal response equilibrium
- Experience-weighted attraction
- Beauty contests and level-k reasoning
- "Strategic Information Transmission," Crawford and Sobel
- z-tree software for economic experiments
- Maskin and Tirole on pandering in democracy
- A Behavioral Theory of Elections, by Bendor, Diermeier, and Siegel
- A Handbook of Experimental Economics, Roth
- Groves-Ledyard mechanism
- Cyert-March rule
- Predictably Irrational, Ariely
- Global Games
- Ecological rationality
Monday, September 5, 2011
Slides from APSA: Why do people blog about politics
Here is the final version of my presentation slides. I'm not going to post the paper because it's in the process of splitting into three, but I'm happy to share by email if you're interested.
On with the job search!
Tuesday, August 30, 2011
Hard-learned lessons on data merging
Here are some lessons learned:
1. Agree on an outline before doing the data work.
Know the main steps going in, and write them as comments in the code. This will make the logic of the data work more clear, which is helpful for debugging. For long merges, it can be motivating to see your progress as you go along. Also, if the steps need to change, it's good to realize why the original plan didn't work.
2. Stick to an intuitive naming convention for variables, data sets, etc.
Yes, you'll have to type out longer variable names, but you'll save a ton of time in debugging. For instance, "october_cleaned_dataset" instead of "d2.10c".
3. Store files as .csv, not .dat.
R's "save" command isn't fully compatible across versions and operating systems. Instead, save small-to-moderate datasets as .csv files. That way, compatibility won't be an issue. (Plus you can open the same files in other programs, like STATA or excel.)
4. Use names, not numbers.
Don't use commands based on row or column numbers: data_set[,c(1:4,7,8,23)]. They're hard to read, and they're brittle: if a new column gets inserted in data_set, that code isn't going to work anymore. Instead, use variable names: data_set[,c("time1","time2","time3","time4","age","gender","year")]. Regular expressions can be very helpful here: data_set[,append(grep("time.", names(data_set)), c("age","gender","year"))]. Yes, it takes longer to write, but you'll save a huge amount of time debugging.
Monday, August 8, 2011
The world's fastest demo for RStudio in EC2
Please let me know in the comments if you have any trouble or questions with this demo. I'm trying to lower the startup costs for people to do computational social science, so I'm happy to be a resource for others working their way down the cloud computing path.
Cheers!
PS - The instance comes with several fun R libraries pre-installed: tm, igraph, and twitteR.
*I've 1) dropped several steps that aren't necessary for running RStudio, 2) added a few screenshots, and 3) clarified a steps that were giving people trouble. Thanks again to Kevin J. for putting together the original slides.
Monday, August 1, 2011
Mining and visualizing twitter from RStudio in EC2
Step-by-step instructions for getting started in EC2 are here (pdf and docx). These are intended to get you started in command-line R. For this exercise, we want to use the RStudio GUI instead, so there are a few changes.
1. On step 6, use this Community AMI: agongRStudio2 / ami-1bb47272
2. On step 8, you don't need to download the keypair. "Proceed without a keypair" instead.
2. On step 9, you also need to enable port 8787, the port the RStudio server uses.
3. On step 11 stop following the tutorial. Instead, open up your EC2 URL in your browser, with port 8787. It will look something like this:
http://ec2-123-45-67-890.compute-1.amazonaws.com:8787/
4. I'll give out the username and password in class. If you're not in the class, email me and I can clue you in.
5. Here's a first script to run
library(twitteR)We're going to be trying this in class. I have 20 minutes budgeted, so hopefully it's really this easy.
library(tm)
library(wordcloud)
#Grab the 200 most recent tweets about #bachmann
#http://www.slideshare.net/jeffreybreen/r-by-example-mining-twitter-for
k = 200
my_tweets <- searchTwitter("#bachmann", n=k)
#Convert tweet status objects to text
#http://www.r-bloggers.com/word-cloud-in-r/
my_text <- data.frame( text=unlist( lapply( c(1:k), function(x){my_tweets[[x]]$text} ) ) )
#Convert text to a tm corpus object
my_corpus <- Corpus( DataframeSource( my_text ) )
my_corpus <- tm_map(my_corpus, removePunctuation)
my_corpus <- tm_map(my_corpus, tolower)
my_corpus <- tm_map(my_corpus, function(x) removeWords(x, stopwords("english")))
#Convert corpus to matrix
tdm <- TermDocumentMatrix(my_corpus)#, control = list(weighting = weightTfIdf))
m <- as.matrix(tdm)
#Get features and frequencies
v <- sort(rowSums(m),decreasing=TRUE)
d <- data.frame(word = names(v),freq=v)
#Display as a word cloud
wordcloud(d$word,d$freq,min.freq=5,use.r.layout=T,vfont=c("sans serif","plain"))
#Basic bluster analysis of words
#From: http://www.statmethods.net/advstats/cluster.html
m2 <- m[colSums(m)>15,]
dist_matrix <- dist(m2, method = "euclidean") # distance matrix
fit <- hclust(dist_matrix, method="ward")
plot(fit) # display dendogram
PS - Don't forget to terminate your EC2 instance when you're done, or you will use up your free hours, then run up a smallish (~50 cents/day) Amazon bill until you remember
Monday, July 25, 2011
Brand sentiment showdown...
Brand sentiment showdown: "
There are many brands on Twitter that exist to uphold an image of the company they represent. As consumers, we can communicate with these accounts, voicing praise or displeasure (usually the latter). Using a simple sentiment classifier1, I scored feelings towards major brands from 0 (horrible) to 100 (excellent) once a day for five days.
The above for example, shows scores for Netflix, Hulu, and Redbox. Netflix had the lowest scores, whereas Redbox had the highest. I suspect Netflix started low with people still upset over the price hike, but it got better the next couple of days. Then on Saturday, there was a score drop, which I'm guessing was from their downtime for most of Saturday. Hulu and Redbox, on the other hand, held more steady scores.
As for auto brands, Toyota clearly had the lowest scores. However, Lexus, which is actually a luxury vehicle division of Toyota had the highest scores in the high 90s to 100.
How about the major mobile phone companies, AT&T, Verizon, and Sprint? Verizon scored better initially, but had lower scores during the weekend. Not sure what was going on with Sprint.
Between Twitter and Facebook, there was obviously some bias, but Twitter faired slightly better. Twitter scored lower than I expected, but it probably has to do with bug reports directed towards @twitter.
Is Domino's Pizza good now? Papa John's stayed fairly steady while Pizza Hut scores were sub-par.
Finally, as a sanity check, I compared airlines like Breen did in his tutorial. Results were similar with JetBlue and Southwest clearly in the positive and the others picking up the rear.
Any of these scores seem surprising to you?
- Jeffrey Breen provides an easy-to-follow tutorial on Twitter sentiment in R. The scoring system is pretty basic. All you do is load tweets with a given search phrase, and then find all the 'good' words and 'bad' words. Good words give +1, and bad words give -1. Then a tweet is classified good or bad based on the total. Then to get a final score, only tweets with total of +2 or more or -2 or less are counted. The final score is computed by dividing number of negative tweets divided by total number of 'extreme' tweets. Obviously this won't pick up on sarcasm, but the scoring seems to still do a decent job. I wouldn't make any important business decisions based on these results though.
The new FlowingData book is available now.
Friday, July 15, 2011
Automated snowball census
Tuesday, July 12, 2011
How are new media reshaping politics? Take 2
Benkler and the Networked Public Sphere
On the other side of the debate, Yochai Benkler is an Internet optimist. He argues that many-to-many communication will invigorate the public sphere, leading to broader intake of ideas, better discussion, and ultimately better governance. Benkler is very critical of the media oligopoly of the mid-20th century, which he says was heavily influenced by money and ideology, and excersized outsized control on public access to information. According to his account, the current proliferation of online information sources is certainly better than being dependent on a handful of corporate broadcasters, even if it still falls short of utopia.
This picture of the public sphere is appealing and not entirely untrue. I want to believe it. However, Benkler fails to take into important and well-established facts about American political system.
First, most citizens in the U.S. are poorly equipped to deal with political information. Converse's half-century-old finding that as many as 90 percent of Americans are "innocent of ideology" (i.e. they have no idea what "liberal" and "conservative" mean) has been replicated and extended many times. Most voters don't know how government works, they don't know how it's supposed to work, and they don't care to find out. True, partisan cues, endorsements, and heuristics can sometimes bring voters up to speed enough to fill out a ballot, but these heuristic strategies cannot inform most citizens for participation in the public sphere the way Benkler imagines. We must distinguish between the handful of citizens who are motivated and equipped to reason about politics, and the majority who are not so prepared or inclined. Benkler's optimism really only extends as far as the electorate is capable of reasoning about democracy.
Second, Benkler ignores the structure of government and policymaking. He treats "government" as a unitary actor, and makes only passing reference to elections and political parties. Benkler is painting with a broad brush, so perhaps he can be forgiven for ignoring the institutional details of representation and government in American politics. However, those details are likely to matter, deeply.
Consider: primary responsibility for lawmaking in the U.S. falls to elected legislators. These legislators are influenced not only by the ebb and flow of ideas in public debate, but by their ability win in zero-sum, partisan elections. Proliferation of information sources may affects public debate for the better, but it also affects the electoral pressures faced by public officials. We have strong reason to believe that access to additional channels, selective exposure, and ideological pandering are leading to increased polarization in the electorate. What if this polarizing electoral effect dominates the enriching discursive effect that Benkler outlines?
I'm sympathetic to the the idea of a networked public sphere. As I said earlier, I really want it to be true. But Benkler's picture ignores key institutions in American politics, like elections and parties, so I have a hard time placing much faith in his predictions. We need to think carefully about the interplay of partisanship, ignorance, and representative government with technologies that allow cheap, many-to-many communication.
How are new media reshaping politics? Take 1
As I see it, the pressing question is "How are new media (including blogs) reshaping American politics?" This is a big question -- one that certainly matters outside of academia. But that won't stop me from writing about it in a dry, academic way. :) To my mind, Matthew Hindman, Yochai Benkler, and Cass Sunstein have put forward the three leading, competing theories for answering this question. This week, I'm going to make a first attempt at responding to and synthesizing their ideas.
Feedback and constructive criticism are very welcome.
Hindman and the Missing Middle
Matthew Hindman is an Internet pessimist. In his book, The Myth of Digital Democracy, he argues that the web has exacerbated the "rich get richer" tendencies of media markets, leading to greater inequality. To back up his assertion, he shows that links and traffic to web pages follows a power law distribution. He also interviews top 40 bloggers and claims that they are overwhelmingly white, male, high-income, and educated. His analysis suggests that the people with big audiences online are no different from those offline. Hindman labels this dramatic inequality between popular and unpopular sites "the missing middle."
However, Hindman's line of attack has two important weaknesses. First, he has no counterfactual. The distribution of online audiences is dramatically unequal, but the same is (and was) probably true offline as well. Certainly, Barack Obama, Michelle Bachman, and Thomas Friedman have daily audiences that are orders of magnitude larger than mine or yours. The same was true of their counterparts before the Internet. Audiences online are distributed unequally, but are they more unequal than those that existed offline, before the Internet? Hindman does not answer this question, and I suspect the answer is no.
Second, Hindman ignores the potential for indirect influence. The Drudge Report is one of the most heavily trafficked blogs* on the Web, but Drudge himself writes almost no content. Instead, the site features links to stories elsewhere on the Internet. How then do we think about Drudge's influence? He inserts no new ideas into public debate, but exercises some ability to influence which ideas get attention. By linking to other authors' stories, Drudge allows those authors to exercise indirect influence on his readers.
Drudge is an extreme case of the common online practice of linking. Linked content intrinsically gives others indirect influence. It is not unique to the online world (think of citations, endorsements, recommendations), but it is probably more common there. Network theory shows us that all else equal, more re-linking leads to more egalitarian distribution of indirect influence. By focusing only on direct readership, Hindman misses this possibility.
The bottom line: Hindman is the skeptic in this debate, arguing that the Internet means business as usual for participation, voice, and influence. He's only right as long as we assume that 1) offline participation is not also unequal, and 2) only direct influence (i.e. readership and web traffic) matters.
Monday, July 11, 2011
+Computation: Got an AWS in Education grant!
Wednesday, June 22, 2011
Political science and big data resources from JITP
TDT: topic detection and tracking (http://projects.ldc.upenn.edu/TDT/)
Socrata, the Open data company (http://www.socrata.com/)
Google's Data Liberation Front (http://www.dataliberation.org/)
TESS: Time sharing experiments in the social sciences (http://www.tessexperiments.org/)
TREC (Text retrieval conference) benchmark data sets (http://trec.nist.gov/data.html)
And the good old American National Election Study (ANES) (http://www.electionstudies.org/)
Monday, June 20, 2011
Laptop vs Clipboard
| Laptop | Both | Clipboard |
| Coffee Falling Power surges Worms and viruses Rain Babies EMPs Losing the power cable Tripping on the power cable Planned obsolescence Stomping Yogurt Crumbs The AllSpark Big magnets | Fire Karate experts Garbage compactors Lightsabers | Termites Beavers Very strong wind |
PS: This list was created as my flight into Detroit was descending, and "all personal electronic items" had to be switched off.
Saturday, June 18, 2011
Resources from PolNets
Here are links to nifty resources referenced in talks:
Affective Norms for English Words (ANEW): http://csea.phhp.ufl.edu/Media.html#bottommedia
Networks, Computation, and Social Dynamics Lab at UC Irvine: http://www.ncasd.org/public_html/
OpenCongress RSS feeds: http://www.opencongress.org/about/rss
Public.Resource.Org: https://public.resource.org/
Thursday, June 16, 2011
Netroots Nation
* Lots of discussion of messaging and issue ownership. This is an area that academic researchers haven't really embraced, especially us quants. We should.
* The community is really open and egalitarian. I sat in the same panel with Markos Moulitsas for half an hour without realizing it.
* I've been impressed by the sophistication of research design in analytics and message experiments. It's got me thinking about what's the next step after AB testing... There's room for innovation here.
* The left-meets-right happy hour was kind of a flop. Where were all the Republicans?
Tuesday, May 17, 2011
Slides from JITP: The Future of Computational Social Science
For now, I'll post the resource I already have put together: my conference slides.
Thursday, May 12, 2011
Computational social scientists: a draft directory and basic survey results
We had just under 100 responses, from people at many different institutions, working in a wide variety of areas. Here are some early results.
First, the obligatory word cloud. This isn't particularly scientific, but it illustrates the concepts that people find important in this space. Not surprisingly, we had a strong showing from network people and agent-based modelers.

We also asked about broad areas where people had formal training and were currently working. The two are pretty similar, so I'll just show the graph on training.

More results, and a revised version of the directory will be forthcoming in a couple weeks. Please let us know if you have any questions. We hope these will be useful resources for the community.
Click here to take the survey. We'll keep it open for another couple weeks, so that responses can continue to trickle in.
Click here for the directory in pdf format. (To avoid spam, this doesn't include email addresses. Email me if you want a copy that includes emails.)
* Scott Page, Dan Katz, and I
Wednesday, May 11, 2011
R code to remove the second line of a Qualtrics .csv
I keep having to figure out how to tell R how to deal with this messiness. It's not complicated, but I have to look up the read.csv documentation every time.
No more. Here's my code:
DF <- read.csv("my_file.csv", skip=2, header=F)
DF2 <- read.csv( "my_file.csv" )
names(DF) <- names(DF2)