Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 4.89 KB | None | 0 0
  1. library(dplyr)
  2. library(caret)
  3. library(randomForest)
  4. ########################################
  5. # Zad 1
  6. # Zapisz do folderu plik dataLeukemia.RData, zapoznaj siÄ™ z danymi genetycznymi pacjentĂłw chorych
  7. # na białaczkę, ustal następujące dane:
  8. # a) ile jest typów białaczki (klasy)
  9. # b) jak liczne są klasy, zwróć uwagę czy klasy są równoliczne?
  10. # c) jak duĹĽy jest zbiĂłr zmiennych genetycznych/predyktorĂłw w stosunku do liczby prĂłb (obserwacji)?
  11. #setwd("E:/DYDAKTYKA/Bioinformatyka/Laboratorium2017_18")
  12. load('dataLeukemia.RData')
  13.  View(data[1:10,1:10])  
  14.  #dim(train0)
  15.  
  16.  
  17.  names(data[,1:3])
  18.  data=data[,-c(1,3)]
  19.  
  20.  table(data$Leukemia.class)
  21.  unique(data$Leukemia.class)
  22.  
  23.  data0=data[data$Leukemia.class == 'c-ALL/Pre-B-ALL without t(9;22)' | data$Leukemia.class == 'MDS',]
  24.  save(data0,file='data0.RData')
  25.  View(data0[1:50, 1:10])
  26.  data0$Leukemia.class = as.numeric(data0$Leukemia.class)
  27.  View(data0[1:50, 1:10])
  28.  
  29.  
  30.  ##### PERMUTACJA
  31. n11 = nrow(data0[data0$Leukemia.class == 11,])
  32. n15 = nrow(data0[data0$Leukemia.class == 15,])
  33.  
  34. index11 = seq(from =1, to = n11, by = 1)
  35. index15 = seq(from =1, to = n15, by = 1)
  36.  
  37. index11_perm = sample.int(index11, size = length(index11), replace = FALSE)
  38. index15_perm = sample.int(index15, size = length(index15), replace = FALSE)
  39. #####
  40.  
  41.  
  42. ########## 3-cross
  43. index_test = index_train = list()
  44. index_all =1:391
  45. index_test[[1]] = c(1:66,199:263)
  46. index_test[[2]] = c(67:132, 264:328)
  47. index_test[[3]] = c(133:198,329:391)
  48.  
  49. index_train[[1]] = index_all[-c(1:66,199:263)]
  50. index_train[[2]] = index_all[-c(67:132, 264:328)]
  51. index_train[[3]] = index_all[-c(133:198,329:391)]
  52.  
  53. #############
  54.  
  55. data_0 = data0[index_train[[1]],-1] #markery
  56. class = data0[index_train[[1]],1]
  57. data_0_test = data0[index_test[[1]],-1]
  58. class_test = data0[index_test[[1]],1]
  59.  
  60.  
  61.  
  62. list_p_value = list()
  63. for(i in 1:ncol(data_0)){
  64.   p_val = t.test(x = data_0[,i], y = class,alternative = c("two.sided"),var.equal = TRUE,conf.level = 0.95)
  65.   list_p_value[[i]] = p_val$p.value
  66. }
  67.  
  68. gene_p_val = cbind(names(data_0), as.numeric(unlist(list_p_value)))
  69. sort_gene_p_val = gene_p_val[order(as.numeric(gene_p_val[,2])),]
  70. sort_gene_p_val_adjust = p.adjust(sort_gene_p_val[,2], method = 'BH')
  71.  
  72.  
  73. gene_p_val_adjust = cbind(sort_gene_p_val[,1], sort_gene_p_val_adjust)
  74. p_val_adjust05 = gene_p_val_adjust[gene_p_val_adjust[,2] < 0.05, ]
  75. dim(p_val_adjust05)
  76.  
  77.  
  78.  
  79. result_model = randomForest(x = data_0[,p_val_adjust05[,1]], y=as.factor(class),  
  80.                             xtest=data_0_test[,p_val_adjust05[,1]], ytest=as.factor(class_test), ntree=500,
  81.              importance=TRUE)
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91. # Zad 2
  92. # Z powyĹĽszego zbioru danych wybierz tylko 2 typy leukemii, najbardziej liczne, w ktĂłrych liczba pacjentĂłw
  93. # jest porównywalna. W przypadku małej liczby obserwacji budowę modelu i jego walidację wykonujemy w crossvalidacji tj. dzielimy
  94. # dzielÄ…c zbiĂłr na N części i budujÄ…c model k- krotnie. Optymalnie aby wykonywana byĹ‚a peĹ‚na krossvalidacja  
  95. # tzn. obserwacje N zbiorów testowych są różne, niepowtarzają się.
  96. #
  97. # Napisz funkcję, do wykonania pełnej crossvalidacji, która będzie dzieliła zbiór danych (2 klasy)
  98. # na N porównywalnych części (max 10) i zapisywała do listy dwa zbiory: treningowy (liczba obserwacji (N-1)/N)
  99. # i testowy (liczba obserwacji 1/N). Przetestuj funkcjÄ™ dla krossvalidacji N = 3
  100. #  dla wybranych danych ze zbioru leukemii tj. wybierz dane 2 typow leukemii (nazwijmy ten zbiĂłr A),
  101. # w których liczba pacjentów jest porównywalna. Zadanie wykonaj pracując wyłącznie na indeksach.
  102.  
  103. # Zad 3
  104. # W przypadku duĹĽej dysproporcji zmiennych liczba deskryptorĂłw >> liczba obserwacji naleĹĽy przed budowÄ… modelu
  105. # uczenia maszynowego wykonać redukcję zmiennych (predyktorów), w tym celu wykorzystamy znaną metodę statystyczną
  106. # tj. t-test Studenta (w R funkcja t.test ), dla uproszczenia przyjmijmy że wszystkie predyktory mają rozkład
  107. # normalny i wariancje w obu grupach sÄ… rĂłwne.
  108. # W przypadku wykonywania testów wielokrotnych (N porównań dla tego samego deskryptora) musisz wykonać
  109. # poprawkÄ™, dla danych genetycznych stosuje siÄ™ zwykle poprawkÄ™ Benjamini-Hochberga (w R funkcja p.adjust)
  110. # Napisz funkcję, która wykona dla określonego zbioru treningowego filtrację zmiennych/predyktorów.
  111. # Pamiętaj, że wszystkie istotne statystycznie zmienne to takie które mają p-value < 0.05, więc wykonaj odpowiednie
  112. # sortowanie
  113.  
  114. # Zad 4
  115. # KorzystajÄ…c z algorytmu LasĂłw Losowych wykonaj klasyfikacjÄ™ na zbiorze A w 3-krotnej crosvalidacji w 5 iteracjach
  116. # na 20-tu najistotniejszych zmiennych genetycznych (100 top zmiennych w rakningu po p-value z t-testu).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement