# Linear Models for the Prediction of Animal Breeding Values, 3rd Edition.

# Raphael Mrode

# Example 11.5 p189

SNP effect로 모든 상가적 유전 분산을 설명할 수 없을 수도 있다. 그래서 설명하지 못하는 부분을 위하여 polygenic effect를 넣는다. 여기서는 polygenic effect의 분산을 상가적 유전분산의 10%인 3.5241로 하였다. 그래서 MME에 들어가는 polygenic effect의 분산 비율 alpha1 = 245 / 3.5241 = 69.521이다. MME에 들어가는 SNP effect의 분산 비율 alpha2를 계산하기 위하여 먼저 SNP effect가 설명하는 분산을 계산한다. 35.241 - 3.5241 = 31.7169이다. 개개의 SNP의 분산은 sum of 2pq로 나눈다. 즉 31.7169 / 3.5383 = 8.964이다. 마지막으로 alpha2 = 245 / 8.964 = 27.332이다.

 

Data

animal sire dam mean edc fat_dyd snp1 snp2 snp3 snp4 snp5 snp6 snp7 snp8 snp9 snp10
13 0 0 1 558 9 2 0 1 1 0 0 0 2 1 2
14 0 0 1 722 13.4 1 0 0 0 0 2 0 2 1 0
15 13 4 1 300 12.7 1 1 2 1 1 0 0 2 1 2
16 15 2 1 73 15.4 0 0 2 1 0 1 0 2 2 1
17 15 5 1 52 5.9 0 1 1 2 0 0 0 2 1 2
18 14 6 1 87 7.7 1 1 0 1 0 2 0 2 2 1
19 14 9 1 64 10.2 0 0 1 1 0 2 0 2 2 0
20 14 9 1 103 4.8 0 1 1 0 0 1 0 2 2 0
21 1 3 1 13 7.6 2 0 0 0 0 1 2 2 1 2
22 14 8 1 125 8.8 0 0 0 1 1 2 0 2 0 0
23 14 11 1 93 9.8 0 1 1 0 0 1 0 2 2 1
24 14 10 1 66 9.2 1 0 0 0 1 1 0 2 0 0
25 14 7 1 75 11.5 0 0 0 1 1 2 0 2 1 0
26 14 12 1 33 13.3 1 0 1 1 0 2 0 1 0 0

 

Pedigree

animal sire dam
1 0 0
2 0 0
3 0 0
4 0 0
5 0 0
6 0 0
7 0 0
8 0 0
9 0 0
10 0 0
11 0 0
12 0 0
13 0 0
14 0 0
15 13 4
16 15 2
17 15 5
18 14 6
19 14 9
20 14 9
21 1 3
22 14 8
23 14 11
24 14 10
25 14 7
26 14 12

 

Progmam

# SNP-BLUP Model with residual polygenic effect, unweighted analysis

# Linear Models for the Prediction of Animal Breeding Values, 3rd Edition.

# Raphael Mrode

# Example 11.5 p189

# MASS packages
if (!("MASS" %in% installed.packages())) {
  install.packages("MASS", dependencies = TRUE)
}
library(MASS)

# function to make inverse of numerator relationship matrix
ainv = function(pedi) {
  n = nrow(pedi)
  Ainv = matrix(c(0), nrow = n, ncol = n)
  
  for (i in 1:n) {
    animal = pedi[i, 1]
    sire = pedi[i, 2]
    dam = pedi[i, 3]
    
    if (sire == 0 & dam == 0) {
      # both parents unknown
      alpha = 1
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
    } else if (sire != 0 & dam == 0) {
      # sire known
      alpha = 4/3
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
      Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
      Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
      Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
    } else if (sire == 0 & dam != 0) {
      # dam known
      alpha = 4/3
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
      Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
      Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
      Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
    } else {
      # both parents known
      alpha = 2
      Ainv[animal, animal] = alpha + Ainv[animal, animal]
      Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
      Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
      Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
      Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
      Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
      Ainv[sire, dam] = alpha/4 + Ainv[sire, dam]
      Ainv[dam, sire] = alpha/4 + Ainv[dam, sire]
      Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
    }
  }
  return(Ainv)
}


# set working directory 
setwd(".") 

# print working directory 
getwd()

