[PYTHON] Statistiques de probabilité dans Pokemon (test de non-corrélation) - Y a-t-il une corrélation entre la PC, le poids et la taille de Koiking?

pokemon go

Aperçu

Vainqueur du Buzzword Award 2016 ** Pokemon GO **: exclamation: Avez-vous tous attrapé et joué beaucoup de Pokémon: question:

Au fait, dans Pokemon GO,

** Il existe différentes valeurs de caractéristiques = valeurs individuelles (valeurs différentes pour chaque individu) ** pour chaque Pokémon capturé. Je me suis toujours demandé comment ces valeurs individuelles sont distribuées, ou quelle est la relation entre elles. ** ** Eh bien, je voulais juste savoir (transpirer)

Par conséquent, dans cet article, ** En utilisant les données de valeur individuelle de Koiking que j'ai réellement attrapées, j'ai confirmé la question de savoir s'il existe une corrélation (on peut dire qu'il n'y en a pas) entre chaque paramètre de CP / poids / taille par un test de non-corrélation. **: poisson:

Cet article a été rédigé dans le but de vous dire que ** «Vous pouvez effectuer une analyse statistique en utilisant des données familières» de manière amusante, donc j'éviterai autant que possible les termes et les idées difficiles. ** ** Récemment, le domaine de la science des données est devenu populaire et je pense que certaines personnes sont intéressées par ce type d'analyse, j'espère donc que vous en profiterez pour étudier les statistiques.

Avant de commencer le commentaire

Audience de cet article

Environnement d'expérimentation

Langue utilisée

En fait, cette analyse peut être faite avec Excel, mais ** je pense que je vais essayer d'écrire un script avec Python. ** La version Python est 3.5.0.

Je pense que l'environnement de développement peut être n'importe quoi, mais je l'ai principalement fait avec Sublime Text 3 et le terminal auquel je suis habitué.

Données à utiliser

Cette fois, j'ai utilisé les données de Koi King ($ n = 100 $) que j'ai capturées autour de ma maison et autour de Tokyo Kagurazaka de l'été à l'automne 2016: Fishing_pole_and_fish: Utilisez la méthode suivante pour acquérir des données.

  1. Attrapez des Pokémon
  2. Entrez le nom de lieu approximatif capturé dans le nom
  3. Prenez une capture d'écran sur l'écran de confirmation de la valeur individuelle
  4. Envoyer au médecin
  5. Entrez manuellement les données en regardant la capture d'écran

Non, c'était une méthode analogique, donc c'était assez difficile (rires) Il est pratique de se synchroniser avec l'ordinateur avec Google Photo ou Dropbox, entrez manuellement la valeur unique des images collectées comme celle-ci (je souhaite que Deep Learning puisse lire automatiquement la valeur ...)

screenshots.png

Les données saisies sont enregistrées au format CSV. Si vous souhaitez utiliser les données que j'ai collectées, veuillez visiter ici. La structure des colonnes des données CSV est la suivante.

Seules les colonnes ** CP, Poids et Hauteur ** sont utilisées dans cette analyse.

Conditions préalables

À l'origine, diverses «conditions préalables» sont nécessaires pour analyser par la méthode statistique, mais cette fois je vais ignorer la plupart d'entre elles et écrire avec le sentiment «d'essayer pour le moment», alors pardonnez-moi.

Méthode d'analyse

Commençons maintenant l'analyse du sujet principal. Tout d'abord, prenons les données CSV et représentons-les une fois dans un diagramme de dispersion: échelles: Cette fois, les données lues sont converties en type dataframe à l'aide de la bibliothèque Python Pandas.

from pandas.tools.plotting import scatter_matrix
import matplotlib.pyplot as plt
import pandas as pd

data = pd.read_csv("magikarp.csv")
print(data.describe())

plt.figure()
scatter_matrix(data)
plt.savefig("image.png ")

Le diagramme de dispersion de chaque variable ressemble à ceci.

image.png

Dans le cas de Koiking, le poids et la taille montrent une distribution linéaire assez nette. Du koiking assez petit à énorme, il semble être écologiquement distribué avec presque la même réalité que le vrai poisson: sourire:

Par contre, je ne connais pas un peu le CP ... En regardant l'histogramme, CP de 10 est très important, et il semble qu'il n'y ait aucune différence dans le nombre d'individus dans CP des autres gammes. Dans Pokemon GO, le CP le plus bas est de 10, et dans les Pokémon faibles tels que Koiking, la fréquence d'apparition des individus CP10 est élevée, vous sentez certainement que vous jouez réellement: gouttelette:

