J'ai des problèmes pour utiliser les fonctions cor()
et cor.test()
.
J'ai juste deux matrices (seulement des valeurs numériques, et le même nombre de lignes et de colonnes) et je veux avoir le numéro de corrélation et la valeur p correspondante.
Lorsque j'utilise, cor(matrix1, matrix2)
j'obtiens les coefficients de corrélation pour toutes les cellules. Je veux juste un seul numéro à la suite de cor.
De plus, lorsque je fais, cor.test(matrix1, matrix2)
j'obtiens l'erreur suivante
Error in cor.test.default(matrix1, matrix2) : 'x' must be a numeric vector
Comment obtenir des valeurs de p pour les matrices?
Vous trouverez les tableaux simples que je veux corréler ici:
http://dl.dropbox.com/u/3288659/table_exp1_offline_MEANS.csv
http://dl.dropbox.com/u/3288659/table_exp2_offline_MEANS.csv
r
correlation
L_T
la source
la source
cor(as.vector(matrix1), as.vector(matrix2))
?Réponses:
Si vous souhaitez simplement calculer la corrélation entre les deux ensembles de valeurs, en ignorant la structure matricielle, vous pouvez convertir les matrices en vecteurs à l'aide de
c()
. Ensuite, votre corrélation est calculée parcor(c(matrix1), c(matrix2))
.la source
read.csv
que vous avez probablement utilisé, renvoie undata.frame
qui n'est pas unmatrix
. Vous devez donc le convertir en unmatrix
avecas.matrix
avant d'en faire un long vecteur avecc()
et de donner les résultatscor
. Le voici en une seule ligne:cor(c(as.matrix(matrix1)), c(as.matrix(matrix2)))
Vous n'avez rien dit sur ce que sont réellement vos données. Néanmoins...
Supposons que vos matrices comportent des colonnes représentant deux ensembles de variables (différentes) et (le même nombre de) lignes représentant les observations.
Analyse de corrélation canonique
Dans cette situation, une analyse de corrélation potentiellement plus intéressante et structurée consiste à trouver les corrélations canoniques . Cela suppose que vous souhaitez résumer la relation entre les deux ensembles de variables en termes de corrélation (s) entre les combinaisons linéaires de
matrix1
colonnes et les combinaisons linéaires dematrix2
Colonnes. Et vous voudriez le faire si vous soupçonniez qu'il y avait un espace de petite dimensionnalité, peut-être même 1, qui révélerait une structure de corrélation sous-jacente à travers les cas qui est obscurcie par leur réalisation dans les systèmes de coordonnées définis par variables actuels. Par conséquent, la valeur de cette corrélation (canonique) résumerait, en un sens, une relation linéaire multivariée entre les deux matrices. En effet, bien que le CCA fonctionne pour les matrices avec différents nombres de variables, il se réduit à la corrélation de Pearson lorsque chaque «matrice» n'est qu'une seule colonne.la mise en oeuvre
L'analyse de corrélation canonique est décrite dans la plupart des textes d'analyse multivariée, ce qui est peut-être plus utile si vous êtes satisfait de l'algèbre matricielle jusqu'à l'analyse propre. Il est implémenté comme
cancor
dans la base R et également dans le package CCA qui est décrit ici .la source
cancor(matrix1, matrix2)
.matrix1
A i j i jSi vous interprétez vaguement la corrélation comme signifiant similitude, vous pouvez utiliser une définition basée sur le produit interne, telle que:
Avec vos données, cela donne 0,996672.
L'alternative, si la structure matricielle n'est pas importante, consiste simplement à aplatir les matrices en vecteurs et à utiliser la mesure de corrélation de votre choix. Comme je ne connais pas la distribution de vos données, j'ai utilisé le produit scalaire pour obtenir 0,976.
De toute façon, il semble que vos données soient fortement corrélées.
la source