(this is the opposite of "introduction to statistics for mathematicians")

I'm a programmer who loves writing logic and even a libsvm vector embedding library to my name. Now I'm getting asked questions about:

  • "exogenous factors"
  • "sample randomness"
  • distributions, confidence intervals, etc.

There are plenty of self-taught programmers, so how should I self-teach statistics?

  • 4
    $\begingroup$ Have you thought of other options, such as referring those questions to a statistician? $\endgroup$
    – whuber
    Mar 29, 2013 at 0:55
  • 3
    $\begingroup$ Well, if you can't afford payment in dollars, I suggest bartering! Lots of statisticians aren't great programmers. $\endgroup$
    – Peter Flom
    Mar 29, 2013 at 2:31

3 Answers 3


My background is programming myself - I have a degree in bioinformatics and computational biology and spent most of my time doing things like text mining and such. Perl was/is my jam, and I spent more time in computer science classes than I like to think about. But now being in education policy, I find that the core of my thinking has had to shift from programming to math.

Here are some of my tips, then:

  • Find a topic you care about, with data you can find, and a question for which you want to know an answer. I found that having a focus like that gives my math-learning a real point (which I personally feel is a weakness of a lot of math education).
  • If you like the programming, stepping through some of the data analyses done in R or Stata, I think, can really help you wrap your head around what's going on.
  • Get a good book. There are lots out there, but I would say that which one you get (as well as which language you work on most) depends on what field you're in.
  • Talk to people. I find it really hard to understand a statistics concept unless I can talk it out with people.
  • Go down the rabbit hole. If you have a problem, start with the simplest solution you can think of. Then ask people why it might be wrong, and go from there.

I really think the biggest thing is to find a project you care about. I used to gloss over the math-y sections of things and skip right to programming, but once I found questions where it was important to me to get the right (or very close to right) answer, it made it much easier.

  • $\begingroup$ "stepping through some of the data analyses done in R or Stata" - any examples you like? $\endgroup$ Apr 1, 2013 at 22:38
  • $\begingroup$ Hm well what's your field? I think it works best if it's something you actually care about. $\endgroup$
    – RickyB
    Apr 2, 2013 at 5:29
  • $\begingroup$ Hm - I don't know much about those fields, but here's a general tip: You can go to the Harvard Dataverse website, and there, there are thousands of studies for which people have submitted data and for a lot of them, they have replication code. Find one you like, and try to replicate what they have. Lots of interesting stuff. You might just be able to ask your colleagues too if they can think of anything. $\endgroup$
    – RickyB
    Apr 2, 2013 at 17:55

The book by Wasserman, All of Statistics: A Concise Course in Statistical Inference, is a great introductory reading for hackers.


There are several free textbooks for programmers who want to learn stats, all of which are reputed to be good:

Think Stats. There is also Think Bayes by the same author. The examples are in Python. This might be a good place to start.

Matloff's Book. (The link is to the pdf.) Very explicitly aimed at computer programmers who want to learn statistics. Has examples from programming etc. I haven't read it but Matloff is a very good author and he started out as a programmer, then learned stats. Goes into quite a lot more depth than the previous book. The examples are in R.

Modeling with Data. This one uses C with the gsl and also a library called apophenia written by the author of the book. Rather ambitious.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.