Advertisement
Olivoto

Repeatability for stability parameters

Sep 17th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 4.80 KB | None | 0 0
  1. repstab = function(data, boot = 3, nenv = 16, initial = 3, strata = FALSE){
  2.  
  3.   if(nenv < 6){
  4.     stop("O número de ambientes deve ser maior que seis, para que estatisticas como o desvio da regressão possam ser calculadas para cada subconjunto de ambientes")
  5.   }
  6.  
  7. sets = nenv/2
  8. nenv = (nenv/2-initial)+1
  9.  
  10.  
  11. Ncorr=(10*(10-1))/2
  12.  
  13. names = c("mean", "R2", "RMSE", "sdij", "CV", "Ecovalencia",
  14.           "Shukla", "WAASB", "PC1", "WAASY")
  15. combnam = combn(names,2, paste, collapse = " x ")
  16.  
  17. temp_cor_1 = data.frame(matrix(nrow = boot, ncol = Ncorr + 2))
  18. names(temp_cor_1) = c("NENV", "BOOT", names(sapply(combnam, names)))
  19. temp_cor_2 = data.frame(matrix(nrow = boot, ncol = Ncorr + 2))
  20. names(temp_cor_2) = c("NENV", "BOOT", names(sapply(combnam, names)))
  21.  
  22. temp = data.frame(matrix(nrow = boot, ncol = 12))
  23. names(temp) = c("NENV", "BOOT", names)
  24.  
  25. results_rand_cor1 = list()
  26. results_rand_cor2 = list()
  27. results_random = list()
  28.  
  29.  
  30. trigoup = data %>% group_by(ENV) %>%
  31.   dplyr::summarise(mean = mean(RG)) %>%
  32.   arrange(desc(mean)) %>%
  33.   slice(1:sets)
  34. trigoudown = data %>% group_by(ENV) %>%
  35.   dplyr::summarise(mean = mean(RG)) %>%
  36.   arrange(mean) %>%
  37.   slice(1:sets)
  38.  
  39. for (k in 1:nenv){
  40.   pb <- winProgressBar(title = "Repeatability by resampling approach",
  41.                        label = "processing data",
  42.                        min = 0,
  43.                        width = 400,
  44.                        max = boot,
  45.                        initial = 0)
  46. for (i in 1:boot){
  47.  
  48.   if (strata == TRUE){
  49.    
  50.     AMB = sample(unique(trigoup$ENV), initial, replace = FALSE)
  51.     AMB2 = sample(unique(trigoudown$ENV), initial, replace = FALSE)
  52.    
  53.   } else{
  54.     AMB = sample(unique(data$ENV), initial, replace = FALSE)
  55.     AMB2 = unique(data$ENV)[-c(AMB)]
  56.     AMB2 = sample(AMB2, initial, replace = FALSE)
  57.   }
  58.  
  59. data1 = data %>% filter(ENV %in% AMB) %>% as.data.frame()
  60. data1$ENV = factor(data1$ENV, levels = AMB)
  61. data2 = data %>% filter(ENV %in% AMB2) %>% as.data.frame()
  62. data2$ENV = factor(data2$ENV, levels = AMB2)
  63.  
  64. data1_stat = ge_stats(data1, env = "ENV", gen = "CULTIVAR", rep = "REP", resp = "RG")
  65. data2_stat = ge_stats(data2, env = "ENV", gen = "CULTIVAR", rep = "REP", resp = "RG")
  66.  
  67. stab_1 = cbind(data1_stat[["ER"]][["Regression"]] %>%
  68.          select(Gen, Mean, R.Sqr, RMSE, sdij),
  69.          data1_stat[["stab_meas"]] %>%
  70.            select(CV, Ecov, ShuklaVar))
  71.          
  72. stab_2 = cbind(data2_stat[["ER"]][["Regression"]] %>%
  73.                  select(Gen, Mean, R.Sqr, RMSE, sdij),
  74.                data2_stat[["stab_meas"]] %>%
  75.                  select(CV, Ecov, ShuklaVar))
  76.  
  77. stab_1_rank = cbind(
  78.   stab_1 %>% mutate(mean_r = rank(-Mean),
  79.                     R.Sqr_r = rank(-R.Sqr),
  80.                     RMSE_r = rank(RMSE),
  81.                     sdij_r = rank(abs(sdij)),
  82.                     CV_r = rank(CV),
  83.                     Ecov_r = rank(Ecov),
  84.                     ShuklaVar_r = rank(ShuklaVar)) %>%
  85.     select(c(mean_r, R.Sqr_r, RMSE_r, sdij_r, CV_r, Ecov_r, ShuklaVar_r)),
  86.  
  87.   WAASB(data1, resp = "RG")[["model"]] %>%
  88.     subset(type == "GEN", select = c(OrWAASB, OrPC1, OrWAASY))
  89. )
  90.  
  91. stab_2_rank = cbind(
  92.              stab_2 %>% mutate(mean_r = rank(-Mean),
  93.                                 R.Sqr_r = rank(-R.Sqr),
  94.                                 RMSE_r = rank(RMSE),
  95.                                 sdij_r = rank(abs(sdij)),
  96.                                 CV_r = rank(CV),
  97.                                 Ecov_r = rank(Ecov),
  98.                                 ShuklaVar_r = rank(ShuklaVar)) %>%
  99.   select(c(mean_r, R.Sqr_r, RMSE_r, sdij_r, CV_r, Ecov_r, ShuklaVar_r)),
  100.  
  101.   WAASB(data2, resp = "RG")[["model"]] %>%
  102.     subset(type == "GEN", select = c(OrWAASB, OrPC1, OrWAASY))
  103. )
  104.  
  105. setWinProgressBar(pb, i, title=paste("Bootstrapping", i," of ", boot, "replicates ", initial, "envs - ",
  106.                                         round(i/boot*100,2),"% Concluded -"))
  107.  
  108.  
  109. temp[i,1] = initial
  110. temp[i,2] = i
  111. temp[i,3:12] = diag(cor(stab_1_rank, stab_2_rank, method = "spearman"))
  112.  
  113. temp_cor_1[i,1] = initial
  114. temp_cor_1[i,2] = i
  115. temp_cor_1[i,3:ncol(temp_cor_1)] = as.vector(t(cor(stab_1_rank, method = "spearman"))
  116.                                  [lower.tri(cor(stab_1_rank, method = "spearman"),diag=F)])
  117.  
  118. temp_cor_2[i,1] = initial
  119. temp_cor_2[i,2] = i
  120. temp_cor_2[i,3:ncol(temp_cor_2)] = as.vector(t(cor(stab_2_rank, method = "spearman"))
  121.                                  [lower.tri(cor(stab_2_rank, method = "spearman"),diag=F)])
  122. }
  123.  
  124. results_random[[paste(initial, "ENV")]] = temp
  125. results_rand_cor1[[paste(initial, "ENV")]] = temp_cor_1
  126. results_rand_cor2[[paste(initial, "ENV")]] = temp_cor_2
  127.  
  128. initial = initial + 1
  129. close(pb)
  130. }
  131.  
  132. return(list(results_random = ldply(results_random),
  133.             results_rand_cor1 = ldply(results_rand_cor1),
  134.             results_rand_cor2 = ldply(results_rand_cor2)))
  135. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement