Si vous souhaitez le copier et l'utiliser, veuillez voir ci-dessous.
<détails> Données M-1 2019 </ résumé>
data = pd.DataFrame([[98,97,96,97,97,99,97],
[95,95,94,93,95,95,93],
[96,94,92,94,91,94,93],
[92,92,93,91,96,96,92],
[94,91,93,91,94,92,94],
[94,90,93,90,89,90,93],
[94,90,94,91,89,89,91],
[92,89,91,90,92,91,92],
[94,88,92,90,87,89,92],
[90,82,88,88,90,91,87]],
columns=['kaminuma','matsumoto','reiji','tomizawa','shiraku','hanawa','kyojin'],
index=['milkboy','kamaitachi','pekopa','wagyu','mitorizu','karashi','ozuwarudo','suwe','indians','newyork'])
3. Aperçu des données
Écart moyen et standard
data.describe()
|
kaminuma |
matsumoto |
reiji |
tomizawa |
shiraku |
hanawa |
kyojin |
count |
10.000000 |
10.000000 |
10.0000 |
10.00000 |
10.000000 |
10.000000 |
10.000000 |
mean |
93.900000 |
90.800000 |
92.6000 |
91.50000 |
92.000000 |
92.600000 |
92.400000 |
std |
2.233582 |
4.184628 |
2.1187 |
2.54951 |
3.366502 |
3.306559 |
2.503331 |
min |
90.000000 |
82.000000 |
88.0000 |
88.00000 |
87.000000 |
89.000000 |
87.000000 |
25% |
92.500000 |
89.250000 |
92.0000 |
90.00000 |
89.250000 |
90.250000 |
92.000000 |
50% |
94.000000 |
90.500000 |
93.0000 |
91.00000 |
91.500000 |
91.500000 |
92.500000 |
75% |
94.750000 |
93.500000 |
93.7500 |
92.50000 |
94.750000 |
94.750000 |
93.000000 |
max |
98.000000 |
97.000000 |
96.0000 |
97.00000 |
97.000000 |
99.000000 |
97.000000 |
- En regardant la moyenne, 93,9 d'Uenuma est le plus élevé et 90,8 de Matsumoto est le plus bas, mais ce n'est pas un nombre très significatif en soi. En effet, si vous obtenez un score élevé de quelqu'un qui vous donne un score élevé, vous ne serez pas différent de vos rivaux.
- L'écart type («std» dans le tableau) est le plus élevé à 4,18 pour Matsumoto et le plus bas à 2,12 pour Reiji. On peut comprendre que s'il est facile de faire une différence par rapport à ses rivaux si vous êtes accro à Matsumoto, il est difficile de faire la différence même si vous êtes accro à Reiji.
Coefficient de corrélation
sns.heatmap(data.corr(), annot=True)
plt.show()
- Il semble que Uenuma et Shiraku aient des goûts différents, et on constate que le coefficient de corrélation est assez faible.
data.corr().sum(axis=0)
juge |
Coefficient de corrélation total |
kaminuma |
5.251470 |
matsumoto |
5.876156 |
reiji |
5.272178 |
tomizawa |
5.791959 |
shiraku |
4.487326 |
hanawa |
5.002257 |
kyojin |
5.535278 |
- Matsumoto et Tomizawa semblent aimer et ne pas aimer comme les autres juges. En d'autres termes, il semble que ce n'est pas le type qui donne sa propre perspective, seulement l'évaluation qui peut être cohérente avec l'évaluation des autres juges.
- Par contre, la corrélation avec les autres juges n'est pas si élevée, probablement parce que Shiraku et Makoto marquent en fonction de leur propre monosashi.
Parcelle de paires
sns.pairplot(data)
plt.show()
- Le contenu est généralement cohérent avec le nombre de coefficient de corrélation.
- Par exemple, si vous regardez l'évaluation d'Uenuma en haut, si d'autres juges donnent une évaluation élevée, Uenuma donnera également un score élevé, mais il y a beaucoup de variation dans l'évaluation avec l'épée et le mur, et la préférence est Vous pouvez voir que ce sera tout à fait différent.
4. Modèle
stratégie
- À l'heure actuelle, il a été constaté que certains juges peuvent avoir leur propre point de vue et que de nombreux juges ont tendance à donner des évaluations similaires à d'autres juges.
Si tel est le cas, la prochaine chose à se soucier est de savoir ** quel juge aimera le plus efficacement pour gagner des points **.
- La première chose à laquelle j'ai pensé était la régression linéaire normale. Par exemple, en ce qui concerne l'évaluation d'Uenuma et Matsumoto,
$ \ qquad Score_ {matsumoto} = \ beta Score_ {kaminuma} + \ epsilon_ {kaminuma}, \ quad \ epsilon_ {kaminuma} \ sim N (0, \ sigma_ {kaminuma) } ^ 2) Si vous revenez à la forme $
, ce sera
$ \ qquad \ Delta Score_ {matsumoto} = \ beta \ Delta Score_ {kaminuma} $
, et le score d'Uenuma sera d'une unité. Je pensais qu'en augmentant, je pourrais modéliser à quel point le score de Matsumoto pouvait augmenter.
- Cependant, ce qui m'intéressait ici est de savoir s'il est correct de supposer que $ \ epsilon_ {person} $ sont indépendants les uns des autres lorsque cela est étendu à plusieurs juges. En d'autres termes, pour estimer le score de Matsumoto et Reiji à partir du degré de dépendance à Uenuma, il y a des échelles sur lesquelles Matsumoto et Reiji soulignent, bien qu'Uenuma s'en moque, $ \ epsilon_ {matsumoto} $ et $ \ epsilon_ Y a-t-il une tendance pour {reiji} $ à être des nombres dans la même direction?
- Afin de capturer cela, nous avons décidé d'analyser la dispersion des résidus lors de la réalisation d'une régression linéaire.
$ \ qquad Var (X + Y) = Var (X) + Var (Y) + 2 Cov (X, Y) $
$ \ qquad Cov (X + Y, Z) = Cov (X, Z) ) + Cov (Y, Z) $
$ \ qquad \ sum_ {person} Score_ {person} = \ sum_ {person} \ beta_ {person} Score_ {kaminuma} + \ epsilon_ {all}, \ quad \ epsilon_ {all} \ sim N (0, \ sigma_ {all} ^ 2) $
$ \ qquad where \ quad \ sigma_ {all} ^ 2 = \ sum_ {personne} Var (résiduel_ {personne}) + \ sum_ {personne_1} \ sum_ {personne_2} Cov (résiduel_ {personne_1}, résiduel_ {personne_2}) $
.
la mise en oeuvre
- Le code réellement utilisé pour l'analyse est le suivant.
<détails> Code d'analyse de régression </ summary>
from sklearn.linear_model import LinearRegression
X = data.values
coefs = np.zeros((7,7))
V = np.zeros(7)
model = LinearRegression()
for i in range(X.shape[1]):
residuals = np.zeros((6,10))
coef = np.zeros(6)
x = X[:,i].reshape(-1,1)
y = np.delete(X, i, 1)
for j in range(y.shape[1]):
y_ = y[:,j].reshape(-1,1)
model.fit(x, y_)
coef[j] = model.coef_
residuals[j,:] = (model.predict(x) - y_).flatten()
coef = np.insert(coef, i, 1)
coefs[i,:] = coef
cov_mat = np.cov(residuals, bias=True)
V[i] = cov_mat.sum()
Pour ajouter une brève explication,
À * for i in ..., les scores des autres juges sont analysés rétrospectivement en fonction du score d'Uenuma, puis le score de Matsumoto est utilisé comme base de la boucle.
À * pour j dans ..., par exemple, basé sur le score d'Uenuma, le score de Matsumoto est retourné et le score de Reiji est retourné. De plus, le coefficient de régression (correspondant à $ \ beta_ {person} $ dans la formule ci-dessus) est stocké dans un tableau appelé coef. De plus, les résidus de la régression sont stockés dans un tableau appelé résidus.
À la fin de la boucle * for j in ..., np.insert gère, par exemple, le coefficient de régression d'Uenuma vers Uenuma est de 1. De plus, les coefs sont stockés dans un tableau appelé coefs.
- La somme des variances des résidus est stockée dans un tableau appelé V. La somme de la matrice de covariance des résidus correspond à cela.
résultat
- Concernant $ \ beta_ {person} $, qui est la sensibilité des autres juges au score de chaque juge, c'est comme suit. Les données sont incluses dans chaque ligne et la sensibilité des autres juges au score d'Uenuma est la première ligne.
coefs_df = pd.DataFrame(coefs,
columns=['kaminuma','matsumoto','reiji','tomizawa','shiraku','hanawa','kyojin'],
index=['kaminuma','matsumoto','reiji','tomizawa','shiraku','hanawa','kyojin'])
sns.heatmap(coefs_df, annot=True)
plt.title('regression coefficient')
plt.show()
- L'écart type du résidu est le suivant.
std_df = pd.DataFrame(pow(V,0.5),
columns=['residual std'],
index=['kaminuma','matsumoto','reiji','tomizawa','shiraku','hanawa','kyojin'])
|
residual std |
kaminuma |
9.332082 |
matsumoto |
4.644780 |
reiji |
9.057326 |
tomizawa |
5.586553 |
shiraku |
10.673552 |
hanawa |
8.872448 |
kyojin |
7.665711 |
5. Examen
- Lorsqu'on considère le goût du juge le plus efficace, plutôt que de penser à ce qui arrive aux points des autres juges lorsqu'un juge donne un point supplémentaire, chaque juge Considérant que les écarts-types des scores étaient différents, ** pensez à ce qui arrive aux scores des autres juges lorsque vous recevez un score supplémentaire pour un écart-type ($ 1 \ sigma $) **. Je pense que c'est mieux.
sensitivity_df = pd.DataFrame(data.std(axis=0)*coefs.sum(axis=1), columns=['sensitivity'])
sensitivity_df = pd.concat([sensitivity_df, std_df], axis=1)
|
sensitivity |
residual std |
kaminuma |
14.714779 |
9.332082 |
matsumoto |
17.009344 |
4.644780 |
reiji |
14.904319 |
9.057326 |
tomizawa |
16.691662 |
5.586553 |
shiraku |
13.664036 |
10.673552 |
hanawa |
15.027370 |
8.872448 |
kyojin |
15.747906 |
7.665711 |
- Pour autant que vous puissiez voir, si vous visez ** Matsumoto **, vous pouvez facilement vous attendre à une augmentation du score des autres juges, et vous pouvez voir que vous pouvez gagner des points plus efficacement.
- Par contre, l'écart type du résidu est le plus petit à Matsumoto et le plus grand en Aspiration. Même si vous en êtes accro, d'autres juges évaluent d'un point de vue différent et il est difficile d'améliorer directement le score global, mais le score est susceptible de fluctuer selon que vous êtes accro à une autre mesure d'autres juges, et le résidu On comprend que l'écart type de est important.
- D'après ce qui précède ** Tout d'abord, après avoir augmenté le score global des bandes dessinées préférées de Matsumoto, si vous pouvez vous le permettre, nous entrelacerons des éléments qui se retrouveront pris dans votre volonté et essayerons de vous différencier de vos rivaux ** On pense que cela aidera à le faire.
6. Résumé
- En ce qui concerne le premier tour de 2019, il a été suggéré que la clé pour gagner le premier tour serait d'avoir un génie qui correspond aux goûts de Matsumoto.
- Je ne peux pas donner un point concret sur le type de bande dessinée que Matsumoto aime. C'est la limite des amateurs de rire.
- Une analyse similaire pour les autres années et finales est susceptible de fournir des implications intéressantes.
- Eh bien, même s'il y a une situation où une stratégie aussi délicate fonctionne, elle sera limitée à une très petite différence. Je pense que la meilleure façon d'en profiter est de le regarder confortablement et de rire sans penser aux choses difficiles.