3 years after, I answer to my own question.
For me, the main difference is in what is the output of the models in the different problems. In ordinal regression, the task is to predict a label for a given sample, hence the output of a prediction is a label (as is the case for example in multiclass classification). On the other hand, in the problem of learning to rank, the output is an order of a sequence of samples. That is, a the output of a ranking model can be seen as a permutation that makes the samples to have labels as ordered as possible. Hence, unlike the ordinal regression model, the ranking algorithm is not able to predict a class label. Because of this, the input of a ranking model does not need to specify class labels, but only a partial order between the samples (see e.g. [0] for an application of this). In this sense, ranking is an easier problem than ordinal regression: from the numerical labels you can construct an order, but not necessarily the other way round.
This is better explained with an example. Suppose that we have the following pairs of (sample, label): $\{(x_1, 1), (x_2, 2), (x_3, 2)\}$. Given this input, a ranking model will predict an order of this sequence of samples. For example, for a ranking algorithms, the permutations $(1, 2, 3) \to (1, 2, 3)$ and $(1, 2, 3) \to (1, 3, 2)$ are predictions with perfect score since the labels of both sequences $\{(x_1, 1), (x_2, 2), (x_3, 2)\}$ and $\{(x_1, 1), (x_3, 2), (x_2, 2)\}$ are ordered. On the other hand, an ordinal regression would predict a label for each of the samples, and in this case the prediction (1, 2, 2) would give a perfect score, but not (1, 2, 3) or (1, 3, 2).
[0] Optimizing Search Engines using Clickthrough Data
Thorsten Joachims
Best Answer
As a follow-up to my comment, if
independence.test
refers tocoin::independence_test
, then you can reproduce a Cochrane and Armitage trend test, as it is used in GWAS analysis, as follows:This is a conditional version of the CATT. About scoring of the ordinal variable (here, the frequency of the minor allele denoted by the letter
C
), you can play with thescores=
arguments ofindependence_test()
in order to reflect the model you want to test (the above result is for a log-additive model).There are five different genetic models that are generally considered in GWAS, and they reflect how genotypes might be collapsed: codominant (T/T (92) C/T (53) C/C (12), yielding the usual $\chi^2(2)$ association test), dominant (T/T (92) vs. C/T-C/C (65)), recessive (T/T-C/T (145) vs. C/C (12)), overdominant (T/T-C/C (104) vs. C/T (53)) and log-additive (0 (92) < 1 (53) < 2 (12)). Note that genotype recoding is readily available in inheritance functions from the SNPassoc package. The "scores" should reflect these collapsing schemes.
Following Agresti (CDA, 2002, p. 182), CATT is computed as $n\cdot r^2$, where $r$ stands for the linear correlation between the numerical scores and the binary outcome (case/control), that is
There also exist various built-in CATT functions in R/Bioconductor ecosystem for GWAS, e.g.
CATT()
from Rassoc, e.g.(additive/multiplicative)
single.snp.tests()
(see the vignette); please note that the default mode of inheritance is the codominant/additive effect.Finally, here are two references that discuss the choice of scoring scheme depending on the genetic model under consideration, and some issues with power/robustness
See also the GeneticsDesign (bioc) package for power calculation with linear trend tests.