## 3 Results and Analysis  
In this section, we present the results obtained from running our Algorithm 1 on the chosen datasets using the glm package. Our analysis is based on the median and interquartile range of each dataset used. Outliers are excluded. For visualization, we chose boxplots because they includes all the aforementioned measurements. ```
1:procedureglm_test(\(X_{i,j}\): a two-dimensional matrix containing _averclength_ for each gene;
1 st dimension is for samples and 2 nd dimension is for genes)
2: Rotate \(X_{i,j}\) dimensions so that \(X_{j,i}\)
3: Separate samples into two groups based on selected phenotypes. 4: In 1 st group: replace \(Sample\_id\leftrightarrow\) \"1\"
5: In 2 nd group: replace \(Sample\_id\leftrightarrow\) \"0\"
6:for\(n\in\{1\ldots i\}\)do\(\triangleright\)Loop over genes
7: Run Wilcoxon-Test on \(n\)
8: Extract and store \(p\)-value
9:endfor
10: Shorten \(X_{j,i}\) to include only 1000 genes with the lowest \(p\)-value. 11:for\(m\in\{1\ldots 100\}\)do\(\triangleright\)General loop
12: Shuffle rows in \(X_{j,i}\)
13:for\(k\in\{1\ldots 10\}\)do\(\triangleright\)Loop over samples
14: Set 10% of \(X_{j,i}\) as Testing_set
15: Set 90% of \(X_{j,i}\) as Training_set
16: Measure current \(time_{start}\)
17: Fit \(Training\_set\) into glm(). 18: Measure current \(time_{end}\)
19: Predict model on Testing_set
20: Calculate the method's Run-time using \(time_{end}-time_{start}\)
21: Calculate the method's Precision using Confusion Matrix
22: Calculate the method's Recall using Confusion Matrix
23: Calculate the method's F1-Score using the method's Precision and Recall
24: Calculate the method's AUC using ROC function
25: Repeat steps 14-24 using the adjacent fold
26:endfor
27: Calculate the mean of all scores collected
28:endfor
29: Plot final scores \begin{table}
\begin{tabular}{c c} \hline platform & \(\times\)86\_64-apple-darwin15.6.0 \\ arch & \(\times\)86\_64 \\ os & darwin15.6.0 \\ system & \(\times\)86\_64, darwin15.6.0 \\ status & \\ major & 3 \\ minor & 6.1 \\ year & 2019 \\ month & 07 \\ day & 05 \\ svn rev & 76,782 \\ language & R \\ version\_string & R version 3.6.1 (5 July 2019) \\ nickname & Action of the Toes \\ \hline \end{tabular}
\end{table} 
Table 6: System and R Studio specification details at the time of running the evaluation scripts. ### Precision

Results in Figure 1 show that Precision varies across different datasets. The highest median value recorded was 0.94 when using GSE71585-GPL17021. Interestingly, this result also has the smallest interquartile range. On the other hand, the lowest median value recorded was 0.40 when using the GSE102299-smartseq2 dataset. The majority of Precision median values are in the range of 0.48 to 0.66, with 0.2 variation for 15 Precision values out of 22. Table 7 shows Precision's medians, each associated with its corresponding dataset. ### Recall

The results of Recall depicted in Figure 2 highlight that the highest median value recorded is 0.75 when using the GSE71585-GPL17021 dataset. Notably, this result exhibits the smallest interquartile range among all datasets. On the other hand, the lowest medians, 0.50, are recorded when using GSE102299-smartseq2, GSE48968-GPL17021-125 bp, and GSE77847. Nearly all median values presented in Table 7 range from 0.5 to 0.59. Only two datasets, GSE66053-GPL18573 and GSE71585-GPL17021, demonstrate medians that exceed 0.59, which may be due to the disparity between the number of 0s and 1s in these datasets. The result suggests that glm is reliable when it comes to identifying type II error rates. The lower the median, the better the model. ### F1-Score

The F1-Score results depicted in Figure 3 indicate that the dataset GSE71585-GPL17021 achieved the highest median, with a value of 0.83. On the other hand, the GSE102299-smartseq2 dataset exhibits the smallest interquartile range and the lowest median value of 0.44. Among all F1-Scores in Table 7, 13 F1-Score values fall within the range of 0.50 to 0.55.