This post presumes you are familiar with PCA.
Consider the following experiment. First we generate a random vector (signal) as a sequence of random 5-element repeats. That is, something like
(0.5, 0.5, 0.5, 0.5, 0.5, 0.9, 0.9, 0,9, 0.9, 0,9, 0.2, 0.2, 0.2, 0.2, 0.2, ... etc ... )
In R we could generate it like that:
num_steps = 50
step_length = 5;
initial_vector = c();
for (i in 1:num_steps) {
initial_vector = c(initial_vector, rep(runif(1), step_length));
}
Here's a visual depiction of a possible resulting vector:
Next, we shall create a dataset, where each element will be a randomly shifted copy of this vector:
library(magic) # Necessary for the shift() function
dataset = c()
for (i in 1:1000) {
shift_by = floor(runif(1)*num_steps*step_length) # Pick a random shift
new_instance = shift(initial_vector, shift_by) # Generate a shifted instance
dataset = rbind(dataset, new_instance); # Append to data
}
Finally, let's apply Principal Component Analysis to this dataset:
pca = prcomp(dataset)
Question - how do the top principal components look like? Guess first, then read below for the correct answer.






