From an ecological experiment, I have time series data with 10 time points where I measured around 100 variables (shape and texture traits of algae cells) across 4 treatments (A-D). Now I would like to do a PCA (or some other form of ordination) to visualize treatment specific change in traits over time. As shown in the cartoon below, in timepoint 1 all treatments would be similar in traits (hence proximity in PC space), whereas over the course of the experiment they would diverge (to different places in PC space at timepoint 10):

enter image description here

Many of those 100 traits are correlated, and not just pairwise, but many among many (multicollinearity). I would like to boil the dataset down to the minimal amount of variables with which I can represent the PC space of all 100 variables - i.e., plotting PCs of those traits vs. all 100 variables would look similar.

My problem is that I don't think the typical methods for variable selection prior to PCA work: because there are so trait variables and so many correlations among them, most explain only around 2% of the variance. I have done correlograms and manually removed some variables, but this seems arbitrary and unsystematic.

My question is whether there is some sort of automatic solution for variable selection to identify variables of importance that account for most of the variation in the data structure?

EDIT: Based on the comments I am providing some more information: a PCA on the entire dataset (all timepoints and treatments) indicates that 50% of variation are explained by PC1. My goal would be to have the selected variables explain 90% of the variation and that this would require 11 PCs (90% is arbitrary, but I don't know where do make a cutoff given that there is no clear break):

enter image description here

Instead of dropping variables, another, potentially more sensible approach could be to construct new hyper-variables based how clustered the original ones are in the data space (irrespective of treatments and timepoints). This would eliminate multicollinearity, and make the proposed ordination/visualization via PCA more meaningful, but I don't know where to start.

  • $\begingroup$ It's difficult to determine what you're describing, because it seems you are referring to the dependent variables as "features" and are somehow using them to "explain variance," but this language is reserved for independent variables (and makes little or no sense for dependent ones). Moreover, it's not part of the concept of dependent variables to be able to "remove" them: the whole point is to fit or predict all of them. Could you clarify what you're trying to do? $\endgroup$
    – whuber
    Sep 24, 2021 at 14:21
  • $\begingroup$ you could try a quotient space with the relation column1 ~ column 2 iff corr(column1,column2) > THRESHOLD_VALUE. then select only one feature per classs $\endgroup$
    – L F
    Sep 29, 2021 at 17:05
  • $\begingroup$ @whuber I modified the question: while these are technically features, and I use them to explain variance in overall feature/trait space, this probably led to false associations. $\endgroup$
    – mluerig
    Sep 30, 2021 at 9:12
  • $\begingroup$ @LuisFelipe this won't work because there are so many traits correlated with many other traits, i.e., column1 could be correlated with column2, but also with column 12 and column77. I am afraid to lose higher level interactions among my variables like that $\endgroup$
    – mluerig
    Sep 30, 2021 at 9:13
  • 1
    $\begingroup$ Okay, just give a few hours because in my timezone is 3:57 am :) $\endgroup$
    – L F
    Sep 30, 2021 at 11:57


Your Answer

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