La corrélation de deux tableaux en C#
Avoir deux tableaux de valeurs doubles, je veux calculer le coefficient de corrélation (simple double de la valeur, tout comme la CORREL fonction dans MS Excel). Est-il une simple ligne de solution en C#?
J'ai déjà découvert les mathématiques lib appelé Méta-objets Numériques. Selon cette SORTE de question, il devrait faire le travail. Ici est docs pour la Méta-Numerics méthode de corrélation, dont je n'ai pas eu.
Pourrait pls quelqu'un me fournir un simple extrait de code ou un exemple comment utiliser la bibliothèque?
Remarque: À la fin, j'ai été contraints à utiliser l'une des implémentations personnalisées.
Mais si quelqu'un a la lecture de cette question, sait bien, bien documenté C#
bibliothèque de mathématiques/cadre pour ce faire, n'hésitez pas à poster un lien dans
réponse.
Il y a une bibliothèque à partir de ta-lib.org qui a "CORREL" de la fonction. Il est très facile à utiliser et vous donne le même résultat que excel. Elle retourne un tableau de résultats au lieu d'une valeur unique, tout comme Excel.
OriginalL'auteur teejay | 2013-07-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir les valeurs dans des listes distinctes de même indice et l'utilisation d'un simple
Zip
.Un deuxième façon est d'écrire votre propre mise en œuvre (le mien n'est pas optimisé pour la vitesse):
Utilisation:
Un autre moyen est d'utiliser la fonction Excel directement:
Oui, je n'ai pas vu les paramètres de type
int
. Si vous avez besoin de travailler avec des doubles alors vous pouvez avoir besoin d'écrire votre propre méthode d'extension.Si vous regardez le source pour la classe que vous verrez que c'est à l'aide d'une matrice pour calculer le Coefficient de Corrélation, de sorte que vous pouvez probablement le mimer.
Vérifier mon montage
Thank u pour votre efford, j'apprécie beaucoup! A été pensée sur le code personnalisé & excel api de trop, mais de toute façon il semblait beaucoup trop de travail pour une tâche commune 🙂
OriginalL'auteur
Math.NET Numerics est bien documentée de la bibliothèque math qui contient une Corrélation classe. Il calcule Pearson et de Spearman classé corrélations: http://numerics.mathdotnet.com/api/MathNet.Numerics.Statistics/Correlation.htm
La bibliothèque est disponible sous le très libéral MIT/X11 licence. De l'utiliser pour calculer un coefficient de corrélation est aussi facile comme suit:
Bonne chance!
Comme une mise à jour, la version 3.5 de Math.NET Numerics ajouté une méthode de leur Corrélation classe pour calculer pondérée de corrélation de Pearson.
OriginalL'auteur
Afin de calculer Pearson produit coefficient de corrélation moment
http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient
Vous pouvez utiliser ce code simple:
OriginalL'auteur
Si vous ne souhaitez pas utiliser une bibliothèque tierce, vous pouvez utiliser la méthode de ce post (poster le code ici pour la sauvegarde).
OriginalL'auteur
Dans mes tests, à la fois @Dimitri Bychenko et @keyboardP du code offres ci-dessus a permis, dans l'ensemble, les mêmes corrélations que Microsoft Excel sur une poignée de manuel des tests que j'ai fait, et n'a pas besoin de bibliothèques externes.
par exemple, l'Exécution de cette fois (les données de cette course listés en bas):
@Dimitri Bychenko: -0.00418479432051121
@keyboardP:______ -0.00418479432051131
MS Excel:_________-0.004184794
Ici est un harnais de test:
De données pour l'exemple des nombres ci-dessus:
OriginalL'auteur