wilma: Supervised Clustering of Predictor Variables

Description Usage Arguments Value Author(s) References See Also Examples

View source: R/wilma.R

Description

Performs supervised clustering of predictor variables for large (microarray gene expression) datasets. Works in a greedy forward strategy and optimizes a combination of the Wilcoxon and Margin statistics for finding the clusters.

Usage

1
wilma(x, y, noc, genes = NULL, flip = TRUE, once.per.clust = FALSE, trace = 0)

Arguments

x

Numeric matrix of explanatory variables (p variables in columns, n cases in rows). For example, these can be microarray gene expression data which should be clustered.

y

Numeric vector of length n containing the class labels of the individuals. These labels have to be coded by 0 and 1.

noc

Integer, the number of clusters that should be searched for on the data.

genes

Defaults to NULL. An optional list (of length noc) of vectors containing the indices (column numbers) of the previously known initial clusters.

flip

Logical, defaults to TRUE. Is indicating whether the clustering should be done with or without sign-flipping.

once.per.clust

Logical, defaults to FALSE. Is indicating if each variable (gene) should only be allowed to enter into each cluster once; equivalently, the cluster mean profile has only weights +/- 1 for each variable.

trace

Integer >= 0; when positive, the output of the internal loops is provided; trace >= 2 provides output even from the internal C routines.

Value

wilma returns an object of class "wilma". The functions print and summary are used to obtain an overview of the clusters that have been found. The function plot yields a two-dimensional projection into the space of the first two clusters that wilma found. The generic function fitted returns the fitted values, these are the cluster representatives. Finally, predict is used for classifying test data on the basis of Wilma's cluster with either the nearest-neighbor-rule, diagonal linear discriminant analysis, logistic regression or aggregated trees.

An object of class "wilma" is a list containing:

clist

A list of length noc, containing integer vectors consisting of the indices (column numbers) of the variables (genes) that have been clustered.

steps

Numerical vector of length noc, showing the number of forward/backward cycles in the fitting process of each cluster.

y

Numeric vector of length n containing the class labels of the individuals. These labels have to be coded by 0 and 1.

x.means

A list of length noc, containing numerical matrices consisting of the cluster representatives after insertion of each variable.

noc

Integer, the number of clusters that has been searched for on the data.

signs

Numerical vector of length p, saying whether the ith variable (gene) should be sign-flipped (-1) or not (+1).

Author(s)

Marcel Dettling, dettling@stat.math.ethz.ch

References

Marcel Dettling (2002) Supervised Clustering of Genes, see https://stat.ethz.ch/~dettling/supercluster.html

Marcel Dettling and Peter Bühlmann (2002). Supervised Clustering of Genes. Genome Biology, 3(12): research0069.1-0069.15, doi: 10.1186/gb-2002-3-12-research0069 .

Marcel Dettling and Peter Bühlmann (2004). Finding Predictive Gene Groups from Microarray Data. Journal of Multivariate Analysis 90, 106–131, doi: 10.1016/j.jmva.2004.02.012 .

See Also

score, margin, and for a newer methodology, pelora.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
## Working with a "real" microarray dataset
data(leukemia, package="supclust")

## Generating random test data: 3 observations and 250 variables (genes)
set.seed(724)
xN <- matrix(rnorm(750), nrow = 3, ncol = 250)

## Fitting Wilma
fit  <- wilma(leukemia.x, leukemia.y, noc = 3, trace = 1)

## Working with the output
fit
summary(fit)
plot(fit)
fitted(fit)

## Fitted values and class predictions for the training data
predict(fit, type = "cla")
predict(fit, type = "fitt")

## Predicting fitted values and class labels for test data
predict(fit, newdata = xN)
predict(fit, newdata = xN, type = "cla", classifier = "nnr", noc = c(1,2,3))
predict(fit, newdata = xN, type = "cla", classifier = "dlda", noc = c(1,3))
predict(fit, newdata = xN, type = "cla", classifier = "logreg")
predict(fit, newdata = xN, type = "cla", classifier = "aggtrees")

Example output

Cluster 1
----------

Accepted 
Gen[1] :   174  Score:   0  Margin:  0.402
Gen[2] :    69  Score:   0  Margin:  0.716
Gen[3] :   225  Score:   0  Margin:  0.942
Gen[4] :   216  Score:   0  Margin:  1.025
Gen[5] :   161  Score:   0  Margin:  1.035
 gic size changed from  0  to  5 

Eliminating  -- no reduction --> end{repeat} after  1 step 

Final Cluster 1 
----------------

Gen:   174  Score:   0  Margin:  0.402
Gen:    69  Score:   0  Margin:  0.716
Gen:   225  Score:   0  Margin:  0.942
Gen:   216  Score:   0  Margin:  1.025
Gen:   161  Score:   0  Margin:  1.035


