Description Usage Format Details Source References Examples

Maize yields for 9 cultivars at 20 locations.

1 | ```
data("cornelius.maize")
``` |

A data frame with 180 observations on the following 3 variables.

`env`

environment factor, 20 levels

`gen`

genotype/cultivar, 9 levels

`yield`

yield, kg/ha

Cell means (kg/hectare) for the CIMMYT EVT16B maize yield trial.

P L Cornelius and J Crossa and M S Seyedsadr. (1996).
Statistical Tests and Estimators of Multiplicative Models for
Genotype-by-Environment Interaction.
Book: *Genotype-by-Environment Interaction*. Pages 199-234.

Forkman, Johannes and Piepho, Hans-Peter. (2014).
Parametric bootstrap methods for testing multiplicative terms in GGE
and AMMI models. *Biometrics*, 70(3), 639-647.
https://doi.org/10.1111/biom.12162

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | ```
## Not run:
library(agridat)
data(cornelius.maize)
dat <- cornelius.maize
# dotplot(gen~yield|env,dat) # We cannot compare genotype yields easily
# Subtract environment mean from each observation
libs(reshape2)
mat <- acast(dat, gen~env)
mat <- scale(mat, scale=FALSE)
dat2 <- melt(mat)
names(dat2) <- c('gen','env','yield')
libs(lattice)
bwplot(yield ~ gen, dat2,
main="cornelius.maize - environment centered yields")
if(0){
# This reproduces the analysis of Forkman and Piepho.
test.pc <- function(Y0, type="AMMI", n.boot=10000, maxpc=6) {
# Test the significance of Principal Components in GGE/AMMI
# Singular value decomposition of centered/double-centered Y
Y <- sweep(Y0, 1, rowMeans(Y0)) # subtract environment means
if(type=="AMMI") {
Y <- sweep(Y, 2, colMeans(Y0)) # subtract genotype means
Y <- Y + mean(Y0)
}
lam <- svd(Y)$d
# Observed value of test statistic.
# t.obs[k] is the proportion of variance explained by the kth term out of
# the k...M terms, e.g. t.obs[2] is lam[2]^2 / sum(lam[2:M]^2)
t.obs <- { lam^2/rev(cumsum(rev(lam^2))) } [1:(M-1)]
t.boot <- matrix(NA, nrow=n.boot, ncol=M-1)
# Centering rows/columns reduces the rank by 1 in each direction.
I <- if(type=="AMMI") nrow(Y0)-1 else nrow(Y0)
J <- ncol(Y0)-1
M <- min(I, J) # rank of Y, maximum number of components
M <- min(M, maxpc) # Optional step: No more than 5 components
for(K in 0:(M-2)){ # 'K' multiplicative components in the svd
for(bb in 1:n.boot){
E.b <- matrix(rnorm((I-K) * (J-K)), nrow = I-K, ncol = J-K)
lam.b <- svd(E.b)$d
t.boot[bb, K+1] <- lam.b[1]^2 / sum(lam.b^2)
}
}
# P-value for each additional multiplicative term in the SVD.
# P-value is the proportion of time bootstrap values exceed t.obs
colMeans(t.boot > matrix(rep(t.obs, n.boot), nrow=n.boot, byrow=TRUE))
}
dat <- cornelius.maize
# Convert to matrix format
libs(reshape2)
dat <- acast(dat, env~gen, value.var='yield')
## R> test.pc(dat,"AMMI")
## [1] 0.0000 0.1505 0.2659 0.0456 0.1086 # Forkman: .00 .156 .272 .046 .111
## R> test.pc(dat,"GGE")
## [1] 0.0000 0.2934 0.1513 0.0461 0.2817 # Forkman: .00 .296 .148 .047 .285
}
## End(Not run)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.