Bab Tiga
Bab Tiga
EXPLORING DATASET
GAMBAR 5.2
> library(genefilter)
> ALLb <- nsFilter(ALLb,
+ var.func=IQR,
+ var.cutoff=IQR(as.vector(es))/5,
+ feature.exclude="^AFFX")
> ALLb
$eset
ExpressionSet (storageMode: lockedEnvironment)
assayData: 4035 features, 94 samples
element names: exprs
phenoData
sampleNames: 01005, 01010, ..., LAL5 (94 total)
varLabels and varMetadata description:
cod: Patient ID
diagnosis: Date of diagnosis
...: ...
mol.bio: molecular biology
(22 total)
featureData
featureNames: 41654_at, 35430_at, ..., 34371_at (4035 total)
fvarLabels and fvarMetadata description: none
experimentData: use 'experimentData(object)'
pubMedIds: 14684422 16243790
Annotation: hgu95av2
$filter.log
$filter.log$numLowVar
[1] 4764
$filter.log$numDupsRemoved
[1] 2918
$filter.log$feature.exclude
[1] 19
$filter.log$numRemoved.ENTREZID
[1] 889
Variabilitas dalam hal IQR dan median yang dapat kita amati
pada Gambar 5.3 memberikan bukti bahwa gen dinyatakan
dalam skala nilai yang berbeda. Beberapa teknik pemodelan
dipengaruhi oleh permasalahan dimana masing-masing kasus
dijelaskan oleh satu set variabel dengan menggunakan skala
yang berbeda. Yaitu, metode apapun yang bergantung pada
jarak antara pengamatan akan berbeda dari jenis masalah ini
karena fungsi jarak biasanya meringkas perbedaan antara nilai
variabel. Dalam konteks ini, variabel dengan nilai rata-rata
yang lebih tinggi akan berakhir dengan pengaruh yang lebih
besar pada jarak antara pengamatan. Untuk menghindari hal
ini, lazim untuk menstandarisasi (menormalkan) data.
Transformasi ini terdiri dari penguraian nilai khas dari variabel
dan membagi hasilnya dengan ukuran spread.
GAMBAR 5.3
> library(randomForest)
> dt <- data.frame(t(es), Mut = ALLb$mol.bio)
> rf <- randomForest(Mut ~ ., dt, importance = T)
> imp <- importance(rf)
> imp <- imp[, ncol(imp) - 1]
> rf.genes <- names(imp)[order(imp, decreasing = T)[1:30]]
> library(lattice)
> ordMut <- order(dt$Mut)
> levelplot(as.matrix(dt[ordMut,rf.genes]),
+ aspect='fill', xlab='', ylab='',
+ scales=list(
+ x=list(
+ labels=c('+','-','*','|')[as.integer(dt$Mut[ordMut])],
+ cex=0.7,
+ tck=0)
+ ),
+ main=paste(paste(c('"+"','"-"','"*"','"|"'),
+ levels(dt$Mut)
+ ),
+ collapse='; '),
+ col.regions=colorRampPalette(c('white','orange','blue'))
+ )
GAMBAR 5.4
> library(Hmisc)
> vc <- varclus(t(es))
> clus30 <- cutree(vc$hclust, 30)
> table(clus30)
> getVarsSet(vc$hclust)
> data(iris)
> rpart.loocv <- function(form,train,test,...) {
+ require(rpart,quietly=T)
+ m <- rpart(form,train,...)
+ p <- predict(m,test,type='class')
+ c(accuracy=ifelse(p == resp(form,test),100,0))
+ }
> exp <- loocv(learner('rpart.loocv',list()),
+ dataset(Species~.,iris),
+ loocvSettings(seed=1234,verbose=F))
> summary(exp)
> library(class)
> data(iris)
> idx <- sample(1:nrow(iris), as.integer(0.7 * nrow(iris)))
> tr <- iris[idx, ]
> ts <- iris[-idx, ]
> preds <- knn(tr[, -5], ts[, -5], tr[, 5], k = 3)
> table(preds, ts[, 5])
> require(class,quietly=TRUE)
> require(randomForest,quietly=TRUE)
> require(e1071,quietly=TRUE)
> load('myALL.Rdata')
> es <- exprs(ALLb)
> # simple filtering
> ALLb <- nsFilter(ALLb,
+ var.func=IQR,var.cutoff=IQR(as.vector(es))/5,
+ feature.exclude="^AFFX")
> ALLb <- ALLb$eset
> # the dataset
> featureNames(ALLb) <- make.names(featureNames(ALLb))
> dt <- data.frame(t(exprs(ALLb)),Mut=ALLb$mol.bio)
> DSs <- list(dataset(Mut ~ .,dt,'ALL'))
> # The learners to evaluate
> TODO <- c('knn','svm','randomForest')
> for(td in TODO) {
+ assign(td,
+ experimentalComparison(
+ DSs,
+ c(
+ do.call('variants',
+ c(list('genericModel',learner=td),
+ vars[[td]],
+ varsRootName=td))
+ ),
+ loocvSettings(seed=1234,verbose=F)
+ )
+ )
+ save(list=td,file=paste(td,'Rdata',sep='.'))
+ }
> load("knn.Rdata")
> load("svm.Rdata")
> load("randomForest.Rdata")
5.5 Ringkasan