calculate the correlation of a number of time series
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
If I have a matrix:
data = rand(365,5);
What is the most appropriate way of calculating the correlation between each column and the mean of the remaining columns. For example, for the first column:
R = nonzeros(tril(corrcoef(data(:,1),mean(data(:,2:end)')'),-1));
How could I repeat this procedure so that I have 5 correlation values i.e. for each series?
0 comentarios
Respuesta aceptada
Andrei Bobrov
el 20 de Jul. de 2012
Editada: Andrei Bobrov
el 20 de Jul. de 2012
R = arrayfun(@(x)nonzeros(tril(corrcoef(data(:,x),mean(data(:,setdiff(1:size(data,2),x))')'),-1)),1:size(data,2));
or
for k = size(data,2):-1:1
R(k) = nonzeros(tril(corrcoef(data(:,k),mean(data(:,[1:k-1,k+1:end]),2)),-1));
end
or
for k = size(data,2):-1:1
p = corrcoef(data(:,k),mean(data(:,[1:k-1,k+1:end]),2));
R(k) = p(2);
end
0 comentarios
Más respuestas (2)
bym
el 19 de Jul. de 2012
Don't know what you are trying to accomplish, but here is one way
clc; clear
data = rand(365,5);
for k = 1:5
r = corrcoef(data(:,1),mean(data(:,2:end),2));
R(k) = r(2);
data = circshift(data,-1);
end
R
1 comentario
Teja Muppirala
el 20 de Jul. de 2012
diag( corr( bsxfun(@minus, sum(data,2), data), data) )
1 comentario
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!