Si j'ai une matrice:calculer la corrélation entre plusieurs séries temporelles
data = rand(365,5);
Quelle est la manière la plus appropriée de calcul de la corrélation entre chaque colonne et la moyenne des colonnes. Par exemple, pour la première colonne:
R = nonzeros(tril(corrcoef(data(:,1),mean(data(:,2:end)')'),-1));
Comment pourrais-je répéter cette procédure pour que j'ai des valeurs 5 corrélation dire pour chaque série?
EDIT:
Merci pour les commentaires. Cela peut également se faire en une ligne:
R = arrayfun(@(x)nonzeros(tril(corrcoef(data(:,x),...
mean(data(:,setdiff(1:size(data,2),x))')'),-1)),1:size(data,2));
pour ceux qui souhaitent éviter les boucles. Bien que dans ce cas les méthodes montrées ci-dessous soient meilleures en raison de leur lisibilité.
Est-ce que 'corrcoef (données)' fonctionne pas? Il devrait retourner une matrice 5x5 contenant les corrélations entre toutes les combinaisons possibles des colonnes. – slayton
Cela fonctionne tout simplement pas pour ce dont j'ai besoin. Je veux calculer la corrélation entre chaque colonne et la moyenne des autres colonnes pas la corrélation entre chaque colonne – KatyB