# read data
data = read.table("snp_data.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)
data

# read pedigree : animal sire dam
pedi = read.table("snp_pedi.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)
pedi


# variance component and ratio
sigma_a = 35.241
sigma_e = 245
sigma_a
sigma_e

# SNP 
M_all = as.matrix(data[, 7:16])
M_all

#  mean of each SNP(allele frequency)
snp_mean = colMeans(M_all) / 2
snp_mean

#  sum of 2pq(heterozygote ratio)
#s2pq = 0
#for (i in 1:10) {
#  s2pq = s2pq + 2 * snp_mean[i] * (1 - snp_mean[i])
#}
sum2pq = sum(2 * snp_mean * (1 - snp_mean))
sum2pq

# ratio of polygenic effect
rpe = 0.1

# variance of residual polygenic effect
sigma_u = sigma_a * rpe
sigma_u

# variance ratio, alpha
alpha1 = sigma_e / sigma_u
alpha1

alpha2 =  sum2pq * sigma_e / (sigma_a - sigma_u)
alpha2

# observation
y = data[1:8, 6]
y

# design matrix of fixed effect(general mean)
X = matrix(rep(1, 8), 8, 1)
X

# design matrix for polygenic effect
W = cbind(matrix(rep(0, 8 * 12), 8, 12), diag(8), matrix(rep(0, 8 * 6), 8, 6))
W

# inverse matrix of NRM
ai = ainv(pedi)
ai

# design matrix for SNP effect
M = as.matrix(data[1:8, 7:16])
Z = sweep(M, 2, snp_mean * 2)
round(Z, 3)

# Left Hand Side
LHS = rbind(
  cbind(t(X) %*% X, t(X) %*% W,               t(X) %*% Z), 
  cbind(t(W) %*% X, t(W) %*% W + ai * alpha1, t(W) %*% Z),
  cbind(t(Z) %*% X, t(Z) %*% W,               t(Z) %*% Z + diag(10) * alpha2))
round(LHS, 3)

# Right Hand Side
RHS = rbind(t(X) %*% y, 
            t(W) %*% y,
            t(Z) %*% y)
RHS

# Solutions

# generalized inverse of LHS
gi_LHS = ginv(LHS)
gi_LHS

# solution
sol = gi_LHS %*% RHS
round(sol, 3)

# mean effect of solutions
mean_eff = sol[1]
round(mean_eff, 3)

# snp effect of solutions
snp_eff = sol[28:37]
round(snp_eff, 3)

# calculate DGV
# genotype of animals
# design matrix of animals
P2 = sweep(M_all, 2, snp_mean * 2)
round(P2, 3)

# DGV
dgv = P2 %*% snp_eff
round(dgv, 3)

 

프로그램을 RStudio에서 실행한 화면

 

프로그램 실행 결과

> # SNP-BLUP Model with residual polygenic effect, unweighted analysis
> 
> # Linear Models for the Prediction of Animal Breeding Values, 3rd Edition.
> 
> # Raphael Mrode
> 
> # Example 11.5 p189
> 
> # MASS packages
> if (!("MASS" %in% installed.packages())) {
+   install.packages("MASS", dependencies = TRUE)
+ }
> library(MASS)
> 
> # function to make inverse of numerator relationship matrix
> ainv = function(pedi) {
+   n = nrow(pedi)
+   Ainv = matrix(c(0), nrow = n, ncol = n)
+   
+   for (i in 1:n) {
+     animal = pedi[i, 1]
+     sire = pedi[i, 2]
+     dam = pedi[i, 3]
+     
+     if (sire == 0 & dam == 0) {
+       # both parents unknown
+       alpha = 1
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+     } else if (sire != 0 & dam == 0) {
+       # sire known
+       alpha = 4/3
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+       Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
+       Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
+       Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
+     } else if (sire == 0 & dam != 0) {
+       # dam known
+       alpha = 4/3
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+       Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
+       Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
+       Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
+     } else {
+       # both parents known
+       alpha = 2
+       Ainv[animal, animal] = alpha + Ainv[animal, animal]
+       Ainv[animal, sire] = -alpha/2 + Ainv[animal, sire]
+       Ainv[sire, animal] = -alpha/2 + Ainv[sire, animal]
+       Ainv[animal, dam] = -alpha/2 + Ainv[animal, dam]
+       Ainv[dam, animal] = -alpha/2 + Ainv[dam, animal]
+       Ainv[sire, sire] = alpha/4 + Ainv[sire, sire]
+       Ainv[sire, dam] = alpha/4 + Ainv[sire, dam]
+       Ainv[dam, sire] = alpha/4 + Ainv[dam, sire]
+       Ainv[dam, dam] = alpha/4 + Ainv[dam, dam]
+     }
+   }
+   return(Ainv)
+ }
> 
> 
> # set working directory 
> setwd(".") 
> 
> # print working directory 
> getwd()
[1] "D:/users/bhpark/2020/job/공부하기/07_Linear Models for the Prediction of Animal Breeding Values_3rd_Mrode/19_mixed linear model GBLUP for computing SNP effects"
> 
> # read data
> data = read.table("snp_data.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)
> data
   animal sire dam mean edc fat_dyd snp1 snp2 snp3 snp4 snp5 snp6 snp7 snp8 snp9 snp10
1      13    0   0    1 558     9.0    2    0    1    1    0    0    0    2    1     2
2      14    0   0    1 722    13.4    1    0    0    0    0    2    0    2    1     0
3      15   13   4    1 300    12.7    1    1    2    1    1    0    0    2    1     2
4      16   15   2    1  73    15.4    0    0    2    1    0    1    0    2    2     1
5      17   15   5    1  52     5.9    0    1    1    2    0    0    0    2    1     2
6      18   14   6    1  87     7.7    1    1    0    1    0    2    0    2    2     1
7      19   14   9    1  64    10.2    0    0    1    1    0    2    0    2    2     0
8      20   14   9    1 103     4.8    0    1    1    0    0    1    0    2    2     0
9      21    1   3    1  13     7.6    2    0    0    0    0    1    2    2    1     2
10     22   14   8    1 125     8.8    0    0    0    1    1    2    0    2    0     0
11     23   14  11    1  93     9.8    0    1    1    0    0    1    0    2    2     1
12     24   14  10    1  66     9.2    1    0    0    0    1    1    0    2    0     0
13     25   14   7    1  75    11.5    0    0    0    1    1    2    0    2    1     0
14     26   14  12    1  33    13.3    1    0    1    1    0    2    0    1    0     0
> 
> # read pedigree : animal sire dam
> pedi = read.table("snp_pedi.txt", header = TRUE, sep = " ", stringsAsFactors = FALSE)
> pedi
   animal sire dam
1       1    0   0
2       2    0   0
3       3    0   0
4       4    0   0
5       5    0   0
6       6    0   0
7       7    0   0
8       8    0   0
9       9    0   0
10     10    0   0
11     11    0   0
12     12    0   0
13     13    0   0
14     14    0   0
15     15   13   4
16     16   15   2
17     17   15   5
18     18   14   6
19     19   14   9
20     20   14   9
21     21    1   3
22     22   14   8
23     23   14  11
24     24   14  10
25     25   14   7
26     26   14  12
> 
> 
> # variance component and ratio
> sigma_a = 35.241
> sigma_e = 245
> sigma_a
[1] 35.241
> sigma_e
[1] 245
> 
> # SNP 
> M_all = as.matrix(data[, 7:16])
> M_all
      snp1 snp2 snp3 snp4 snp5 snp6 snp7 snp8 snp9 snp10
 [1,]    2    0    1    1    0    0    0    2    1     2
 [2,]    1    0    0    0    0    2    0    2    1     0
 [3,]    1    1    2    1    1    0    0    2    1     2
 [4,]    0    0    2    1    0    1    0    2    2     1
 [5,]    0    1    1    2    0    0    0    2    1     2
 [6,]    1    1    0    1    0    2    0    2    2     1
 [7,]    0    0    1    1    0    2    0    2    2     0
 [8,]    0    1    1    0    0    1    0    2    2     0
 [9,]    2    0    0    0    0    1    2    2    1     2
[10,]    0    0    0    1    1    2    0    2    0     0
[11,]    0    1    1    0    0    1    0    2    2     1
[12,]    1    0    0    0    1    1    0    2    0     0
[13,]    0    0    0    1    1    2    0    2    1     0
[14,]    1    0    1    1    0    2    0    1    0     0
> 
> #  mean of each SNP(allele frequency)
> snp_mean = colMeans(M_all) / 2
> snp_mean
      snp1       snp2       snp3       snp4       snp5       snp6       snp7       snp8       snp9      snp10 
0.32142857 0.17857143 0.35714286 0.35714286 0.14285714 0.60714286 0.07142857 0.96428571 0.57142857 0.39285714 
> 
> #  sum of 2pq(heterozygote ratio)
> #s2pq = 0
> #for (i in 1:10) {
> #  s2pq = s2pq + 2 * snp_mean[i] * (1 - snp_mean[i])
> #}
> sum2pq = sum(2 * snp_mean * (1 - snp_mean))
> sum2pq
[1] 3.538265
> 
> # ratio of polygenic effect
> rpe = 0.1
> 
> # variance of residual polygenic effect
> sigma_u = sigma_a * rpe
> sigma_u
[1] 3.5241
> 
> # variance ratio, alpha
> alpha1 = sigma_e / sigma_u
> alpha1
[1] 69.5213
> 
> alpha2 =  sum2pq * sigma_e / (sigma_a - sigma_u)
> alpha2
[1] 27.33164
> 
> # observation
> y = data[1:8, 6]
> y
[1]  9.0 13.4 12.7 15.4  5.9  7.7 10.2  4.8
> 
> # design matrix of fixed effect(general mean)
> X = matrix(rep(1, 8), 8, 1)
> X
     [,1]
[1,]    1
[2,]    1
[3,]    1
[4,]    1
[5,]    1
[6,]    1
[7,]    1
[8,]    1
> 
> # design matrix for polygenic effect
> W = cbind(matrix(rep(0, 8 * 12), 8, 12), diag(8), matrix(rep(0, 8 * 6), 8, 6))
> W
     [,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]
[1,]    0    0    0    0    0    0    0    0    0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0     0
[2,]    0    0    0    0    0    0    0    0    0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0     0
[3,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0     0
[4,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0     0
[5,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0     0
[6,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0     0
[7,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0     0
[8,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0     0     0     0     0     0     1     0     0     0     0     0     0
> 
> # inverse matrix of NRM
> ai = ainv(pedi)
> ai
      [,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]
 [1,]  1.5  0.0  0.5  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.0     0     0     0     0     0    -1     0     0     0     0     0
 [2,]  0.0  1.5  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.5    -1     0     0     0     0     0     0     0     0     0     0
 [3,]  0.5  0.0  1.5  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.0     0     0     0     0     0    -1     0     0     0     0     0
 [4,]  0.0  0.0  0.0  1.5  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.5   0.0  -1.0     0     0     0     0     0     0     0     0     0     0     0
 [5,]  0.0  0.0  0.0  0.0  1.5  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.5     0    -1     0     0     0     0     0     0     0     0     0
 [6,]  0.0  0.0  0.0  0.0  0.0  1.5  0.0  0.0    0   0.0   0.0   0.0   0.0   0.5   0.0     0     0    -1     0     0     0     0     0     0     0     0
 [7,]  0.0  0.0  0.0  0.0  0.0  0.0  1.5  0.0    0   0.0   0.0   0.0   0.0   0.5   0.0     0     0     0     0     0     0     0     0     0    -1     0
 [8,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  1.5    0   0.0   0.0   0.0   0.0   0.5   0.0     0     0     0     0     0     0    -1     0     0     0     0
 [9,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    2   0.0   0.0   0.0   0.0   1.0   0.0     0     0     0    -1    -1     0     0     0     0     0     0
[10,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   1.5   0.0   0.0   0.0   0.5   0.0     0     0     0     0     0     0     0     0    -1     0     0
[11,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   1.5   0.0   0.0   0.5   0.0     0     0     0     0     0     0     0    -1     0     0     0
[12,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   1.5   0.0   0.5   0.0     0     0     0     0     0     0     0     0     0     0    -1
[13,]  0.0  0.0  0.0  0.5  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   1.5   0.0  -1.0     0     0     0     0     0     0     0     0     0     0     0
[14,]  0.0  0.0  0.0  0.0  0.0  0.5  0.5  0.5    1   0.5   0.5   0.5   0.0   5.0   0.0     0     0    -1    -1    -1     0    -1    -1    -1    -1    -1
[15,]  0.0  0.5  0.0 -1.0  0.5  0.0  0.0  0.0    0   0.0   0.0   0.0  -1.0   0.0   3.0    -1    -1     0     0     0     0     0     0     0     0     0
[16,]  0.0 -1.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0  -1.0     2     0     0     0     0     0     0     0     0     0     0
[17,]  0.0  0.0  0.0  0.0 -1.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0  -1.0     0     2     0     0     0     0     0     0     0     0     0
[18,]  0.0  0.0  0.0  0.0  0.0 -1.0  0.0  0.0    0   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     2     0     0     0     0     0     0     0     0
[19,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   -1   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     2     0     0     0     0     0     0     0
[20,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0   -1   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     2     0     0     0     0     0     0
[21,] -1.0  0.0 -1.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0   0.0   0.0   0.0   0.0     0     0     0     0     0     2     0     0     0     0     0
[22,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0 -1.0    0   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     2     0     0     0     0
[23,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0  -1.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     2     0     0     0
[24,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0  -1.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     0     2     0     0
[25,]  0.0  0.0  0.0  0.0  0.0  0.0 -1.0  0.0    0   0.0   0.0   0.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     0     0     2     0
[26,]  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0    0   0.0   0.0  -1.0   0.0  -1.0   0.0     0     0     0     0     0     0     0     0     0     0     2
> 
> # design matrix for SNP effect
> M = as.matrix(data[1:8, 7:16])
> Z = sweep(M, 2, snp_mean * 2)
> round(Z, 3)
    snp1   snp2   snp3   snp4   snp5   snp6   snp7  snp8   snp9  snp10
1  1.357 -0.357  0.286  0.286 -0.286 -1.214 -0.143 0.071 -0.143  1.214
2  0.357 -0.357 -0.714 -0.714 -0.286  0.786 -0.143 0.071 -0.143 -0.786
3  0.357  0.643  1.286  0.286  0.714 -1.214 -0.143 0.071 -0.143  1.214
4 -0.643 -0.357  1.286  0.286 -0.286 -0.214 -0.143 0.071  0.857  0.214
5 -0.643  0.643  0.286  1.286 -0.286 -1.214 -0.143 0.071 -0.143  1.214
6  0.357  0.643 -0.714  0.286 -0.286  0.786 -0.143 0.071  0.857  0.214
7 -0.643 -0.357  0.286  0.286 -0.286  0.786 -0.143 0.071  0.857 -0.786
8 -0.643  0.643  0.286 -0.714 -0.286 -0.214 -0.143 0.071  0.857 -0.786
> 
> # Left Hand Side
> LHS = rbind(
+   cbind(t(X) %*% X, t(X) %*% W,               t(X) %*% Z), 
+   cbind(t(W) %*% X, t(W) %*% W + ai * alpha1, t(W) %*% Z),
+   cbind(t(Z) %*% X, t(Z) %*% W,               t(Z) %*% Z + diag(10) * alpha2))
> round(LHS, 3)
                                                                                                                                                                                            
       8.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   1.000   0.000   0.000
       0.000 104.282   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000
       0.000   0.000 104.282   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000  34.761 -69.521   0.000   0.000   0.000   0.000   0.000   0.000
       0.000  34.761   0.000 104.282   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000
       0.000   0.000   0.000   0.000 104.282   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000  34.761   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000 104.282   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000  34.761   0.000 -69.521   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000 104.282   0.000   0.000   0.000   0.000   0.000   0.000   0.000  34.761   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000 104.282   0.000   0.000   0.000   0.000   0.000   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 104.282   0.000   0.000   0.000   0.000   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 139.043   0.000   0.000   0.000   0.000  69.521   0.000   0.000   0.000   0.000 -69.521 -69.521   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 104.282   0.000   0.000   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 104.282   0.000   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 104.282   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       1.000   0.000   0.000   0.000  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 105.282   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       1.000   0.000   0.000   0.000   0.000   0.000  34.761  34.761  34.761  69.521  34.761  34.761  34.761   0.000 348.606   0.000   0.000   0.000 -69.521 -69.521 -69.521   0.000 -69.521
       1.000   0.000  34.761   0.000 -69.521  34.761   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000 209.564 -69.521 -69.521   0.000   0.000   0.000   0.000   0.000
       1.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521 140.043   0.000   0.000   0.000   0.000   0.000   0.000
       1.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000 140.043   0.000   0.000   0.000   0.000   0.000
       1.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000 140.043   0.000   0.000   0.000   0.000
       1.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000 140.043   0.000   0.000   0.000
       1.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000 140.043   0.000   0.000
       0.000 -69.521   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 139.043   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000 139.043
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
       0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000 -69.521   0.000 -69.521   0.000   0.000   0.000   0.000   0.000   0.000   0.000   0.000
                                        snp1   snp2   snp3   snp4   snp5   snp6   snp7   snp8   snp9  snp10
        0.000   0.000   0.000   0.000 -0.143  1.143  2.286  1.286 -1.286 -1.714 -1.143  0.571  2.857  1.714
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000 -69.521   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000 -69.521   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
      -69.521   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000 -69.521  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  1.357 -0.357  0.286  0.286 -0.286 -1.214 -0.143  0.071 -0.143  1.214
      -69.521 -69.521 -69.521 -69.521  0.357 -0.357 -0.714 -0.714 -0.286  0.786 -0.143  0.071 -0.143 -0.786
        0.000   0.000   0.000   0.000  0.357  0.643  1.286  0.286  0.714 -1.214 -0.143  0.071 -0.143  1.214
        0.000   0.000   0.000   0.000 -0.643 -0.357  1.286  0.286 -0.286 -0.214 -0.143  0.071  0.857  0.214
        0.000   0.000   0.000   0.000 -0.643  0.643  0.286  1.286 -0.286 -1.214 -0.143  0.071 -0.143  1.214
        0.000   0.000   0.000   0.000  0.357  0.643 -0.714  0.286 -0.286  0.786 -0.143  0.071  0.857  0.214
        0.000   0.000   0.000   0.000 -0.643 -0.357  0.286  0.286 -0.286  0.786 -0.143  0.071  0.857 -0.786
        0.000   0.000   0.000   0.000 -0.643  0.643  0.286 -0.714 -0.286 -0.214 -0.143  0.071  0.857 -0.786
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
      139.043   0.000   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000 139.043   0.000   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000 139.043   0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
        0.000   0.000   0.000 139.043  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000
 [ getOption("max.print") 에 도달했습니다 -- 10 행들을 생략합니다 ]
> 
> # Right Hand Side
> RHS = rbind(t(X) %*% y, 
+             t(W) %*% y,
+             t(Z) %*% y)
> RHS
        [,1]
       79.10
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
        9.00
       13.40
       12.70
       15.40
        5.90
        7.70
       10.20
        4.80
        0.00
        0.00
        0.00
        0.00
        0.00
        0.00
snp1    0.95
snp2    2.85
snp3   29.60
snp4   10.30
snp5   -9.90
snp6  -13.25
snp7  -11.30
snp8    5.65
snp9   26.80
snp10  16.15
> 
> # Solutions
> 
> # generalized inverse of LHS
> gi_LHS = ginv(LHS)
> round(gi_LHS, 3)
        [,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]
 [1,]  0.142 0.000 -0.001 0.000 -0.002 -0.001 -0.001 0.000 0.000 -0.002 0.000 0.000 0.000 -0.003 -0.005 -0.004 -0.003 -0.003 -0.004 -0.004 -0.004 0.000 -0.002 -0.002 -0.002 -0.002 -0.002
 [2,]  0.000 0.014  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.007  0.000  0.000  0.000  0.000  0.000
 [3,] -0.001 0.000  0.014 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.007  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
 [4,]  0.000 0.000  0.000 0.014  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.007  0.000  0.000  0.000  0.000  0.000
 [5,] -0.002 0.000  0.000 0.000  0.014  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.007  0.004  0.004  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
 [6,] -0.001 0.000  0.000 0.000  0.000  0.014  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.007  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
 [7,] -0.001 0.000  0.000 0.000  0.000  0.000  0.014 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.007  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
 [8,]  0.000 0.000  0.000 0.000  0.000  0.000  0.000 0.014 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.007  0.000
 [9,]  0.000 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.014  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.007  0.000  0.000  0.000  0.000
[10,] -0.002 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.014 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.007  0.007 0.000  0.000  0.000  0.000  0.000  0.000
[11,]  0.000 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.014 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.007  0.000  0.000
[12,]  0.000 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.014 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.007  0.000  0.000  0.000
[13,]  0.000 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.014  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.007
[14,] -0.003 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.014  0.000  0.007  0.004  0.004  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
[15,] -0.005 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.014  0.000  0.000  0.000  0.007  0.007  0.007 0.000  0.007  0.007  0.007  0.007  0.007
[16,] -0.004 0.000  0.000 0.000  0.007  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.007  0.000  0.014  0.007  0.007  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
[17,] -0.003 0.000  0.007 0.000  0.004  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.004  0.000  0.007  0.014  0.004  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
[18,] -0.003 0.000  0.000 0.000  0.004  0.007  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.004  0.000  0.007  0.004  0.014  0.000  0.000  0.000 0.000  0.000  0.000  0.000  0.000  0.000
[19,] -0.004 0.000  0.000 0.000  0.000  0.000  0.007 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.007  0.000  0.000  0.000  0.014  0.004  0.004 0.000  0.004  0.004  0.004  0.004  0.004
[20,] -0.004 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.007 0.000 0.000 0.000  0.000  0.007  0.000  0.000  0.000  0.004  0.014  0.007 0.000  0.004  0.004  0.004  0.004  0.004
[21,] -0.004 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.007 0.000 0.000 0.000  0.000  0.007  0.000  0.000  0.000  0.004  0.007  0.014 0.000  0.004  0.004  0.004  0.004  0.004
[22,]  0.000 0.007  0.000 0.007  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000  0.000 0.014  0.000  0.000  0.000  0.000  0.000
[23,] -0.002 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.007  0.000 0.000 0.000 0.000  0.000  0.007  0.000  0.000  0.000  0.004  0.004  0.004 0.000  0.014  0.004  0.004  0.004  0.004
[24,] -0.002 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.007 0.000  0.000  0.007  0.000  0.000  0.000  0.004  0.004  0.004 0.000  0.004  0.014  0.004  0.004  0.004
[25,] -0.002 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.007 0.000 0.000  0.000  0.007  0.000  0.000  0.000  0.004  0.004  0.004 0.000  0.004  0.004  0.014  0.004  0.004
[26,] -0.002 0.000  0.000 0.000  0.000  0.000  0.000 0.007 0.000  0.000 0.000 0.000 0.000  0.000  0.007  0.000  0.000  0.000  0.004  0.004  0.004 0.000  0.004  0.004  0.004  0.014  0.004
[27,] -0.002 0.000  0.000 0.000  0.000  0.000  0.000 0.000 0.000  0.000 0.000 0.000 0.007  0.000  0.007  0.000  0.000  0.000  0.004  0.004  0.004 0.000  0.004  0.004  0.004  0.004  0.014
       [,28]  [,29]  [,30]  [,31]  [,32]  [,33] [,34]  [,35]  [,36]  [,37]
 [1,]  0.000 -0.005 -0.008 -0.004  0.006  0.005 0.005 -0.003 -0.013 -0.006
 [2,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [3,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [4,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [5,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [6,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [7,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [8,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [9,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[10,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[11,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[12,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[13,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[14,] -0.001  0.000  0.000  0.000  0.000  0.001 0.000  0.000  0.000 -0.001
[15,]  0.000  0.000  0.001  0.000  0.000 -0.001 0.000  0.000  0.000  0.001
[16,]  0.000  0.000 -0.001  0.000  0.000  0.001 0.000  0.000  0.000 -0.001
[17,]  0.000  0.000 -0.001  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[18,]  0.000  0.000  0.000  0.000  0.000  0.001 0.000  0.000  0.000 -0.001
[19,]  0.000  0.000  0.001  0.000  0.000 -0.001 0.000  0.000  0.000  0.000
[20,]  0.000  0.000  0.000  0.000  0.000 -0.001 0.000  0.000  0.000  0.001
[21,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.001
[22,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[23,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[24,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[25,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[26,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
[27,]  0.000  0.000  0.000  0.000  0.000  0.000 0.000  0.000  0.000  0.000
 [ getOption("max.print") 에 도달했습니다 -- 10 행들을 생략합니다 ]
> 
> # solution
> sol = gi_LHS %*% RHS
> round(sol, 3)
        [,1]
 [1,]  9.937
 [2,]  0.000
 [3,]  0.037
 [4,]  0.000
 [5,]  0.025
 [6,] -0.026
 [7,] -0.014
 [8,]  0.000
 [9,]  0.000
[10,] -0.034
[11,]  0.000
[12,]  0.000
[13,]  0.000
[14,]  0.011
[15,]  0.000
[16,]  0.043
[17,]  0.077
[18,] -0.017
[19,] -0.020
[20,] -0.016
[21,] -0.052
[22,]  0.000
[23,]  0.000
[24,]  0.000
[25,]  0.000
[26,]  0.000
[27,]  0.000
[28,]  0.078
[29,] -0.280
[30,]  0.234
[31,] -0.074
[32,]  0.098
[33,]  0.127
[34,]  0.000
[35,]  0.000
[36,] -0.054
[37,] -0.018
> 
> # mean effect of solutions
> mean_eff = sol[1]
> round(mean_eff, 3)
[1] 9.937
> 
> # snp effect of solutions
> snp_eff = sol[28:37]
> round(snp_eff, 3)
 [1]  0.078 -0.280  0.234 -0.074  0.098  0.127  0.000  0.000 -0.054 -0.018
> 
> # calculate DGV
> # genotype of animals
> # design matrix of animals
> P2 = sweep(M_all, 2, snp_mean * 2)
> round(P2, 3)
        snp1   snp2   snp3   snp4   snp5   snp6   snp7   snp8   snp9  snp10
 [1,]  1.357 -0.357  0.286  0.286 -0.286 -1.214 -0.143  0.071 -0.143  1.214
 [2,]  0.357 -0.357 -0.714 -0.714 -0.286  0.786 -0.143  0.071 -0.143 -0.786
 [3,]  0.357  0.643  1.286  0.286  0.714 -1.214 -0.143  0.071 -0.143  1.214
 [4,] -0.643 -0.357  1.286  0.286 -0.286 -0.214 -0.143  0.071  0.857  0.214
 [5,] -0.643  0.643  0.286  1.286 -0.286 -1.214 -0.143  0.071 -0.143  1.214
 [6,]  0.357  0.643 -0.714  0.286 -0.286  0.786 -0.143  0.071  0.857  0.214
 [7,] -0.643 -0.357  0.286  0.286 -0.286  0.786 -0.143  0.071  0.857 -0.786
 [8,] -0.643  0.643  0.286 -0.714 -0.286 -0.214 -0.143  0.071  0.857 -0.786
 [9,]  1.357 -0.357 -0.714 -0.714 -0.286 -0.214  1.857  0.071 -0.143  1.214
[10,] -0.643 -0.357 -0.714  0.286  0.714  0.786 -0.143  0.071 -1.143 -0.786
[11,] -0.643  0.643  0.286 -0.714 -0.286 -0.214 -0.143  0.071  0.857  0.214
[12,]  0.357 -0.357 -0.714 -0.714  0.714 -0.214 -0.143  0.071 -1.143 -0.786
[13,] -0.643 -0.357 -0.714  0.286  0.714  0.786 -0.143  0.071 -0.143 -0.786
[14,]  0.357 -0.357  0.286  0.286 -0.286  0.786 -0.143 -0.929 -1.143 -0.786
> 
> # DGV
> dgv = P2 %*% snp_eff
> round(dgv, 3)
        [,1]
 [1,]  0.055
 [2,]  0.108
 [3,]  0.029
 [4,]  0.224
 [5,] -0.456
 [6,] -0.319
 [7,]  0.135
 [8,] -0.198
 [9,]  0.023
[10,]  0.107
[11,] -0.216
[12,]  0.133
[13,]  0.053
[14,]  0.321
> 

 

책의 결과 값과 SNP effect 값은 동일하나 polygenic effect가 다르게 나왔다. blupf90으로도 확인을 했는데 역시 다르다. 저자의 오타인가 보다. DGV도 다르다.

 

자료, 혈통, 프로그램 파일 : 

21_SNPBLUP with polygenic effect_unweighted.zip
0.00MB

 

+ Recent posts