comment interpréter numpy.corrélation et de numpy.corrcoef valeurs?
J'ai deux tableaux 1D et je veux voir leurs inter-relations. Quelle procédure dois-je utiliser numpy? Je suis à l'aide de numpy.corrcoef(arrayA, arrayB)
et numpy.correlate(arrayA, arrayB)
et les deux sont de donner quelques résultats que je ne suis pas en mesure de comprendre ou de comprendre. Quelqu'un peut-il s'il vous plaît faire la lumière sur la manière de comprendre et d'interpréter ces résultats numériques (de préférence à l'aide d'un exemple)? Merci.
Vous devez vous connecter pour publier un commentaire.
numpy.correlate
retourne simplement la corrélation croisée de deux vecteurs.si vous avez besoin de comprendre la corrélation croisée, puis démarrer avec http://en.wikipedia.org/wiki/Cross-correlation.
Un bon exemple peut être vu en regardant la fonction d'autocorrélation (un vecteur de cross-corrélation avec lui-même):
Ce sera le retour d'un peigne/shah fonction avec un maximum quand les deux ensembles de données se chevauchent. Comme c'est une autocorrélation il n'y aura pas de "lag" entre les deux signaux d'entrée. Le maximum de la corrélation est donc vecteur.taille-1.
si vous voulez seulement la valeur de la corrélation pour les données qui se chevauchent, vous pouvez utiliser
mode='valid'
.Je ne peux que commenter
numpy.correlate
pour le moment. C'est un outil puissant. Je l'ai utilisé à deux fins. La première est de trouver un motif à l'intérieur d'un autre motif:La deuxième utilisation, je l'ai utilisé pour (et comment interpréter le résultat) est la fréquence de détection:
Trouver l'index de la deuxième sommets. À partir de cela, vous pouvez travailler en arrière pour trouver la fréquence.
Si vous êtes perplexe quant à l'issue de la np.corrélation de int vecteurs, il peut être dû à débordement:
Cet exemple également explaines comment corréler les œuvres:
30 = 4*4 + 3*3 + 2*2 + 1*1
20 = 4*3 + 3*2 + 2*1 + 1*0
11 = 4*2 + 3*1 + 2*0 + 1*0
...
40000 = 4*10000 + 3*0 + 2*0 + 1*0
montre jusqu'à ce que 40000 - 2**16 = -25536