R from Python – an rpy2 tutorial

rpy2 tutorial

Recently I found the Python module rpy2. This module offers a Python interface to R. Obviously; rpy2 requires that you have both R (version 3.2+) and Python (versions 2.7 and 3.3) installed.  There are pre-compiled binaries available for Linux and Windows (unsupported and unofficial, however). In this short tutorial, I will show you how to do carry out a repeated measures ANOVA (rmANOVA) using the r-packages ‘afex‘ and ‘lsmeans‘, Python, and rpy2.https://open.spotify.com/album/6XJujBkWZYlhTtxYRcDHr3

First, we start the tutorial with installing rpy2. I installed rpy2 on Ubuntu 14.04 using pip:

When we have a working installation, we continue the tutorial with importing  the methods that we are going to use. In this rpy2 example we are going to use ‘afex’ to do the within-subject ANOVA and ‘lsmeans’ to do the follow-up analysis.

We also need to check whether the needed packages are installed. Note that the following script will install the r-package if needed. However, it might be good to know how to carry out a repeated measrues ANOVA using the function ez_aov.

For this tutorial we borrow a data set from the package Psych. In this case, we use the r-function read.table to get the data.


repeated measures ANOVA

In this part of the rpy2 tutorial we will carry out the actual analysis. However, before conducting our ANOVA for within-subjects design, we need to import the r-package (i.e., afex). When this is done, we will use the function aov_ez to conduct the analysis.

The last line above prints the results. A main effect of Valence was found.

Follow-up analysis

Typically we are interested in following up the main effect, and with rpy2, we can do that using the r-package ‘lsmeans’. First, we need to import the package and then we do a pairwise contrast and adjust for familywise error using Holm-Bonferroni correction.

That was easy, right. Particularly, if you are used to doing analysis in R. Although, rpy2 is relatively easy to use I don’t think it will replace learning R. That is, you will have to know some R to make use of it. However, if you are a Python programmer and want to use available R-scripts, it might be useful and hopefully this rpy2 tutorial have made it somewhat easier for you. Noteworthy, I am not aware of any Python implementations of rmANOVA (except for the linear-mixed effects approach maybe). In fact, that is why I learned how to use rpy2 in the first place; to use Python, and R, to conduct the analysis.

Update: In this rpy2 tutorial you learned how to do a repeated measures ANOVA with Python and R. I have now found a Python package that allows Python ANOVA for within-subjects design (i.e., Python native); see my tutorial Repeated Measures ANOVA using Python.

Leave a Reply

Your email address will not be published. Required fields are marked *