Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(dplyr)
- library(caret)
- library(randomForest)
- ########################################
- # Zad 1
- # Zapisz do folderu plik dataLeukemia.RData, zapoznaj siÄ™ z danymi genetycznymi pacjentĂłw chorych
- # na białaczkę, ustal następujące dane:
- # a) ile jest typów białaczki (klasy)
- # b) jak liczne są klasy, zwróć uwagę czy klasy są równoliczne?
- # c) jak duĹĽy jest zbiĂłr zmiennych genetycznych/predyktorĂłw w stosunku do liczby prĂłb (obserwacji)?
- #setwd("E:/DYDAKTYKA/Bioinformatyka/Laboratorium2017_18")
- load('dataLeukemia.RData')
- View(data[1:10,1:10])
- #dim(train0)
- names(data[,1:3])
- data=data[,-c(1,3)]
- table(data$Leukemia.class)
- unique(data$Leukemia.class)
- data0=data[data$Leukemia.class == 'c-ALL/Pre-B-ALL without t(9;22)' | data$Leukemia.class == 'MDS',]
- save(data0,file='data0.RData')
- View(data0[1:50, 1:10])
- data0$Leukemia.class = as.numeric(data0$Leukemia.class)
- View(data0[1:50, 1:10])
- ##### PERMUTACJA
- n11 = nrow(data0[data0$Leukemia.class == 11,])
- n15 = nrow(data0[data0$Leukemia.class == 15,])
- index11 = seq(from =1, to = n11, by = 1)
- index15 = seq(from =1, to = n15, by = 1)
- index11_perm = sample.int(index11, size = length(index11), replace = FALSE)
- index15_perm = sample.int(index15, size = length(index15), replace = FALSE)
- #####
- ########## 3-cross
- index_test = index_train = list()
- index_all =1:391
- index_test[[1]] = c(1:66,199:263)
- index_test[[2]] = c(67:132, 264:328)
- index_test[[3]] = c(133:198,329:391)
- index_train[[1]] = index_all[-c(1:66,199:263)]
- index_train[[2]] = index_all[-c(67:132, 264:328)]
- index_train[[3]] = index_all[-c(133:198,329:391)]
- #############
- data_0 = data0[index_train[[1]],-1] #markery
- class = data0[index_train[[1]],1]
- data_0_test = data0[index_test[[1]],-1]
- class_test = data0[index_test[[1]],1]
- list_p_value = list()
- for(i in 1:ncol(data_0)){
- p_val = t.test(x = data_0[,i], y = class,alternative = c("two.sided"),var.equal = TRUE,conf.level = 0.95)
- list_p_value[[i]] = p_val$p.value
- }
- gene_p_val = cbind(names(data_0), as.numeric(unlist(list_p_value)))
- sort_gene_p_val = gene_p_val[order(as.numeric(gene_p_val[,2])),]
- sort_gene_p_val_adjust = p.adjust(sort_gene_p_val[,2], method = 'BH')
- gene_p_val_adjust = cbind(sort_gene_p_val[,1], sort_gene_p_val_adjust)
- p_val_adjust05 = gene_p_val_adjust[gene_p_val_adjust[,2] < 0.05, ]
- dim(p_val_adjust05)
- result_model = randomForest(x = data_0[,p_val_adjust05[,1]], y=as.factor(class),
- xtest=data_0_test[,p_val_adjust05[,1]], ytest=as.factor(class_test), ntree=500,
- importance=TRUE)
- # Zad 2
- # Z powyĹĽszego zbioru danych wybierz tylko 2 typy leukemii, najbardziej liczne, w ktĂłrych liczba pacjentĂłw
- # jest porównywalna. W przypadku małej liczby obserwacji budowę modelu i jego walidację wykonujemy w crossvalidacji tj. dzielimy
- # dzieląc zbiór na N części i budując model k- krotnie. Optymalnie aby wykonywana była pełna krossvalidacja
- # tzn. obserwacje N zbiorów testowych są różne, niepowtarzają się.
- #
- # Napisz funkcję, do wykonania pełnej crossvalidacji, która będzie dzieliła zbiór danych (2 klasy)
- # na N porównywalnych części (max 10) i zapisywała do listy dwa zbiory: treningowy (liczba obserwacji (N-1)/N)
- # i testowy (liczba obserwacji 1/N). Przetestuj funkcjÄ™ dla krossvalidacji N = 3
- # dla wybranych danych ze zbioru leukemii tj. wybierz dane 2 typow leukemii (nazwijmy ten zbiĂłr A),
- # w których liczba pacjentów jest porównywalna. Zadanie wykonaj pracując wyłącznie na indeksach.
- # Zad 3
- # W przypadku duĹĽej dysproporcji zmiennych liczba deskryptorĂłw >> liczba obserwacji naleĹĽy przed budowÄ… modelu
- # uczenia maszynowego wykonać redukcję zmiennych (predyktorów), w tym celu wykorzystamy znaną metodę statystyczną
- # tj. t-test Studenta (w R funkcja t.test ), dla uproszczenia przyjmijmy że wszystkie predyktory mają rozkład
- # normalny i wariancje w obu grupach sÄ… rĂłwne.
- # W przypadku wykonywania testów wielokrotnych (N porównań dla tego samego deskryptora) musisz wykonać
- # poprawkÄ™, dla danych genetycznych stosuje siÄ™ zwykle poprawkÄ™ Benjamini-Hochberga (w R funkcja p.adjust)
- # Napisz funkcję, która wykona dla określonego zbioru treningowego filtrację zmiennych/predyktorów.
- # Pamiętaj, że wszystkie istotne statystycznie zmienne to takie które mają p-value < 0.05, więc wykonaj odpowiednie
- # sortowanie
- # Zad 4
- # KorzystajÄ…c z algorytmu LasĂłw Losowych wykonaj klasyfikacjÄ™ na zbiorze A w 3-krotnej crosvalidacji w 5 iteracjach
- # 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