How to get the loading/tangent vector for a selected time point?In nonlinear PCA, loading-like values are time dependent. At different time
steps, different variables (e.g. genes) will have a strong impact due to increasing/decreasing activity. Instead of a single loading vector like in standard linear PCA, in nonlinear PCA each time point along the curve has it's own specific loading vector, given by the tangent on the time curve.
How to get the direction of the curve at time t ? [pc,net]=nlpca(data, 1) % meaningful only for extracting one (k=1) nonlinear component (time series) % define 100 points (positions) along the curve (first component) [data,dz] = nlpca_get_data(net,pc); % get data and gradient/tangent/loadings dz for all component values 'pc't = 5; % select a (time) point of interestpc(:,t); % get component value (PC score) at time tv = dz(:,t); % get tangent/gradient vector v, representing the change over time of all original variables. The largest absolute values tell you which variables have the strongest dynamic (highest change) at the selected point. This can be used to rank the variables by importance: highest impact, reaction, or response at this time (for example: find the genes of highest increase or decrease in activity at time t).plot selected point (to see the position p of time t on the curve) nlpca_plot(net); % plot data and component curvep = data(:,t) % get position in original data spacehold on; plot(p(1,:),p(2,:),'kx','MarkerSize',20,'LineWidth',3) ; hold off; see also: page 8 of http://www.matthias-scholz.de/scholz_circularPCA_BIRD2007.pdf page 63, Fig 2.11D in http://pca.narod.ru/2MainGorbanKeglWunschZin.pdf |
FAQ >