Tengo el siguiente tipo de datos. He evaluado a 10 personas cada una repetidas 10 veces. Tengo una matriz de relación de 10x10 (relación entre todas las combinaciones de los individuos).
set.seed(1234)
mydata <- data.frame (gen = factor(rep(1:10, each = 10)),
repl = factor(rep(1:10, 10)),
yld = rnorm(10, 5, 0.5))
Este gen es de diferentes variedades de plantas, por lo que cada una puede cultivarse repetidamente y se mide el rendimiento. La matriz de covarianza es una medida de parentesco por similitud genética calculada por probabilidades ibd en experimentos separados.
library(lme4)
covmat <- round(nearPD(matrix(runif(100, 0, 0.2), nrow = 10))$mat, 2)
diag(covmat) <- diag(covmat)/10+1
rownames(covmat) <- colnames(covmat) <- levels(mydata$gen)
> covmat
10 x 10 Matrix of class "dgeMatrix"
1 2 3 4 5 6 7 8 9 10
1 1.00 0.08 0.06 0.03 0.09 0.09 0.10 0.08 0.07 0.10
2 0.08 1.00 0.08 0.09 0.04 0.12 0.08 0.08 0.11 0.09
3 0.06 0.08 1.00 0.10 0.05 0.09 0.09 0.07 0.04 0.13
4 0.03 0.09 0.10 1.00 0.02 0.11 0.09 0.06 0.04 0.12
5 0.09 0.04 0.05 0.02 1.00 0.06 0.07 0.05 0.02 0.08
6 0.09 0.12 0.09 0.11 0.06 1.00 0.12 0.08 0.07 0.14
7 0.10 0.08 0.09 0.09 0.07 0.12 1.00 0.08 0.03 0.15
8 0.08 0.08 0.07 0.06 0.05 0.08 0.08 1.00 0.06 0.09
9 0.07 0.11 0.04 0.04 0.02 0.07 0.03 0.06 1.00 0.03
10 0.10 0.09 0.13 0.12 0.08 0.14 0.15 0.09 0.03 1.00
Mi modelo es:
yld = gen + repl + error
tanto gen como repl se consideran aleatorios y quiero obtener las estimaciones de efectos aleatorios asociados con cada gen, sin embargo, debo considerar la matriz de relación.
Si es demasiado complejo para adaptarse a modelos anidados, simplemente eliminaría las respuestas del modelo, pero idealmente lo mantendré.
yld = gen + error
¿Cómo puedo lograr esto usando paquetes R, quizás con nlme o lme4? Sé que ASREML puede hacerlo, pero no tengo agarre y me encanta R por ser robusto y libre.