Cluster 2
----------

Accepted 
Gen[1] :    80  Score:   0  Margin:  0.062
Gen[2] :    66  Score:   0  Margin:  0.228
Gen[3] :   119  Score:   0  Margin:  0.400
Gen[4] :   183  Score:   0  Margin:  0.455
Gen[5] :   202  Score:   0  Margin:  0.546
Gen[6] :   146  Score:   0  Margin:  0.552
Gen[7] :   167  Score:   0  Margin:  0.614
Gen[8] :   219  Score:   0  Margin:  0.650
Gen[9] :   217  Score:   0  Margin:  0.664
Gen[10]:   183  Score:   0  Margin:  0.667
Gen[11]:    82  Score:   0  Margin:  0.701
Gen[12]:   183  Score:   0  Margin:  0.712
Gen[13]:    82  Score:   0  Margin:  0.726
 gic size changed from  0  to  13 

Eliminating  -- no reduction --> end{repeat} after  1 step 

Final Cluster 2 
----------------

Gen:    80  Score:   0  Margin:  0.062
Gen:    66  Score:   0  Margin:  0.228
Gen:   119  Score:   0  Margin:  0.400
Gen:   183  Score:   0  Margin:  0.455
Gen:   202  Score:   0  Margin:  0.546
Gen:   146  Score:   0  Margin:  0.552
Gen:   167  Score:   0  Margin:  0.614
Gen:   219  Score:   0  Margin:  0.650
Gen:   217  Score:   0  Margin:  0.664
Gen:   183  Score:   0  Margin:  0.667
Gen:    82  Score:   0  Margin:  0.701
Gen:   183  Score:   0  Margin:  0.712
Gen:    82  Score:   0  Margin:  0.726


Cluster 3
----------

Accepted 
Gen[1] :    59  Score:   5  Margin: -0.301
Gen[2] :    56  Score:   0  Margin:  0.185
Gen[3] :   126  Score:   0  Margin:  0.366
Gen[4] :   104  Score:   0  Margin:  0.390
Gen[5] :   211  Score:   0  Margin:  0.446
Gen[6] :    79  Score:   0  Margin:  0.528
Gen[7] :   104  Score:   0  Margin:  0.587
 gic size changed from  0  to  7 

Eliminating  -- no reduction --> end{repeat} after  1 step 

Final Cluster 3 
----------------

Gen:    59  Score:   5  Margin: -0.301
Gen:    56  Score:   0  Margin:  0.185
Gen:   126  Score:   0  Margin:  0.366
Gen:   104  Score:   0  Margin:  0.390
Gen:   211  Score:   0  Margin:  0.446
Gen:    79  Score:   0  Margin:  0.528
Gen:   104  Score:   0  Margin:  0.587

Wilma called to fit 3 clusters

Cluster 1 : Contains  5 genes, final score 0, final margin 1.04
Cluster 2 : Contains 13 genes, final score 0, final margin 0.73
Cluster 3 : Contains  7 genes, final score 0, final margin 0.59
'Wilma' object: number of clusters 'noc' = 3 

Final Cluster 1 
----------------

Gen:   174  Score:   0  Margin:  0.402
Gen:    69  Score:   0  Margin:  0.716
Gen:   225  Score:   0  Margin:  0.942
Gen:   216  Score:   0  Margin:  1.025
Gen:   161  Score:   0  Margin:  1.035

Final Cluster 2 
----------------

Gen:    80  Score:   0  Margin:  0.062
Gen:    66  Score:   0  Margin:  0.228
Gen:   119  Score:   0  Margin:  0.400
Gen:   183  Score:   0  Margin:  0.455
Gen:   202  Score:   0  Margin:  0.546
Gen:   146  Score:   0  Margin:  0.552
Gen:   167  Score:   0  Margin:  0.614
Gen:   219  Score:   0  Margin:  0.650
Gen:   217  Score:   0  Margin:  0.664
Gen:   183  Score:   0  Margin:  0.667
Gen:    82  Score:   0  Margin:  0.701
Gen:   183  Score:   0  Margin:  0.712
Gen:    82  Score:   0  Margin:  0.726

Final Cluster 3 
----------------

Gen:    59  Score:   5  Margin: -0.301
Gen:    56  Score:   0  Margin:  0.185
Gen:   126  Score:   0  Margin:  0.366
Gen:   104  Score:   0  Margin:  0.390
Gen:   211  Score:   0  Margin:  0.446
Gen:    79  Score:   0  Margin:  0.528
Gen:   104  Score:   0  Margin:  0.587
   Predictor 1  Predictor 2 Predictor 3
