I'm using conditional logistic regression to model the case-control status of a disease with measurements of certain blood compounds as the main predictors of interest. The objective is to find those compounds that might predict disease onset, or simply identify those whose deregulation is associated with the disease, after adjustment for several biological, lifestyle and technical confounders.

I have about 1000 case-control pairs and 50 measured compounds.

For some of the more weakly detected compounds, measurements are below the level of the instrumental noise, and there is therefore a negative response. Therefore, when they are modelled as a continuous variable (with or without scaling), these compounds are more likely to be spuriously associated with case-control status and give a high odds ratio. I suppose this happens because the negative values are in fact meaningless and introduce unwanted bias.

Secondly, there are a non-negligible number of high outliers, and apart from these the data follow approximately a normal distribution.

How best could I prepare the data for modelling by CLR? Would it be bad practice to set the negatives to zero and log transform the data? Perhaps I should instead compare upper and lower quantiles of the predictor distributions, but would this be possible with conditional logistic regression?

Help would be greatly appreciated.

  • $\begingroup$ Please edit your question to say more about the purpose of your modeling. If it is for predicting case/control status in future cases, an approach other than logistic regression (with its requirement for a linear relationship between the predictor, perhaps transformed, and log-odds of class membership) might be better for dealing with your below-detection and high-outlier cases. Also please include in your editing more about the scope of the study (numbers of cases and controls, numbers of compounds of interest, number of confounders you adjust for). $\endgroup$
    – EdM
    Commented Nov 27, 2019 at 15:14
  • $\begingroup$ I've added detail to the question. My question is specifically how to use conditional logistic regression to achieve this, as I have no option of changing to another method. $\endgroup$
    – Joe
    Commented Nov 27, 2019 at 15:38
  • $\begingroup$ Thanks for the clarifications. Please also say more about how you are using clogit in this study. Are the confounders solely accounted for by the matching, or are they also included as predictors in the model? Are you doing 50 separate analyses (1 per compound) or are you including all compounds in a multiple-regression analysis? $\endgroup$
    – EdM
    Commented Nov 27, 2019 at 18:31
  • $\begingroup$ Yes, the subjects are matched on a handful of variables, such as age at diagnosis. But most are included in the model. And yes it is 50 separate analyses, applying this complex model to each of the compounds in turn. $\endgroup$
    – Joe
    Commented Nov 27, 2019 at 23:36

1 Answer 1


Handling this type of data as predictors in any regression is tricky. However you treat the below-detection or extreme-outlier cases, you still are faced with the requirement that the outcome in the appropriate scale (log-odds of disease status in this case) must be linearly related to the predictor value (perhaps after some transformation). Furthermore, your approach might be leading you to miss some important relationships in your data.

For the cases below detection limit, it's not clear why a lower detection limit is providing negative values. One way to proceed would be to set such undetectable values to the lower limit of detection.

For the extreme-outlier cases, you should first determine whether these are technical errors (in which case they should be removed or handled by imputation) or if they are cases with truly high values (in which case you need to keep them).

The problems with linearity might be minimized by taking advantage of your large number of cases. Instead of simply using the untransformed predictor values or simple transformations (e.g., logarithmic) of them, use spline terms in the regression to find an empirical transformation that fits well. The rcs() function in the R rms package provides that functionality in a way that you can incorporate into your analysis.

I question, however, the apparent restriction of your approach to 50 separate conditional logistic regressions, as indicated in a comment. That approach does not allow you to evaluate how values of any single measured compound are related to disease status when the values of the other compounds are also taken into account, whether as independent predictors or in interactions with the values of that compound. For example, a high level of Compound A might not matter for disease status unless Compound B is also high. Your approach will miss that type of situation. Also, you will have to decide how to handle the problem of multiple comparisons when you are evaluating so many models at once on the same data set.

With the size of your data set you might be able to incorporate all 50 of your compounds into a single regression model, at least without interactions, while avoiding overfitting. (I would further recommend a regularization approach like LASSO as a start toward predictor selection without overfitting, but I'm not sure how readily standard implementations of LASSO would work with conditional logistic regression as implemented via Cox-type models in clogit().)

In what seems to be still the exploratory phase of your study, you might be better off using a different approach from conditional logistic regression. Your data seem nicely suited to initial analysis with boosted classification trees. That analysis requires no assumptions about the shape of the relationship between your predictor values and class membership, and a suitable choice of the size of the trees can allow for incorporation of multi-way interactions among the predictors. Implementations of this analysis can provide information about relative importance about predictors, which you could use to help focus on a subset of your compounds in future work. I don't know whether this analysis can take your matching directly into account, but I suspect that you can get useful results this way in any event.

  • $\begingroup$ I should also have mentioned that I will also perform a multivariate analysis of the data, but in my field risk estimates for individual compounds are expected. In any case, thanks for this input which helps make me aware of the various possibilities. $\endgroup$
    – Joe
    Commented Dec 16, 2019 at 10:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.