Statistical test to compare means when I have two observations per group? I am trying to interpret the results of my experiment but am not sure what statistical method I should choose. For my experiment, I added 3 types of different fertilizers to soil, with a control, and measured their growth. I only had two replicates per treatment, so my data looks like this:
Treatment   Replicate  Length   
Control       1          16
Control       2          18
Fert1         1          20
Fert1         2          17
Fert2         1          25
Fert2         2          27
Fert3         1          23
Fert3         2          21

I think people usually do a minimum of 3 replicates to calculate a "meaningful" standard deviation, but the logistics made it just not possible to do so. In this case, if I want to compare the means of each treatment, and determine whether a specific treatment significantly enhanced or repressed growth, what would be the best method to use? Can I use ANOVA with two observations per group? Would it be better to use the t-test between Control and Fert1 (or Fert2 or Fert3) separately to evaluate effect of each fertilizer to conrol? Would any of these statistical tests (or other tests I'm not aware of) be heavily biased toward having only two observations per group?
 A: First, the sample variance of a sample of size 2 may
not be the best estimate of the population variance,
but it does exist, so your model with 2 replications
per level of a one-factor experiment should work
according to the usual formulas. in R:
y = c(16, 18);  var(y)
[1] 2

I input your data as follows (please proofread):
x = c(16,18, 20,17, 25,27, 23,21)
g = as.factor(c(4,4, 1,1, 2,2, 4,4))

Notice that for procedures in R that use lm for ANOVA require
that the group vector be declared as.factor.
Standard one-factor ANOVA in R gives results as follows:
anova(lm(x~g))

Analysis of Variance Table

Response: x

          Df Sum Sq Mean Sq F value  Pr(>F)  
g          2 71.375  35.688  5.0264 0.06359 .
Residuals  5 35.500   7.100                  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R also implements an ANOVA that does not require equal
variances among population levels. The denominator degrees
of freedom are reduced according as sample variances
among the levels differ (in this instance decreased from
5 to 2.68).
oneway.test(x ~ g)

        One-way analysis of means 
        (not assuming equal variances)

data:  x and g
F = 9.1961, num df = 2.0000, denom df = 2.6839, p-value = 0.06294

The Kruskal-Wallis nonparametric test, which is somewhat
analogous to a one-factor ANOVA, also works for your
data, provided there are not (many) ties in the x vector.
kruskal.test(x~g)

        Kruskal-Wallis rank sum test

data:  x by g
Kruskal-Wallis chi-squared = 4.125, df = 2, 
  p-value = 0.1271

A: You can run an ANOVA and then do a post-hoc comparison.  With only two observations per group there needs to be decent size differences between the groups.  You can also run Dunnet's Test to compare all three against the control.  See code below.
There is no minimum rule sample size such as 3.  All depends on the effect size you're trying to detect.
library(tidyverse)

a1 = tibble(treatment=c("Control","Control","Fert1","Fert1","Fert2","Fert2","Fert3","Fert3"),
       length=c(16,18,20,17,25,26,23,21))

a1 %>% group_by(treatment) %>% summarize(mean(length),sd(length))

fit=aov(length~treatment,data=a1)
TukeyHSD(fit)


library(DescTools)
DunnettTest(x=a1$length, g=as.factor(a1$treatment))