1  -0.46171740 -0.009992927  -0.3834917
2  -0.07873956  0.063261853  -0.4507562
3  -0.98502735  0.115046790  -0.6588318
4  -0.44679460  0.190811888  -0.3708621
5  -0.60165527  0.160506547  -0.4297218
6  -0.13915781 -0.081445994  -0.5412858
7  -0.60926232  0.233106964  -0.5008374
8  -0.40958990  0.230920699  -0.3737456
9  -0.90332225 -0.205838386  -0.6718678
10 -0.15449904  0.090387741  -0.3621221
11 -0.93321219 -0.166396854  -0.5220501
12 -0.24828228  0.254053226  -0.4432451
13 -0.68080799 -0.275165741  -0.5242771
14 -0.26706279 -0.139745615  -0.4901269
15 -0.59354591  0.013901552  -0.5356795
16 -0.31641321 -0.025168422  -0.6646484
17 -0.12774159  0.243830097  -0.3556577
18 -0.49255028 -0.046791465  -0.3959728
19 -0.10804314 -0.057647582  -0.3670498
20 -0.21844937 -0.020541359  -0.7158141
21 -0.38251170 -0.056594477  -0.4981708
22 -0.52243987  0.041268521  -0.4493086
23 -0.09432030  0.156036729  -0.6578364
24 -0.74887144  0.112149259  -0.4000218
25 -0.31088303  0.155117649  -0.6817786
26 -0.37235541 -0.087960565  -0.4800702
27 -0.65676744 -0.033629112  -0.5413959
28  1.06529951  1.000615155   0.3486579
29  1.40225347  1.385903995   0.5340921
30  1.01794839  1.098640932   0.3200740
31  1.12892126  1.025627213   0.2333483
32  1.25679904  0.979789107   0.2635796
33  0.97891459  1.265071950   0.5098338
34  0.95638559  1.137334725   0.4849519
35  0.97667401  0.992184346   0.2582996
36  1.09683760  0.987807416   0.3759882
37  1.30587995  1.347697651   0.9897420
38  1.09675411  1.178182368   0.2318421
 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
   Predictor 1  Predictor 2 Predictor 3
1  -0.46171740 -0.009992927  -0.3834917
2  -0.07873956  0.063261853  -0.4507562
3  -0.98502735  0.115046790  -0.6588318
4  -0.44679460  0.190811888  -0.3708621
5  -0.60165527  0.160506547  -0.4297218
6  -0.13915781 -0.081445994  -0.5412858
7  -0.60926232  0.233106964  -0.5008374
8  -0.40958990  0.230920699  -0.3737456
9  -0.90332225 -0.205838386  -0.6718678
10 -0.15449904  0.090387741  -0.3621221
11 -0.93321219 -0.166396854  -0.5220501
12 -0.24828228  0.254053226  -0.4432451
13 -0.68080799 -0.275165741  -0.5242771
14 -0.26706279 -0.139745615  -0.4901269
15 -0.59354591  0.013901552  -0.5356795
16 -0.31641321 -0.025168422  -0.6646484
17 -0.12774159  0.243830097  -0.3556577
18 -0.49255028 -0.046791465  -0.3959728
19 -0.10804314 -0.057647582  -0.3670498
20 -0.21844937 -0.020541359  -0.7158141
21 -0.38251170 -0.056594477  -0.4981708
22 -0.52243987  0.041268521  -0.4493086
23 -0.09432030  0.156036729  -0.6578364
24 -0.74887144  0.112149259  -0.4000218
25 -0.31088303  0.155117649  -0.6817786
26 -0.37235541 -0.087960565  -0.4800702
27 -0.65676744 -0.033629112  -0.5413959
28  1.06529951  1.000615155   0.3486579
29  1.40225347  1.385903995   0.5340921
30  1.01794839  1.098640932   0.3200740
31  1.12892126  1.025627213   0.2333483
32  1.25679904  0.979789107   0.2635796
33  0.97891459  1.265071950   0.5098338
34  0.95638559  1.137334725   0.4849519
35  0.97667401  0.992184346   0.2582996
36  1.09683760  0.987807416   0.3759882
37  1.30587995  1.347697651   0.9897420
38  1.09675411  1.178182368   0.2318421
  Predictor 1 Predictor 2 Predictor 3
1 -0.08242748  -0.4723073  -0.6131918
2 -0.15667388  -0.5359670  -0.2249549
3 -0.11445314  -0.4265685   0.2245120
  1 Predictors 2 Predictors 3 Predictors
1            0            0            0
2            0            0            0
3            0            0            0
  1 Predictors 3 Predictors
1            0            0
2            0            0
3            0            0
[1] 0 0 0
[1] 0 0 0

supclust documentation built on Sept. 27, 2021, 5:11 p.m.