I have genomic data (miRNA) that is high dimensional: $198$ samples and $1584$ features.

  Index     miRNA1          miRNA2     ....    miRNA1500            Type
   1       48421.52        24242.14    ....    0                 Tumor
   2       2757.96         28965.2     ....    0                 Healthy
   3       4300.34         52565.07    ....    6981.41           Healthy
           ...             ...         ....    ...
   198     23854.73        24722.28    ....    0                 Tumor

$58.5\%$ of these features have more than $90\%$ of values being a $0$.

At the beginning I just wanted to cut all of those so that when I put the remaining ones into SVM, LASSO, Random forest or another model that can perform feature selection it will be less computationally expensive. However, I browsed some of these features and it turns out that even though they are present in only around $10$ samples from $200$, they seem pretty informative since the proportions are for example $9$ samples classified as Tumor and $1$ as Healthy which can indicate that although most of samples have a $0$ value, if the value is present then it might be an indication for Tumor.

In the end I only want to retain max $20$ features, so these $0$-valued features will probably turn out to not score top20 anyway and I can just cut them. However there might be some hidden information, for example for every $0$ value in miRNA200, miRNA201 must have a non-$0$ value if a person is healthy and such information would be lost.

In short: What are the approaches for cutting out such features that are present in small amount of samples?

quick edit: What about features that only have $1$ or $2$ non-$0$ values? Can we just cut them? What would be a threshold of non-$0$ values to decide which features can be cut automatically and which not?

edit2: The data is most likely not missing completely at random, therefore removing anything could introduce some bias. However I assume this bias would be of marginal importance in comparison to bias introduced by further operations (proper features selection techniques)?

  • 1
    $\begingroup$ First you need to determine whether you should do that, if the data are MCAR (which I doubt) then maybe you could, otherwise dropping these could lead you to false conclusions. $\endgroup$ – user2974951 Sep 4 '19 at 12:56
  • $\begingroup$ @user2974951 Yes, it's most likely not MCAR. It's either MAT or depends on unobserved predictors, so the missingness would not be correlated with another miRNAs but other factors. I don't have enough domain knowledge to judge that (don't know if that's already even discovered) $\endgroup$ – Alex Sep 4 '19 at 13:04

If your missing values are MCAR you could simply drop them (and probably lose some information this way) or impute them (multiple times) and get pooled results.

I suspect these values are not MCAR, in this case it's significantly more complicated, especially if you do not have any domain knowledge about the underlying process.

Personally I would not drop them, unless they really pose computational problems. I would try using a method that can deal with missing values internally (see for ex. xgboost).

Otherwise, faced with hard decisions and no readily available solutions, you could simply leave them as is, at 0, representing below (or above) a detectable threshold. You could also try imputing them in various ways (mean, median) to check how the results change (some sort of sensitivity analysis). If the results change significantly then it is possible that these variables are quite important. If the results do not change, then they may be useless.

If a variable only has 1 or 2 non-missing values then you can safely drop them, since they won't provide much of any information. There is no hard threshold, so you would have to use your own judgement.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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