User Tools

Site Tools


Preparation of data for analysis


Before the main analysis, and after the data have been imported into R, it is useful to explore data first, check for missing values or outliers, check for range and type of species and environmental data, apply transformation or standardization if necessary, check for possible correlations between environmental variables etc.

Missing values

This is not as trivial as it may sound. Missing data are elements in the matrix with no value, in R usually replaced by NA (not available). Note that there is a difference between 0 and NA, and not always has the sense to replace missing values in the dataset by zeroes1). Samples with missing values will in most cases be removed from the analysis (often silently without reporting any warning message), and if there are many missing values scattered across different variables, the analysis, in the end, could be based on rather few samples. One way to reduce this effect is to remove those variables with the highest proportion of missing values from the analysis. Another option is to replace the missing values by estimates if these could be reasonably accurate (either from similar plots, neighbors, values measured at the same time somewhere close, or values predicted by a model).


Outliers are those values within given variable which are conspicuously different from other values. Outlier value could get quite influential in the analysis, so it is worth to treat it in advance. How “different” the value should be to become the outlier is often based on a subjective threshold. As a rule, we should not remove some samples as outliers after the analysis just because removing it will improve our result; there must be a more sound reason to actually do it. One option is that the outlier is actually an error in measurement or sampling; therefore, first, spend a reasonable effort to make sure that such value is not a mistype (either in the field or when retyping the data into a spreadsheet). Another option is that the sample itself really describes conditions which are rather different from the rest of the data set; if there are very few such samples, it may be reasonable to remove them, since there may not be enough replications to describe this difference2).

There is a number of ways how to detect outliers. A simple exploratory data analysis (EDA) could reveal it graphically e.g. using a box plot or a histogram. In a box plot, the outlier is defined as a value 1.5 times of interquartile range above upper quartile (Q3) or below lower quartile (Q1); the interquartile range is the range between upper and lower quartile: IQR = Q3-Q1 (Fig. 1).

Figure 1: Definition of outliers in the box plot. An outlier is shown by circle below the non-outlier range of values.

Using pH values available from Vltava river valley dataset as an example, Fig. 2 illustrates the use of box plot and histogram to identify outliers3). Boxplot indicates that there are four outliers with pH value too high. Histogram confirms that three pH values above 6.0 are really separated by a gap from the other pH values. Closer examination reveals that three samples (namely 32, 33 and 34, highlighted by red color) are from the same transect which was made in a limestone bedrock, which is why they have rather high values of soil pH. When I was sampling the data, I was aware that there is a limestone, and I hoped to have high pH samples in my dataset; that time I did not think that it will be the only three plots between all 97 plots which will be on a limestone. These values are therefore not a mistake, but they are outliers since they describe a different phenomenon (forest on limestone bedrock) which does not have enough replicates in the dataset. I may either delete them or go back to the field and try to collect more limestone samples. The fourth value indicated as outlier by boxplot (highlighted by green color) is a sample done in different area, perhaps also on some small limestone patch; however, since I am not sure with that, I would not remove it as an outlier (according to histogram this values fits to the overall distribution, although this would change if the histogram breaks are set up more fine).

Figure 2: Boxplot (above) and histogram (below) of soil pH values from Vltava river valley dataset.


Data transformation

Data standardization

For example, if I didn't measure pH in some samples because the pH-meter got broken, I should not replace these values by 0.
For example, in the river valley dataset, there are some vegetation plots sampled in limestone, although most of the plots are from an acid bedrock; since there is 97 samples in the data set, and only three are on limestone, it may be reasonable to delete them from the dataset if we are interested how e.g. soil pH influences richness or species composition.
Script to draw this figure can be found here.
en/data_preparation.txt · Last modified: 2017/10/11 07:36 (external edit)