FLDA

As the current LDA is very similar to the FLDA, lda function in MASS package is used to accomplish this part.


In [1]:
suppressMessages(library(fastAdaboost))
load("../transformed data/golub3571.rda")
load("../transformed data/paper9.rda")
# Settings as specified in the paper
p = 40 # number of genes for FLDA
B = 50 # Aggregation predictors
N = 200 # repeat classification N times
d = c(0.05, 0.1,0.25, 0.5, 0.75, 1) # CPD parameter
set.seed(2017)

In [2]:
cbine_data = data.frame(response = factor(total3571_response), scale_golub_merge)
flda_error = numeric(N)
for(i in 1:200){
    flda_index = mysplit(nrow(cbine_data))
    flda_train = cbine_data[-flda_index,]
    flda_test = cbine_data[flda_index,]
    
    # gene selection
    temp_bw = order(BW(flda_train[, -1], flda_train$response), decreasing = T)[1:p]
    flda_train_t = data.frame(response = flda_train$response, flda_train[,temp_bw+1])
    flda_test_t= data.frame(response = flda_test$response, flda_test[,temp_bw+1])
    
    flda_md = MASS::lda(response~., data = flda_train_t)
    flda_pred = predict(flda_md, flda_test_t)$class
    flda_error[i] = sum(flda_pred != flda_test_t$response)
}
resultFLDA = c(Median = median(flda_error), Upper_quartile = quantile(flda_error, 0.75))

In [3]:
resultFLDA


Median
3
Upper_quartile.75%
5