Étant donné une série de nombres pour les événements X et Y, calculez le coefficient de corrélation de Pearson. La probabilité de chaque événement est égale, de sorte que les valeurs attendues peuvent être calculées en additionnant simplement chaque série et en divisant par le nombre d'essais.
Contribution
1 6.86
2 5.92
3 6.08
4 8.34
5 8.7
6 8.16
7 8.22
8 7.68
9 12.04
10 8.6
11 10.96
Production
0.769
Le code le plus court gagne. L'entrée peut se faire par stdin ou arg. La sortie se fera par sortie standard.
Modifier: les fonctions intégrées ne doivent pas être autorisées (c'est-à-dire la valeur attendue calculée, la variance, l'écart, etc.) pour permettre une plus grande diversité de solutions. Cependant, n'hésitez pas à démontrer un langage qui convient bien à la tâche à l'aide de builtins (pour exposition).
Basé sur l'idée de David pour l'entrée pour Mathematica (86 caractères utilisant la moyenne intégrée)
m=Mean;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/Sqrt[(m@(x^2)-m@x^2)(m@(y^2)-m@y^2)]
m = Mean;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y) - m@x*m@y)/((m@(x^2) - m@x^2)(m@(y^2) - m@y^2))^.5
Plinthe en utilisant notre propre moyenne (101 caractères)
m=Total[#]/Length[#]&;x=d[[All,1]];y=d[[All,2]];(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
m = Total[#]/Length[#]&;
x = d[[All,1]];
y = d[[All,2]];
(m@(x*y)-m@x*m@y)/((m@(x^2)-m@x^2)(m@(y^2)-m@y^2))^.5
la source
m=Total@#/Length@#&
Réponses:
PHP 144 octets
Prend l'entrée de STDIN, dans le format fourni dans le message d'origine. Résultat:
Utilisation du produit vectoriel vectoriel:
où sont les vecteurs d'entrée ajustés à la baisse par et respectivement.
Perl 112 octets
Même alg, langue différente. Dans les deux cas, de nouvelles lignes ont été ajoutées pour la «lisibilité» et ne sont pas nécessaires. La seule différence notable de longueur est la première ligne: l'analyse de l'entrée.
la source
Mathematica 34 octets
Voici quelques façons d'obtenir la corrélation des moments du produit Pearson. Ils produisent tous le même résultat. Du Dr belisarius: 34 octets
Fonction de corrélation intégrée I : 15 caractères
Cela suppose que
x
ety
sont des listes correspondant à chaque variable.Fonction de corrélation II intégrée : 31 caractères
Cela suppose que d est une liste de paires ordonnées.
L'utilisation de
;;
pourAll
merci à A Simmons.S'appuyant sur la fonction d'écart type :
118115 caractèresLa corrélation peut être déterminée par:
Corrélation roulée à la main : 119 caractères
En supposant
x
ety
sont des listes ...la source
s
pourSum
./(n-1)
de la solution précédente. Maintenant corrigé.Q
En supposant que les builtins sont autorisés et que les données x, y sont des vecteurs séparés (7 caractères):
Si les données sont stockées sous forme de paires ordonnées, comme indiqué par David Carraher, nous obtenons (pour 12 caractères):
la source
MATLAB / Octave
À des fins de démonstration des éléments intégrés uniquement:
la source
APL 57
Utilisation de l'approche du produit scalaire:
la source
J,
3027 octetsCette fois comme une fonction prenant deux arguments. Utilise la formule vectorielle pour le calculer.
Usage
Explication
Prend deux listes a et b comme arguments séparés.
la source
x
ety
dans la ligne finale en les assemblant avec,.
pour vous donner((m@:*/@|:-*/@m)%%:@*/@(m@:*:-*:@m))x,.y
+/ .*&(%+/&.:*:)&(-+/%#)
reconnu par Oleg sur les J forums .Python 3, 140 octets
2 fonctions d'assistance (
E
etS
, pour la valeur attendue et l'écart type, respectivement) sont définies. L'entrée est attendue comme 2 itérables (listes, tuples, etc.). Essayez-le en ligne .la source
Oracle SQL 11.2, 152 octets (pour exposition)
Non golfé
La chaîne d'entrée doit utiliser le même séparateur décimal que la base de données.
la source
Python 3 avec SciPy, 52 octets (pour exposition)
Une fonction anonyme qui prend l'entrée des deux ensembles de données sous forme de listes
x
ety
, et retourne le coefficient de corrélation.Comment ça fonctionne
Il ne se passe pas grand-chose ici; SciPy a une fonction intégrée qui renvoie à la fois le coefficient et la valeur de p pour tester la non-corrélation, de sorte que la fonction passe simplement les ensembles de données à cela et renvoie le premier élément du
(coefficient, p-value)
tuple renvoyé par la fonction intégrée.Essayez-le sur Ideone
la source