Ensuite, trouvez le coefficient de corrélation ($ \ alpha $) de ces variables. ** Cette valeur est un indice indiquant s'il existe une relation linéaire entre les variables, et plus la valeur absolue est proche de 1, plus la relation linéaire entre les valeurs individuelles est forte **. Le coefficient de corrélation utilise la fonction «corr» de «dataframe». C'est une excellente fonction qui calculera la relation de phase entre toutes les variables de la trame de données.

print(data.corr())
#>               CP    Weight    Height
#> CP      1.000000  0.010724  0.086286
#> Weight  0.010724  1.000000  0.865564
#> Height  0.086286  0.865564  1.000000

En regardant le graphique ci-dessus, il a été confirmé que les valeurs étaient comme prévu. Vous pouvez voir que le coefficient de corrélation entre le poids et la taille est de 0,866, ce qui est assez fort **. En revanche, le coefficient de corrélation de CP n'est pas si grand à première vue, et il semble un peu peu convaincant de dire qu'il est "corrélé".

Par conséquent, enfin, vérifiez si ces coefficients de corrélation sont significatifs par ** test de non-corrélation. ** ** Dans le test de non-corrélation, une hypothèse (hypothèse nulle) selon laquelle "le coefficient de corrélation obtenu est 0" est établie, alors que "la probabilité que le coefficient de corrélation soit accidentellement 0 est extrêmement faible" est significative. En obtenant la probabilité, c'est une méthode pour confirmer s'il s'agit d'un coefficient de corrélation vraiment significatif. Cette fois

Hypothèse nulle $ H_0: \ alpha = 0 $ Hypothèse d'opposition $ H_1: \ alpha \ neq 0 $

Il est testé comme. Scipy a une fonction pearsonr pour effectuer un test en utilisant le" coefficient de corrélation produit-moment de Pearson "(il existe plusieurs autres types de tests non corrélés), donc cela peut être utilisé pour chaque combinaison de variables. Exécutez et testez. Étant donné deux variables correspondantes, il renvoie un coefficient de corrélation de $ r $ et une probabilité de signification de $ p $.

from scipy.stats import pearsonr
...
r, p = pearsonr(data.Height, data.Weight) #Hauteur et largeur
# r, p = pearsonr(data.Height, data.CP) #Hauteur et CP
# r, p = pearsonr(data.Weight, data.CP) #Poids et CP
print('Coefficient de corrélation r= {r}'.format(r=r))
print('Probabilité de signification p= {p}'.format(p=p))
print('Probabilité de signification p> 0.05: {result}'.format(result=(p > 0.05)))

Le résultat du test est le suivant. Cette fois, si la probabilité de signification $ p $ est inférieure à 0,05 $ (True dans le résultat), $ H_0 $ qui dit" Il n'y a pas de corrélation à $ \ alpha = 0 $ "est adopté, sinon $ H_0 $ Est rejeté.

Poids et taille


>Coefficient de corrélation r: 0.8655637883468845
>Probabilité de signification p: 1.7019782502122307e-31
>Probabilité de signification p> 0.05: False #Important

Là encore, cela s'est avéré être une corrélation significative, comme prévu.

Hauteur et CP


>Coefficient de corrélation r: 0.0862864395740605
>Probabilité de signification p: 0.39090582918188466
>Probabilité de signification p> 0.05: True #Insignifiant

Poids et CP


>Coefficient de corrélation r: 0.01072432286085844
>Probabilité de signification p: 0.915233564101408
>Probabilité de signification p> 0.05: True

En revanche, le CP a également été comme prévu jusqu'à la fin. La question de savoir s'il est judicieux d'examiner la corrélation entre CP et d'autres variables est plus claire, mais ce n'était qu'un exemple simple, mais cette méthode peut prédire les paramètres d'apparence du jeu dans une certaine mesure. Le saviez-vous?

Résumé

C'était donc super facile, mais j'ai essayé de faire une analyse de corrélation en utilisant les données Pokemon. Puisque la distribution des données est cette fois la distribution des paramètres du jeu, il peut être intéressant de faire quelque chose comme l'estimation des paramètres en conservant des enregistrements dans d'autres Pokemon ou d'autres jeux. Peut-être que la distribution des valeurs individuelles peut différer considérablement dans Pokemon autre que Koiking.

Cette fois, j'ai fait un test de non-corrélation, mais j'aimerais faire quelque chose de similaire, alors j'aimerais écrire une suite quelque part. Je dois étudier plus de statistiques d'ici là ...

Les références

Recommended Posts

Statistiques de probabilité dans Pokemon (test de non-corrélation) - Y a-t-il une corrélation entre la PC, le poids et la taille de Koiking?
[Recherche gratuite] Y a-t-il un lien entre les mises à jour de Wikipédia et les tendances?
Différence entre == et est en python
Y a-t-il un spécial dans scipy? ??
Résumé des distributions de probabilité qui apparaissent souvent dans les statistiques et l'analyse des données