I am trying to understand the concept of auto correlation and I am looking for some help to clear some doubts regarding my data.

I have a time series data and it has repeated experiments. Each sample has 4 time points and corresponding values for the genes under study. I have used ind to represent each sample in my data. So ind 1 means rat which is studied over 4 time points and the samples are in rows. I have 400 genes and corresponding values for each sample and each time point. The genes are in columns.

my dataset: M1

No      ind  tme      gene_1      gene_2      gene_3      gene_4      gene_5  gene_7

A1T1:2  1   -64 0.0307  0.0022  0.0010  0.0001  0.0007  0.0035

A1T2:2  1   8   0.0365  0.0031  0.0003  0.0002  0.0009  0.0043

A1T3:1  1   48  0.0182  0.0014  0.0001  0.0001  0.0005  0.0018

A1T4:1  1   96  0.0134  0.0010  0.0001  0.0001  0.0003  0.0015

A2T1:1  2   -64 0.0387  0.0032  0.0003  0.0002  0.0010  0.0051

A2T2:1  2   8   0.0264  0.0022  0.0010  0.0001  0.0007  0.0032

A2T3:1  2   48  0.0205  0.0017  0.0002  0.0001  0.0005  0.0022

A2T4:1  2   96  0.0161  0.0012  0.0001  0.0001  0.0004  0.0018

What I want to do is identify is simple: if there is autocorrelation in my data?

my code:

s1<-read.table("M1.txt", sep=" ",header=T)

I get a plot with 4 sub plots. I do not understand how to interpret the result. Also Can I give all the genes as input (for sample 1) to identify autocorrelation?

I am new to these concepts hence my understanding is basic. Thanking you for all the help.

  • $\begingroup$ If your time series is 4 periods long, then autocorrelation cannot be reliably estimated. $\endgroup$
    – mpiktas
    Jan 2, 2013 at 7:26
  • $\begingroup$ @mpiktas- thanks for editing my post. Are you suggesting that I need a dataset with more time points or lesser time points? any specific reason why you say for 4 time points, autocorrelation cannot be estimated well? $\endgroup$
    – Aps
    Jan 2, 2013 at 8:06
  • $\begingroup$ You need more time points. The autocorrelation is still a correlation, so the same rules apply. You would not estimate correlation between two variables when you have only 4 data points. You can, but you won't be able to say much. $\endgroup$
    – mpiktas
    Jan 2, 2013 at 8:10
  • $\begingroup$ Perhaps a useful exercise would be to generate a set of random values and look for autocorrelation. Then generate a set of values based on a sine wave and look for autocorrelation. $\endgroup$
    – D L Dahly
    Jan 2, 2013 at 10:50

1 Answer 1


Autocorrelation tells you the net correlation between numeric vectors at different lags, or offsets. You can check for autocorrelation across all genes, but I don't think that's what you want to do. If you do, it's as simple as this (warning, this will produce tail(cumsum(1:400),n=1) plots):

s1 <- read.table("M1.txt", sep=" ",header=T)
df <- s1[,4:404]

I think maybe what you want to do here is calculate a correlation matrix:


Rather than the above 80,200 plots, this produces one correlation matrix, albeit without the lags. I don't know what the tme value means, but I assume this is not a timeseries or spatial data, so you don't want autocorrelation anyway. If you want cross-correlation only, you will need to use the ccf function two univariate series at a time, in order to begin to get at something called spectral coherence.

I also posted an answer to another question with a way to efficiently apply functions to each unique combination of columns:

combinations <- combn(colnames(df),2,function(x) cor(df[x[1]],df[x[2]]))

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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