How to elegantly group subjects? I want to conduct an experiment to find out whether the CO2-production of soil changes with high amounts of rainfall. Therefore, I want to group 8 soil samples into two different groups. One group is control, one group is treatment. Due to time, space and money restrictions, I can only have four replicates for each group.
I have some pre-experiment CO2-production rates of these 8 samples that I would like to use to group the subjects. The two groups should be as similar as possible before the treatment starts (equal mean and variance).
How can I programmatically determine the "best" division into groups?   
Data of pre-test CO2 production are below.
Any direct help or linkage to other websites/posts is greatly appreciated. Please let me know if and how I can improve the question. Some google-fu was to no avail.
#### Data: y1-y8 are the soil samples, the values are CO2 procution rates
y1 <- 10
y2 <- 20
y3 <- 22
y4 <- 30
y5 <- 15
y6 <- 12
y7 <- 28
y8 <- 26

group1.1 <- c(y1,y2,y3,y4) 
group1.2 <- c(y5,y6,y7,y8)

group2.1 <- c(y4,y7,y8,y3)
group2.2 <- c(y1,y2,y5,y6)

boxplot(group1.1, group1.2,las=1) # not too bad, but I am sure it can be done better...but how?
boxplot(group2.1, group2.2,las=1) # bad...

 A: Experiments can be set up in many ways, but to me, you should randomly assign your 8 samples to the two groups, then model the pre-experiment CO2 figure as a covariate. As in:
$E(CO2_i)=\mu + \text{RainfallEffect} + \alpha Y_i$
The expected CO2 in the ith sample is some constant, plus the treatment effect, plus a linear function of the pre value.
Alternatively, you could use the difference pre-post as your response variable.
Another approach would be to match each sample -- matched pairs (on pre-CO2) -- and assign one member of each pair to the control and one to the treatment. But I don't like that as much, given your small sample size. You lose degrees of freedom that way, and anyway, it doesn't look as if you have 4 close pairs.
You should not try and force your two groups to be as similar as possible -- because the p-values will no longer be correct. You end up shoving extra variation into the error term and reducing the difference between the treatment groups - which will decrease your ability to detect a significant difference between the groups (assuming there is one). So actually, by artificially making the groups similar, you shoot yourself in the foot.
A: I don't understand at all; I think maybe you have some fundamental misperceptions. 
First, you don't group data for ANOVA, you do ANOVA because your data is grouped. ANOVA and regression are the same thing. The distinction between ANOVA and regression is that ANOVA is sort of designed for categorical independent variables such as group. But you can do this in regression with dummy variables.
So, you probably shouldn't be grouping your data. You should tell us what your dependent and independent variables are.
Second, ANOVA does not require that the data be normally distributed, it requires that the residuals from the model be normally distributed. You can't tell that until you run your model.
Third, with only 4 cases in a group (or even with 8 cases, which is what you have) no test of normality is going to have much power to detect anything but the most extreme violations of normality.
You may find this post helpful: How to ask a Statistics Question
