if (FALSE) {
library(agridat)
data(scott.augmented)
dat <- scott.augmented
# Create separate factors for check genotypes and new genotypes
library(dplyr)
dat <- mutate(dat,
gen=factor(gen),
# gen_check is gen name for checks, 0 for non-checks
gen_check = ifelse(check=="Y", as.character(gen),0),
# gen_new is 0 for checks, gen name for non-checks
gen_new = ifelse(check=="N", as.character(gen),0),
gen_check=factor(gen_check),
gen_new=factor(gen_new),
block=factor(block))
# lmer version
library(lme4)
m1.lme <- lmer(yield ~ -1 + gen_check + (1|gen_new:gen_check) + (1|block), data=dat)
# The fixed effects match Scott Table 1
fixef(m1.lme)
# Random effect predictions
p1fix <- ranef(m1.lme)$"gen_new:gen_check" + fixef(m1.lme)[1]
p1fix |> filter(row_number() > 4) |> head()
# asreml version
#
# dat <- mutate(dat, check=factor(check))
# m2 <- asreml(yield~ at(check,"Y"):gen, data=dat,
# random= ~ block + at(check,"N"):gen)
# p2fix <- predict(m2,
# classify="check:gen", levels=list(check="Y"))$pvals
# filter(p2fix, !is.na(predicted.value))
# p2ran <- predict(m2,
# classify="check:gen", levels=list(check="N"))$pvals
# filter(p2ran, !(entry
}
Run the code above in your browser using DataLab