Consider a trait largely controlled by one gene but subject to environmental variation. If plants are grown in different environments, the trait response can be partitioned into
trait = mean + env + geno + geno*env + error .
That is, there is some overall mean response plus some effect due to the genotype plus environmental effect. Different genotypes may respond differently depending on the environment (geno*env). This could argue for separate QTL analysis of the trait for each environment - perhaps it is influenced by different genes in different settings. However, caution is needed in formal analysis.
The error term actually includes three sources of variation,
error = line(geno) + env*line(geno) + plot error .
In fact, genotype effects should be tested using line(geno), and the geno*env interaction should be examined with the variation associated with env*line(geno). [The plot error can only be distinguised from env*line(geno) if there is replication within each environment. If the data are balanced, the following SAS procedure is appropriate for one measurement per line per environment,
proc glm; /* randomized complete block design (RCBD) */ class env line geno; model trait = env geno env*geno line(geno); random line(geno) / test; lsmeans geno / stderr pdiff e=line(geno); lsmeans env*geno / stderr pdiff;
However, if there is plot replication within environment, then a slightly more complicated approach is appropriate.
proc glm; /* randomized complete block design (RCBD) */ class env line geno; model trait = env geno env*geno line(geno) env*line(geno); random line(geno) env*line(geno) / test; lsmeans geno / stderr pdiff e=line(geno); lsmeans env*geno / stderr pdiff e=env*line(geno);