annotate blupcal.R @ 0:45d215f2be74 draft

Uploaded
author dereeper
date Sat, 29 Dec 2018 18:44:05 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
1 # Calculation of BLUE/BLUP
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
2 # Umesh Rosyara, CIMMYT
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
3 blupcal<- function(data,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
4 Replication = "Rep",
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
5 Genotype = "Entry",
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
6 y = "y",
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
7 design = "rcbd",
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
8 Block = NULL,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
9 summarizeby = NULL,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
10 groupvar1 = NULL,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
11 groupvar2 = NULL) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
12
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
13 suppressMessages(library(arm))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
14 # so that it would not throw messages at the stderr channel of Galaxy
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
15 library(lme4, quietly = TRUE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
16
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
17 # Basic summary of the variables eused
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
18 print(paste("Replication variable = ", Replication))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
19 print(paste("block variable = ", Block))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
20 print(paste("Genotype variable = ", Genotype))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
21 print(paste("summarizeby (included in the model) = ", summarizeby))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
22 print(paste("groupvariable 1 (included in the model) = ", groupvar1))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
23 print(paste("groupvariable 2 (included in the model) = ", groupvar2))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
24 print(paste("design = ", design))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
25 print(paste("y = ", y))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
26
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
27 # Summary of data
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
28 print("*************************************")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
29 print("*************************************")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
30 print(summary(data))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
31 print("*************************************")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
32 print("*************************************")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
33
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
34 data_list <- list()
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
35 if (length(summarizeby) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
36 data$summarizeby <- as.factor(data[,summarizeby])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
37 data_list = split(data, f = data$summarizeby)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
38 } else {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
39 data$summarizeby <- "none"
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
40 data_list[[1]] <- data
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
41 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
42
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
43 all_results <- list()
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
44
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
45 for (i in 1: length(data_list)) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
46 data1 <- data_list[[i]]
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
47
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
48 data1$Rep <- as.factor(data1[, Replication])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
49 cat("\ndata1$Rep:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
50 print(data1$Rep)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
51
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
52 data1$Entry <- as.factor(data1[, Genotype])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
53 cat("\ndata1$Entry:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
54 print(data1$Entry)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
55
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
56 if (design == "lattice") {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
57 data1$Subblock <- as.factor(data1[, Block])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
58 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
59
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
60 data1$y <- as.numeric(data1[, y])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
61 cat("\ndata1$y:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
62 print(data1$y)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
63
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
64 if (length(groupvar1) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
65 data1$groupvar1 <- as.factor(data1[, groupvar1])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
66 cat("\ndata1$groupvar1:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
67 print(data1$groupvar1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
68 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
69
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
70 if (length(groupvar2) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
71 data1$groupvar2 <- as.factor(data1[, groupvar2])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
72 cat("\ndata1$groupvar2:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
73 print(data1$groupvar2)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
74 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
75
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
76 if (design == "rcbd") {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
77 if (length(groupvar1) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
78 if (length(groupvar2) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
79 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
80 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
81 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
82 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
83 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
84 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
85 (1|Entry:groupvar1:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
86 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
87 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
88 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
89 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
90 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
91 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
92 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
93 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
94 (1|Entry:groupvar1:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
95 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
96 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
97 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
98 if (length(groupvar2) == 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
99 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
100 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
101 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
102 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
103 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
104 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
105 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
106 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
107 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
108 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
109 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
110 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
111 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
112 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
113 if (length(groupvar1) == 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
114 if (length(groupvar2) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
115 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
116 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
117 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
118 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
119 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
120 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
121 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
122 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
123 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
124 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
125 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
126 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
127 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
128 if (length(groupvar2) == 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
129 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
130 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
131 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
132 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
133 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
134 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
135 (1|Rep),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
136 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
137 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
138 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
139 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
140
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
141 if (design == "lattice") {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
142 if (length(groupvar1) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
143 if (length(groupvar2) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
144 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
145 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
146 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
147 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
148 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
149 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
150 (1|Entry:groupvar1:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
151 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
152 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
153 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
154 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
155 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
156 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
157 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
158 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
159 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
160 (1|Entry:groupvar1:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
161 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
162 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
163 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
164 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
165 if (length(groupvar2) == 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
166 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
167 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
168 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
169 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
170 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
171 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
172 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
173 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
174 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
175 (1|groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
176 (1|Entry:groupvar1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
177 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
178 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
179 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
180 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
181 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
182 if (length(groupvar1) == 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
183 if (length(groupvar2) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
184 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
185 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
186 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
187 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
188 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
189 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
190 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
191 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
192 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
193 (1|groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
194 (1|Entry:groupvar2) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
195 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
196 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
197 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
198 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
199 if (length(groupvar2) == 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
200 fm1 <- lmer(y ~ 1 +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
201 (1|Entry) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
202 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
203 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
204 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
205 fm2 <- lmer(y ~ (-1) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
206 Entry +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
207 (1|Rep) +
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
208 (1|Rep:Subblock),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
209 data1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
210 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
211 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
212 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
213
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
214 cat("\nfm1:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
215 print(fm1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
216 cat("\nfm2:\n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
217 print(fm2)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
218
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
219 mean1 <- mean(data1$y, na.rm = TRUE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
220 tp <- ranef(fm1)$Entry
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
221 if (all(tp == 0)) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
222 stop("error in model: all BLUP effects are zero")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
223 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
224
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
225 ########
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
226 # BLUP
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
227 ########
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
228 blup <- tp + mean1
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
229 names(blup) <- "blup"
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
230
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
231 varComponents <- as.data.frame(VarCorr(fm1))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
232
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
233 # extract the genetic variance component
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
234 Vg <- varComponents[match('Entry', varComponents[,1]), 'vcov']
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
235
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
236 # This function extracts standard errors of model random effect from modeled object in lmer
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
237 SErr <- se.ranef(fm1)$Entry[,1]
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
238
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
239 # Prediction Error Variance (PEV)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
240 PEV <- (SErr) ^ 2
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
241
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
242 # PEV reliability
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
243 pevReliability <- 1 - (PEV / Vg)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
244 names(pevReliability) <- "PEV reliability"
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
245
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
246 blupdf = data.frame(genotype = rownames(ranef(fm1)$Entry),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
247 blup = blup,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
248 BLUP_PEV = PEV,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
249 BLUP_pevReliability = pevReliability)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
250
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
251 ########
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
252 # BLUE
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
253 ########
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
254 blue <- fixef(fm2)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
255
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
256 bluedf <- data.frame(genotype = substr(names(blue), 6, nchar(names(blue))),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
257 blue = blue)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
258
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
259 #########
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
260 # MEANS
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
261 #########
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
262 means <- with(data1, tapply(y, Entry, mean, na.rm = TRUE))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
263
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
264 meandf <- data.frame(genotype = names(means),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
265 means = means)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
266
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
267 resultdf1 <- merge(meandf, bluedf, by = "genotype")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
268 resultdf <- merge(resultdf1, blupdf, by = "genotype")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
269
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
270 if (length(summarizeby) != 0) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
271 results <- data.frame(row.names = NULL,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
272 genotype = resultdf$genotype,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
273 blue = resultdf$blue,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
274 blup = resultdf$blup,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
275 BLUP_PEV = resultdf$BLUP_PEV,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
276 pevReliability = resultdf$BLUP_pevReliability,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
277 means = resultdf$means,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
278 group = levels(data$summarizeby)[i])
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
279 names(results) <- c(Genotype,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
280 paste(y, "_blue", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
281 paste(y, "_blup", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
282 paste(y, "_PEV", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
283 paste(y, "_pevReliability", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
284 paste(y, "_means", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
285 summarizeby)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
286 } else {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
287 results <- data.frame(row.names = NULL,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
288 genotype = resultdf$genotype,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
289 blue = resultdf$blue,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
290 blup = resultdf$blup,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
291 BLUP_PEV = resultdf$BLUP_PEV,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
292 pevReliability = resultdf$BLUP_pevReliability,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
293 means = resultdf$means)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
294 names(results) <- c(Genotype,
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
295 paste(y, "_blue", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
296 paste(y, "_blup", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
297 paste(y, "_PEV", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
298 paste(y, "_pevReliability", sep = ""),
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
299 paste(y, "_means", sep = ""))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
300 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
301
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
302 all_results[[i]] <- results
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
303 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
304 outdf <- do.call("rbind", all_results)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
305 class(outdf) <- c("blupcal", class(outdf))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
306 return(outdf)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
307 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
308
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
309 # plot function of blupcal module
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
310 plot2.blupcal <- function(outdf) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
311 hist_with_box <- function(data, main = main, hist.col, box.col) {
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
312 histpar <- hist(data, plot = FALSE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
313 hist(data, col = hist.col, main = main, ylim = c(0, max(histpar$density) + max(histpar$density) * 0.3), prob = TRUE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
314 m = mean(data, na.rm = TRUE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
315 std = sd(data, na.rm = TRUE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
316 curve(dnorm(x, mean = m, sd = std), col = "yellow", lwd = 2, add = TRUE, yaxt = "n")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
317 boxout <- boxplot(data, plot = FALSE)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
318 points(boxout$out, y = rep(max(histpar$density) * 0.3, length(boxout$out)), col = "red", pch = 1)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
319 texts <- paste("mean = ", round(mean(data, na.rm = TRUE), 2), " sd = ", round(sd(data, na.rm = TRUE), 2), " n = ", length(data))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
320 text(min(histpar$breaks), max(histpar$density) + max(histpar$density) * 0.2, labels = texts, pos = 4)
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
321 }
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
322 par(mfrow = c(3,1), mar = c(3.1, 3.1, 1.1, 2.1))
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
323 hist_with_box(outdf[,2], main = names(outdf)[2], hist.col = "green4", box.col = "green1")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
324 hist_with_box(outdf[,3], main = names(outdf)[3], hist.col = "blue4", box.col = "blue1")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
325 hist_with_box(outdf[,4], main = names(outdf)[4], hist.col = "gray20", box.col = "gray60")
45d215f2be74 Uploaded
dereeper
parents:
diff changeset
326 }