Le Coefficient de Pearson et de la Covariance de calcul sous Matlab
Je veux calculer Coefficient de corrélation de Pearson dans Matlab (sans l'aide de Matlab corr
fonction).
Simplement, j'ai deux vecteurs A et B (chacun d'eux est 1x100) et je suis en train de calculer le coefficient de Pearson comme ceci:
P = cov(x, y)/std(x, 1)std(y,1)
Je suis à l'aide de Matlab cov
et std
fonctions. Ce que je ne comprends pas est, les cov fonction me renvoie une matrice carrée comme ceci:
corrAB =
0.8000 0.2000
0.2000 4.8000
Mais je m'attends à un numéro unique comme la covariance donc, je peux venir avec un seul P (coefficient de pearson). Quel est le point que je suis absent?
Voulez-vous dire
vous avez raison, j'ai mis à jour la question. Est la "hors de la diagonale" dans l'exemple ci-dessus sont 0.2000 et 0.2000? Dois-je donc faire un autre calcul avec eux ou tout simplement aller avec 0,2?
Tu t'en es exemple, 0,2 est hors de la diagonale. Cependant, l'0,8 et 4.8 devrait à la fois être 1. Si quelque chose est incorrect avec votre calc. Il suffit de ne corr(x,y) pour vérifier. Lire l'aider à comprendre pourquoi il retourne une matrice. C'était inattendu pour moi la première fois également.
Mes tableaux sont comme suit: x =[4 5 5 3 5], y = [4 4 0 0 0]. Peut-être à cause de cela, il y a des valeurs comme 4.8. Je vais lire les docs, merci.
les diagonales n'a pas besoin d'être 1. La sera 1 que si les variances des deux échantillons sont exactement les mêmes.
P = cov(x,y)/sqrt(var(x)*var(y));
? La diagonale doit être de 1. Le hors diagonale est ce que vous voulez.vous avez raison, j'ai mis à jour la question. Est la "hors de la diagonale" dans l'exemple ci-dessus sont 0.2000 et 0.2000? Dois-je donc faire un autre calcul avec eux ou tout simplement aller avec 0,2?
Tu t'en es exemple, 0,2 est hors de la diagonale. Cependant, l'0,8 et 4.8 devrait à la fois être 1. Si quelque chose est incorrect avec votre calc. Il suffit de ne corr(x,y) pour vérifier. Lire l'aider à comprendre pourquoi il retourne une matrice. C'était inattendu pour moi la première fois également.
Mes tableaux sont comme suit: x =[4 5 5 3 5], y = [4 4 0 0 0]. Peut-être à cause de cela, il y a des valeurs comme 4.8. Je vais lire les docs, merci.
les diagonales n'a pas besoin d'être 1. La sera 1 que si les variances des deux échantillons sont exactement les mêmes.
OriginalL'auteur Ramala | 2011-04-13
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes juste confondu avec la covariance et de la matrice de covariance, et la notation mathématique et MATLAB la fonction d'entrées ne sont similaires. En mathématiques,
cov(x,y)
signifie la la covariance des deux variablesx
ety
. Dans MATLAB,cov(x,y)
calcule la matrice de covariance dex
ety
. Icicov
est une fonction etx
ety
sont les entrées.Juste pour le rendre plus clair, permettez-moi de désigner la covariance par
C
. MATLABcov(x,y)
renvoie une matrice de la formeComme RichC souligné, vous avez besoin de la hors-diagonales,
C_xy
(notez queC_xy=C_yx
pour les variables réellesx
ety
). Un script MATLAB qui vous donne le coefficient de Pearson pour les deux variablesx
ety
, est:OriginalL'auteur abcd
De la documentation:
utilisation:
Désolé, destiné à ajouter une racine carrée au dénominateur. modifier.
OriginalL'auteur