Compte-rendu réalisé par : FOUGEROUX Aurélien
A rendre au plus tard le : Dimanche 3 mai à 23h59
## [1] 2645 16
## X DBw Hl Hw
## Length:2645 Min. : 0.042 Min. :0.050 Min. : 0.270
## Class :character 1st Qu.: 5.770 1st Qu.:0.580 1st Qu.: 1.540
## Mode :character Median : 21.577 Median :0.910 Median : 2.420
## Mean : 73.296 Mean :1.029 Mean : 2.619
## 3rd Qu.: 67.110 3rd Qu.:1.330 3rd Qu.: 3.400
## Max. :3278.775 Max. :6.010 Max. :10.110
## Tl Tw Al Aw
## Min. : 0.390 Min. : 0.370 Min. : 0.680 Min. : 0.160
## 1st Qu.: 2.790 1st Qu.: 1.870 1st Qu.: 5.030 1st Qu.: 1.090
## Median : 4.680 Median : 2.870 Median : 7.550 Median : 1.790
## Mean : 5.183 Mean : 3.357 Mean : 8.824 Mean : 2.321
## 3rd Qu.: 6.740 3rd Qu.: 4.350 3rd Qu.:11.190 3rd Qu.: 3.050
## Max. :23.230 Max. :14.450 Max. :43.240 Max. :11.710
## FWl FWw HWl HWw
## Min. : 1.89 Min. : 0.420 Min. : 1.57 Min. : 0.390
## 1st Qu.: 11.24 1st Qu.: 4.240 1st Qu.: 8.73 1st Qu.: 5.110
## Median : 16.69 Median : 7.530 Median : 12.53 Median : 8.450
## Mean : 20.06 Mean : 9.037 Mean : 15.31 Mean : 9.936
## 3rd Qu.: 24.45 3rd Qu.:11.460 3rd Qu.: 18.33 3rd Qu.:12.430
## Max. :114.12 Max. :55.840 Max. :153.81 Max. :53.660
## Wsp1 Wsp2 Bl FAMILY
## Min. : 4.14 Min. : 4.16 Min. : 1.28 Length:2645
## 1st Qu.: 22.70 1st Qu.: 24.74 1st Qu.: 8.74 Class :character
## Median : 32.66 Median : 36.61 Median :13.30 Mode :character
## Mean : 38.56 Mean : 43.48 Mean :15.04
## 3rd Qu.: 47.15 3rd Qu.: 53.57 3rd Qu.:19.17
## Max. :214.60 Max. :239.39 Max. :68.15
## [1] 100
## [1] 2645
La base de donnée contient 2645 individus et 16 variables.
Variables qualitatives : X , FAMILY. La variable X donne un nom unique à chaque papillon et la variable FAMILY classe le papillon dans la famille à laquelle il appartient parmis les 100 familles apparentes dans la base.
Le graphe en fonction des logarithme base 10 est le même que celui de
l’article ,la seule chose qui change sont les echelles qui sont en
puissance de 10(en lisant 3 sur l’axe y on lit en réalité 10^3 mg).
##
## Call:
## lm(formula = DBw ~ FWl, data = pap2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.89045 -0.21444 -0.01914 0.21165 0.86840
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -2.05168 0.02643 -77.61 <2e-16 ***
## FWl 2.72610 0.02118 128.73 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2978 on 2643 degrees of freedom
## Multiple R-squared: 0.8624, Adjusted R-squared: 0.8624
## F-statistic: 1.657e+04 on 1 and 2643 DF, p-value: < 2.2e-16
J’obtient avec ce modèle linéaire simple les coefficients : -2.05168 pour l’intercept et 2.72610 pour FWl. le R^2 ajusté est de 0.8624.
Ce R^2 nous apprend que le modèle est plutôt bien ajusté.
On trouve approximativement les mêmes résultat que l’auteur sur la table 1 à la ligne de FWl pour intercept et coefficient (Intercept:-2.053 ,Coefficient:2.727 ).
ailetest<-3 # en mm
coefms<-coef(modeleS)
log10_prediction_poid<-coefms[1]+coefms[2]*log10(ailetest)
prediction_poid<-10^(log10_prediction_poid)
prediction_poid## (Intercept)
## 0.1774168
Il est donc prédit qu’un papillon avec des ailes de 3 mm aurait un poid d’environ 0,177 mg
#modèle linéaire simple de DBw en fonction de toutes les autres variables quantitatives.
res<-matrix(NA,nrow=15,ncol=2)
colnames(res)<-c("Intercept","Coefficient")
R2<-numeric(15)
for (i in 1:15) {
modeleS2=lm(DBw~pap2[,i],data=pap2)
R2[i]=summary(modeleS2)$adj.r.squared
res[i,"Intercept"]<-coef(modeleS2)[1]
res[i,"Coefficient"]<-coef(modeleS2)[2]
}
#modeleS2
noms=c("Hl","Hw","Tl","Tw","Al","Aw","FWl","FWw","HWl","HWw","Wsp1","Wsp2","Bl")
#res
Res_final<-cbind(res[3:15,],R2[3:15],noms)
Res_final## Intercept Coefficient noms
## [1,] "1.41906679591151" "2.30896116014388" "0.602494224370337" "Hl"
## [2,] "0.253237587253971" "2.92334389249664" "0.916454298763331" "Hw"
## [3,] "-0.431264610068992" "2.7048358029766" "0.948331118550555" "Tl"
## [4,] "-0.0138452804009023" "2.86112290763519" "0.910170783819414" "Tw"
## [5,] "-1.05290537417659" "2.69293587773412" "0.881098370606713" "Al"
## [6,] "0.66004843397411" "2.37721599960582" "0.867023940171597" "Aw"
## [7,] "-2.05168337538385" "2.72609542132282" "0.862390729626412" "FWl"
## [8,] "-0.338076301730261" "1.95068359619092" "0.779992301212012" "FWw"
## [9,] "-1.72693903147396" "2.71305970281769" "0.782391108334219" "HWl"
## [10,] "-0.727494946666458" "2.23396996193819" "0.763222741790457" "HWw"
## [11,] "-3.20991530244933" "2.96142182929919" "0.889133092589765" "Wsp1"
## [12,] "-3.07671364376782" "2.79207126581453" "0.885441918857263" "Wsp2"
## [13,] "-1.84925116927549" "2.83837027776421" "0.940581885956571" "Bl"
Res_final nous rend le tableau des intercepts , coefficients et R^2 ajusté pour chaque modèle simple de la variable DBw avec la variable appelé dans la colonne “noms”.
Comparaison avec l’article : Nous retrouvons approximativement les mêmes valeurs que les auteurs que ce soit pour les Intercepts , les coefficients ou bien les R^2.
## corrplot 0.95 loaded
## DBw Hl Hw Tl Tw Al Aw
## DBw 1.0000000 0.7763019 0.9573327 0.9738330 0.9540465 0.9386924 0.9311682
## Hl 0.7763019 1.0000000 0.8383816 0.8132687 0.7069782 0.7738788 0.6658545
## Hw 0.9573327 0.8383816 1.0000000 0.9637908 0.9236761 0.9099872 0.8820314
## Tl 0.9738330 0.8132687 0.9637908 1.0000000 0.9217252 0.9187086 0.8787813
## Tw 0.9540465 0.7069782 0.9236761 0.9217252 1.0000000 0.8967428 0.9502507
## Al 0.9386924 0.7738788 0.9099872 0.9187086 0.8967428 1.0000000 0.8717185
## Aw 0.9311682 0.6658545 0.8820314 0.8787813 0.9502507 0.8717185 1.0000000
## FWl 0.9286780 0.8101318 0.9090384 0.9344124 0.8449292 0.9291737 0.8173590
## FWw 0.8832188 0.7827743 0.8837843 0.9040109 0.7883845 0.8507127 0.7524461
## HWl 0.8845753 0.7835391 0.8630856 0.8924631 0.7947599 0.8848792 0.7618573
## HWw 0.8736775 0.7928575 0.8778747 0.8979826 0.7831538 0.8545581 0.7361195
## Wsp1 0.9429608 0.8061193 0.9181648 0.9410728 0.8743457 0.9432756 0.8453133
## Wsp2 0.9410023 0.8109305 0.9201676 0.9440283 0.8660796 0.9370576 0.8362403
## Bl 0.9698476 0.8257461 0.9535473 0.9708942 0.9205681 0.9851071 0.8864941
## FWl FWw HWl HWw Wsp1 Wsp2 Bl
## DBw 0.9286780 0.8832188 0.8845753 0.8736775 0.9429608 0.9410023 0.9698476
## Hl 0.8101318 0.7827743 0.7835391 0.7928575 0.8061193 0.8109305 0.8257461
## Hw 0.9090384 0.8837843 0.8630856 0.8778747 0.9181648 0.9201676 0.9535473
## Tl 0.9344124 0.9040109 0.8924631 0.8979826 0.9410728 0.9440283 0.9708942
## Tw 0.8449292 0.7883845 0.7947599 0.7831538 0.8743457 0.8660796 0.9205681
## Al 0.9291737 0.8507127 0.8848792 0.8545581 0.9432756 0.9370576 0.9851071
## Aw 0.8173590 0.7524461 0.7618573 0.7361195 0.8453133 0.8362403 0.8864941
## FWl 1.0000000 0.9479541 0.9739307 0.9430251 0.9927166 0.9991220 0.9523871
## FWw 0.9479541 1.0000000 0.9329916 0.9602272 0.9270127 0.9462478 0.8931212
## HWl 0.9739307 0.9329916 1.0000000 0.9373487 0.9640740 0.9710046 0.9091037
## HWw 0.9430251 0.9602272 0.9373487 1.0000000 0.9286616 0.9413069 0.8938018
## Wsp1 0.9927166 0.9270127 0.9640740 0.9286616 1.0000000 0.9946778 0.9626350
## Wsp2 0.9991220 0.9462478 0.9710046 0.9413069 0.9946778 1.0000000 0.9606047
## Bl 0.9523871 0.8931212 0.9091037 0.8938018 0.9626350 0.9606047 1.0000000
M<-cor(pap2_Q)
D<-as.dist(1-M)
clust<-hclust(D,method="average")
dendro<-as.dendrogram(clust)
par(mar=c(2,1,4,6))
plot(dendro,main="Dendro",horiz=TRUE,xlab="r",xlim=c(0.25,0),axes= FALSE)
axis(side=3,at=c(0.30,0.20,0.10,0.05,0),labels=
c("0.7","0.80","0.90","0.95","1.0"),line=0)
On obtient à peu près le même dendrogramme que les auteurs. On peut voir
les corrélations dans l’ensemble des variables quantitatives. Le noeud
ou deux groupes de variable se rejoignent indique la corrélation (sur
l’axe) entre ces deux groupes de variables.
##
## Call:
## lm(formula = DBw ~ Hw + Tl + Tw + Al + Aw + FWl + FWw, data = pap2_Q)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.42251 -0.07245 -0.00083 0.07345 0.51101
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.44519 0.02304 -19.322 < 2e-16 ***
## Hw 0.08745 0.03492 2.505 0.0123 *
## Tl 1.12551 0.03657 30.778 < 2e-16 ***
## Tw 0.49914 0.03509 14.225 < 2e-16 ***
## Al 0.27292 0.02737 9.972 < 2e-16 ***
## Aw 0.52760 0.02305 22.888 < 2e-16 ***
## FWl 0.24832 0.03881 6.399 1.85e-10 ***
## FWw 0.09661 0.02144 4.506 6.90e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1144 on 2637 degrees of freedom
## Multiple R-squared: 0.9798, Adjusted R-squared: 0.9797
## F-statistic: 1.823e+04 on 7 and 2637 DF, p-value: < 2.2e-16
## [1] -3954.392
On obtient un AIC de -3954.4 tandis que l’auteur en a un de -3959.7.
Ainsi voici les valeurs des coefficients que l’on obtient :
Nous Auteurs
Intercept :-0.44519 ->-0.4474
Hw:0.08745 ->0.0847 Tl:1.12551 ->1.1281 Tw:0.49914 ->0.5020
Al:0.27292 ->0.2738 Aw:0.52760
->0.5275 FWl:0.24832 ->0.2454 FWw:0.09661 ->0.0992
On obtient un R^2 ajusté de 0.9797 et une statistique F de 1.823e+04 et l’auteur lui a un R^2 de 0.980 et une valeur de statistique F de 18250.5.
Le summary nous montre que les valeurs des estimations des coefficients pour le modèle 2 est proche de celles de l’auteurs (à des petits arrondis près).
logDBw_prediction<-predict(modele2)
DBw_prediction<-10^(logDBw_prediction)
log_DBw_réel<-pap2_Q$DBw
DBw_réel<-10^(log_DBw_réel)
plot(DBw_prediction,DBw_réel,log="xy",xlab="poid prédit",ylab="poid réel",axes=FALSE,xlim=c(0.1,3000))
va<-c(0.01,0.1,0.5,5,50,200,1000,3000)
axis(1,at=va,labels=va)
axis(2,at=va,labels=va,las=1)
Ce graphique est le même que celui obtenu par les auteurs (il n’y a pas
l’affichage de l’abscisse 3000).
Parmis les 8 modèles ajustés par l’auteur AIC=-4002.8 est la valeur la plus négative , ainsi le modèle 1 possède le meilleur critère AIC.
npap<-nrow(pap2_Q)
modelecomplet<-lm(DBw~.,data=pap2_Q)
modelebonAIC<-step(modelecomplet,direction="backward")## Start: AIC=-11523.16
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWl + FWw + HWl + HWw + Wsp1 +
## Wsp2 + Bl
##
## Df Sum of Sq RSS AIC
## <none> 33.557 -11523
## - HWw 1 0.0376 33.595 -11522
## - HWl 1 0.0609 33.618 -11520
## - Bl 1 0.0616 33.619 -11520
## - Hl 1 0.0680 33.625 -11520
## - Wsp2 1 0.0743 33.632 -11519
## - FWl 1 0.0778 33.635 -11519
## - Wsp1 1 0.1067 33.664 -11517
## - Tw 1 0.1213 33.679 -11516
## - Al 1 0.1525 33.710 -11513
## - FWw 1 0.2590 33.816 -11505
## - Hw 1 0.4311 33.988 -11491
## - Tl 1 1.3959 34.953 -11417
## - Aw 1 5.9944 39.552 -11090
## Start: AIC=-11440.84
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWl + FWw + HWl + HWw + Wsp1 +
## Wsp2 + Bl
##
## Df Sum of Sq RSS AIC
## - HWw 1 0.0376 33.595 -11446
## - HWl 1 0.0609 33.618 -11444
## - Bl 1 0.0616 33.619 -11444
## - Hl 1 0.0680 33.625 -11443
## - Wsp2 1 0.0743 33.632 -11443
## - FWl 1 0.0778 33.635 -11443
## <none> 33.557 -11441
## - Wsp1 1 0.1067 33.664 -11440
## - Tw 1 0.1213 33.679 -11439
## - Al 1 0.1525 33.710 -11437
## - FWw 1 0.2590 33.816 -11428
## - Hw 1 0.4311 33.988 -11415
## - Tl 1 1.3959 34.953 -11341
## - Aw 1 5.9944 39.552 -11014
##
## Step: AIC=-11445.75
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWl + FWw + HWl + Wsp1 +
## Wsp2 + Bl
##
## Df Sum of Sq RSS AIC
## - HWl 1 0.0442 33.639 -11450
## - Bl 1 0.0612 33.656 -11449
## - Hl 1 0.0714 33.666 -11448
## - Wsp2 1 0.0745 33.669 -11448
## - FWl 1 0.0773 33.672 -11448
## - Wsp1 1 0.0973 33.692 -11446
## <none> 33.595 -11446
## - Tw 1 0.1204 33.715 -11444
## - Al 1 0.1519 33.747 -11442
## - FWw 1 0.2310 33.826 -11436
## - Hw 1 0.4146 34.010 -11421
## - Tl 1 1.3867 34.982 -11347
## - Aw 1 6.3216 39.917 -10998
##
## Step: AIC=-11450.15
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWl + FWw + Wsp1 + Wsp2 +
## Bl
##
## Df Sum of Sq RSS AIC
## - Bl 1 0.0555 33.695 -11454
## - Hl 1 0.0735 33.713 -11452
## - FWl 1 0.0775 33.717 -11452
## - Wsp2 1 0.0790 33.718 -11452
## <none> 33.639 -11450
## - Wsp1 1 0.1121 33.751 -11449
## - Tw 1 0.1192 33.758 -11449
## - Al 1 0.1412 33.780 -11447
## - FWw 1 0.2716 33.911 -11437
## - Hw 1 0.3918 34.031 -11427
## - Tl 1 1.3577 34.997 -11353
## - Aw 1 6.2782 39.917 -11005
##
## Step: AIC=-11453.67
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWl + FWw + Wsp1 + Wsp2
##
## Df Sum of Sq RSS AIC
## - FWl 1 0.0891 33.784 -11455
## - Wsp2 1 0.0894 33.784 -11454
## <none> 33.695 -11454
## - Tw 1 0.1108 33.806 -11453
## - Wsp1 1 0.1202 33.815 -11452
## - FWw 1 0.2824 33.977 -11440
## - Hw 1 0.3703 34.065 -11433
## - Hl 1 0.5282 34.223 -11420
## - Al 1 1.1625 34.857 -11372
## - Aw 1 6.4672 40.162 -10997
## - Tl 1 11.9137 45.608 -10661
##
## Step: AIC=-11454.57
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWw + Wsp1 + Wsp2
##
## Df Sum of Sq RSS AIC
## - Wsp2 1 0.0005 33.784 -11462
## <none> 33.784 -11455
## - Wsp1 1 0.1296 33.913 -11452
## - FWw 1 0.2809 34.065 -11440
## - Hw 1 0.3553 34.139 -11435
## - Hl 1 0.5657 34.350 -11418
## - Al 1 1.1972 34.981 -11370
## - Tw 1 1.8636 35.647 -11320
## - Aw 1 6.3790 40.163 -11005
## - Tl 1 12.5071 46.291 -10629
##
## Step: AIC=-11462.42
## DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWw + Wsp1
##
## Df Sum of Sq RSS AIC
## <none> 33.784 -11462
## - Hw 1 0.3549 34.139 -11443
## - FWw 1 0.4325 34.217 -11437
## - Hl 1 0.5653 34.350 -11426
## - Wsp1 1 0.8553 34.640 -11404
## - Al 1 1.2171 35.001 -11377
## - Tw 1 1.8688 35.653 -11328
## - Aw 1 6.3845 40.169 -11012
## - Tl 1 12.6836 46.468 -10627
Nous avons donc deux modèle dont un avec critère AIC et l’autre avec critère BIC.
Modèle avec critère AIC :
Le modèle complet avec descente ne supprime aucune variable puisque aucune suppression ne permet d’obtenir un AIC plus négatif qu’au début de l’algorithme. Ainsi pour le critère AIC le modèle optimal est le modèle complet.
Modèle avec critère BIC :
Par critère BIC , le modèle complet subit cinq suppression de variable. Cela permet de dire que le critère BIC est plus restrictif que l’AIC.
Le modèle final obtenu à partir du modèle complet est donc le suivant :
Start:AIC=-11440.84
Step: AIC=-11462.42 DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWw + Wsp1
Ici huit variables permettent d’optimiser DBw (Dry Body Weight) par BIC
Comparaison avec le modèle de l’article :
le meilleur modèle de l’article (modèle1) garde 8 variables :
AIC=-4002.8
DBw ~ Hl + Hw + Tl + Tw + Al + Aw + FWw + FWl
Notre modèle BIC est le plus proche de celui de l’article. En effet la seule différence réside dans le choix de la variable wsp1 au lieu de FWl.
Cependant nous avons remarqué precèdemment que ces deux variables possèdent une bonne corrélation donc le meilleur modèle de l’auteur et notre modèle BIC sont des bons modèles de prédiction du poid corporel sec des papillons.
Enfin notre modèle AIC n’est pas assez restrictif , il garde chacune des variables montrant qu’elles apportent tout de même un gain de précision réel même s’il est minime.
DBw_final<-pap$DBw
FWl_final<-pap$FWl
Hesperiidae_DBw<-DBw_final[pap$FAMILY=="Hesperiidae"]
Papilionidae_DBw<-DBw_final[pap$FAMILY=="Papilionidae"]
Pieridae_DBw<-DBw_final[pap$FAMILY=="Pieridae"]
Nymp_Lyca_Rio_DBw<-DBw_final[pap$FAMILY=="Nymphalidae"|pap$FAMILY=="Lycaenidae"|pap$FAMILY=="Riodinidae"]
Hesperiidae_FWl<-FWl_final[pap$FAMILY=="Hesperiidae"]
Papilionidae_FWl<-FWl_final[pap$FAMILY=="Papilionidae"]
Pieridae_FWl<-FWl_final[pap$FAMILY=="Pieridae"]
Nymp_Lyca_Rio_FWl<-FWl_final[pap$FAMILY=="Nymphalidae"|pap$FAMILY=="Lycaenidae"|pap$FAMILY=="Riodinidae"]
DroiteH=lm(log10(Hesperiidae_DBw)~log10(Hesperiidae_FWl))
DroitePa=lm(log10(Papilionidae_DBw)~log10(Papilionidae_FWl))
DroitePi=lm(log10(Pieridae_DBw)~log10(Pieridae_FWl))
DroiteN=lm(log10(Nymp_Lyca_Rio_DBw)~log10(Nymp_Lyca_Rio_FWl))
plot(Hesperiidae_FWl,Hesperiidae_DBw,log="xy",pch=3,col="black",xlim=c(5,150),ylim=c(1,600),cex=0.5,las=1,xlab="Forewing length (mm)",ylab="Dry body weight (mg)",xaxt="n")
points(Papilionidae_FWl,Papilionidae_DBw,pch=19,col="red",cex=0.5)
points(Pieridae_FWl,Pieridae_DBw,pch=19,col="yellow",cex=0.5)
points(Nymp_Lyca_Rio_FWl,Nymp_Lyca_Rio_DBw,pch=15,col="cyan",cex=0.5)
axis(1,at=c(10,20,30,40,50,60,80,100,150),labels=c(10,20,30,40,50,60,80,100,150))
abline(DroiteH,col="black",lwd=2)
abline(DroitePa,col="red",lwd=2)
abline(DroitePi,col="yellow",lwd=2)
abline(DroiteN,col="cyan",lwd=2)
family<-c("Hesperiidae","Papilionidae","Pieridae","Lycaenidae-Riodinidae-Nymphalidae")
couleur<-c("black","red","yellow","cyan")
points<-c(3,19,19,15)
legend("bottomright",legend=family,col=couleur,pch=points,lty=1,lwd=3, bty="n",cex=0.6,seg.len=3)## [1] 17435 11
Dans ce jeu de données , il y’a 17435 individus et 11 variables
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## 0 1
## Blanc 4165 4566
## Noir 4377 4327
## $data
##
## 0 1 Total
## Blanc 4165 4566 8731
## Noir 4377 4327 8704
## Total 8542 8893 17435
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Blanc 1.0000000 NA NA
## Noir 0.9017568 0.8497472 0.9569498
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Blanc NA NA NA
## Noir 0.0006450032 0.0006528506 0.0006444845
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
la modalité de reference est que bob joue les blancs
On a que bob perds plus en commençant avec les noirs plutôt qu’avec les blancs
les p-valeurs sont petites (<0.05) donc l’hypothèse nulle est rejeté , ce qui veut dire que bob n’a pas autant de chance de gagner selon la couleur de départ , ici il perd plus s’il joue les noirs en premier.
chess_new$Type.partie=relevel(chess_new$Type.partie,"Blitz")
tab2<-table(chess_new$Type.partie,chess_new$Victoire)
tab2##
## 0 1
## Blitz 5046 5167
## Bullet 2312 2221
## Classique 406 561
## Correspondance 40 87
## Rapide 738 857
## $data
##
## 0 1 Total
## Blitz 5046 5167 10213
## Bullet 2312 2221 4533
## Classique 406 561 967
## Correspondance 40 87 127
## Rapide 738 857 1595
## Total 8542 8893 17435
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Blitz 1.000000 NA NA
## Bullet 0.938144 0.8747454 1.006138
## Classique 1.349415 1.1808119 1.542093
## Correspondance 2.124066 1.4577689 3.094906
## Rapide 1.134053 1.0202048 1.260605
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Blitz NA NA NA
## Bullet 7.370811e-02 7.432966e-02 7.366663e-02
## Classique 9.828401e-06 1.017651e-05 1.018332e-05
## Correspondance 5.251021e-05 5.282795e-05 6.002307e-05
## Rapide 1.971632e-02 2.054978e-02 1.972430e-02
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Bob à le plus de chance de gagner les parties de Correspondance bien plus que les autres styles de partie.
De plus la p-valeur associée confirme qu’on ne peut pas rejeter le fait que Bob ne gagne pas autant de partie de correspondance que de Blitz.
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
## [1] "integer"
## [1] "character"
## [1] "double"
Year<-year(dated)
chess_1<-cbind(chess_new[,1:6],Year,chess_new[,8:11])
#Rapport des côtes Victoire contre non-victoire en 2019
chess_1$Year<-relevel(as.factor(chess_1$Year),"2019")
tab3<-table(chess_1$Year,chess_1$Victoire)
tab3##
## 0 1
## 2019 1528 1666
## 2018 59 61
## 2020 1624 1632
## 2021 1327 1387
## 2022 1692 1777
## 2023 1087 1178
## 2024 944 921
## 2025 281 271
## $data
##
## 0 1 Total
## 2019 1528 1666 3194
## 2018 59 61 120
## 2020 1624 1632 3256
## 2021 1327 1387 2714
## 2022 1692 1777 3469
## 2023 1087 1178 2265
## 2024 944 921 1865
## 2025 281 271 552
## Total 8542 8893 17435
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## 2019 1.0000000 NA NA
## 2018 0.9482573 0.6585667 1.365377
## 2020 0.9216849 0.8359218 1.016247
## 2021 0.9586364 0.8653369 1.061995
## 2022 0.9632420 0.8749069 1.060496
## 2023 0.9939490 0.8923993 1.107054
## 2024 0.8948206 0.7981865 1.003154
## 2025 0.8845275 0.7382756 1.059752
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## 2019 NA NA NA
## 2018 0.77535688 0.78094736 0.77513327
## 2020 0.10179989 0.10541107 0.10170179
## 2021 0.41888832 0.43325788 0.41873200
## 2022 0.44553104 0.44699434 0.44538886
## 2023 0.91209232 0.91246152 0.91210897
## 2024 0.05672832 0.05815136 0.05661739
## 2025 0.18366587 0.19654188 0.18314392
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
D’après les p-valeurs On ne peut dire que l’hypothèse nulle n’est pas rejeté. Il n’y a pas d’odd ratio qui se demarque fortement des autres donc bob n’a pas eu d’année prépondérante en terme de victoire
# Construire une variable différence de gaffe entre bob et son opposant
gaffe_bob<-chess_1$Gaffe.joueur
gaffe_opp<-chess_1$Gaffe.adversaire
Difference.Gaffe<-gaffe_bob-gaffe_opp
chess_2<-cbind(chess_1[,1:9],Difference.Gaffe)
#View(chess_2)#Tracer le diagramme en boite horizontal des différences de nombre de Gaffe selon que bob ai gagné ou perdu
diff_gaffW<-chess_2$Difference.Gaffe[chess_2$Victoire=="1"]
diff_gaffL<-chess_2$Difference.Gaffe[chess_2$Victoire=="0"]
boxplot(Difference.Gaffe~Victoire,data=chess_2,names=c("Win","Lose"),
col=c("blue","red"),main=" Résultat de bob selon la différence de gaffe",horizontal=TRUE)
Lorsque la différence de gaffe entre bob et son adversaire est nulle on
ne peut pas determiner qui a le plus de succès ce qui veut dire que la
partie ne determine pas de gagnant flagrant entre bob et son adversaire
lorsque il y’a le même nombre de gaffe entre les deux.
Globalement on voit un comportement symétrique , si bob fait une erreur de plus que son adversaire il a tendance a perdre et inversement il a tendance à gagner lorsque son adversaire a fait une gaffe de plus que lui.
Le nombre de gaffe a donc une influence principal dans le résultat des jeux.
#Ajuster un modèle logistique pour la variable Victoire en fonction de la variable Difference.Gaffe
library(ggplot2)## Warning: package 'ggplot2' was built under R version 4.5.2
modeleL<-glm(Victoire~Difference.Gaffe,data=chess_2)
ggplot(chess_2,aes(x=Difference.Gaffe,y=Victoire))+geom_boxplot(aes(group=Victoire),fill=c("red","blue"),width=0.1)+stat_smooth(method="glm",method.args=list(family="binomial"),se=FALSE,color="red")+theme_minimal()## `geom_smooth()` using formula = 'y ~ x'
La boite à moustache de droite est celle des défaites de bob et elle
montre que lorsque la différence de gaffe entre bob et son adversaire
est positive (bob fait plus d’erreur) alors bob perds plus souvent.
On a le comportement opposé similaire lorsque bob fait moins d’erreur que son adversaire.
la courbe rouge montre la probabilité de victoire de bob face à son adversaire.
La courbe comporte une symétrie centrale par rapport au point (0,0.5) ce qui veut dire que selon les différences de gaffe bob perd autant de fois qu’il gagne (probabilité de gagner ou perdre) lorsque la valeur absolue de la difference de gaffe est la même.
n<-nrow(chess_2)
glmL<-glm(Victoire~Couleur.joueur+Elo.joueur+Elo.adversaire+Type.partie+Site+Type.partie,data=chess_2,family="binomial")
summary(glmL)##
## Call:
## glm(formula = Victoire ~ Couleur.joueur + Elo.joueur + Elo.adversaire +
## Type.partie + Site + Type.partie, family = "binomial", data = chess_2)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.5516216 0.1250023 4.413 1.02e-05 ***
## Couleur.joueurNoir -0.1086560 0.0313324 -3.468 0.000525 ***
## Elo.joueur 0.0048159 0.0001799 26.764 < 2e-16 ***
## Elo.adversaire -0.0051479 0.0001765 -29.163 < 2e-16 ***
## Type.partieBullet -0.0002059 0.0376177 -0.005 0.995633
## Type.partieClassique 0.1371019 0.0731836 1.873 0.061014 .
## Type.partieCorrespondance 0.1446766 0.2161075 0.669 0.503198
## Type.partieRapide 0.1001677 0.0562691 1.780 0.075051 .
## SiteLichess.com 0.0051382 0.0402850 0.128 0.898508
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 24163 on 17434 degrees of freedom
## Residual deviance: 22934 on 17426 degrees of freedom
## AIC: 22952
##
## Number of Fisher Scoring iterations: 4
## Start: AIC=23021.71
## Victoire ~ Couleur.joueur + Elo.joueur + Elo.adversaire + Type.partie +
## Site + Type.partie
##
## Df Deviance AIC
## - Type.partie 4 22941 22990
## - Site 1 22934 23012
## <none> 22934 23022
## - Couleur.joueur 1 22946 23024
## - Elo.joueur 1 23825 23903
## - Elo.adversaire 1 24062 24141
##
## Step: AIC=22989.52
## Victoire ~ Couleur.joueur + Elo.joueur + Elo.adversaire + Site
##
## Df Deviance AIC
## - Site 1 22941 22980
## <none> 22941 22990
## - Couleur.joueur 1 22953 22992
## - Elo.joueur 1 23873 23912
## - Elo.adversaire 1 24111 24150
##
## Step: AIC=22979.85
## Victoire ~ Couleur.joueur + Elo.joueur + Elo.adversaire
##
## Df Deviance AIC
## <none> 22941 22980
## - Couleur.joueur 1 22953 22982
## - Elo.joueur 1 23877 23906
## - Elo.adversaire 1 24145 24174
##
## Call:
## glm(formula = Victoire ~ Couleur.joueur + Elo.joueur + Elo.adversaire,
## family = "binomial", data = chess_2)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.5778651 0.1126309 5.131 2.89e-07 ***
## Couleur.joueurNoir -0.1086735 0.0313261 -3.469 0.000522 ***
## Elo.joueur 0.0048404 0.0001777 27.244 < 2e-16 ***
## Elo.adversaire -0.0051757 0.0001737 -29.798 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 24163 on 17434 degrees of freedom
## Residual deviance: 22941 on 17431 degrees of freedom
## AIC: 22949
##
## Number of Fisher Scoring iterations: 4
Les variables significatives sont pour le premier modèle : L’intercept , Couleur.joueurNoir,Elo.joueur ,Elo.adversaire.
la méthode descendante nous fait passer de AIC=23021.71 à Step: AIC=22979.85 et garde bien les variables de la couleur du joueur , de l’elo du joueur et de l’elo de l’adversaire.
glmbest<-glm(Victoire~Couleur.joueur+Elo.joueur+Elo.adversaire,data=chess_2,family="binomial")
summary(glmbest)##
## Call:
## glm(formula = Victoire ~ Couleur.joueur + Elo.joueur + Elo.adversaire,
## family = "binomial", data = chess_2)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.5778651 0.1126309 5.131 2.89e-07 ***
## Couleur.joueurNoir -0.1086735 0.0313261 -3.469 0.000522 ***
## Elo.joueur 0.0048404 0.0001777 27.244 < 2e-16 ***
## Elo.adversaire -0.0051757 0.0001737 -29.798 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 24163 on 17434 degrees of freedom
## Residual deviance: 22941 on 17431 degrees of freedom
## AIC: 22949
##
## Number of Fisher Scoring iterations: 4
Couleur.joueurNoir <0 donc comme la modalité de reference est blanc ca veut dire qu’il est plus probable pour bob de perdre lorsqu’il joue avec les noirs.
Elo.joueur>0 et Elo.adversaire<0 ce qui veut dire que il est plus probable que bob gagne si son elo augmente et qu’il est plus probable que bob perd si l’elo de l’adversaire augmente.
## Elo.joueur
## -0.0003353332
library(aod)
indices<-which(names(coeff)%in%c("Elo.joueur","Elo.adversaire"))
testW<-wald.test(b=coef(glmbest),Sigma=vcov(glmbest),
L=matrix(c(0,0,1,1),nrow=1))
testW## Wald test:
## ----------
##
## Chi-squared test:
## X2 = 33.1, df = 1, P(> X2) = 9e-09
9e-09<5e-02 donc on rejette l’hypothèse nulle.
Ainsi on rejette l’idée que la somme des coefficients est nulle.
Donc l’effet de l’elo de l’adversaire et de l’elo de bob ne se compensent pas.
Différence.Elo<-chess_2$Elo.joueur-chess_2$Elo.adversaire
chess_3<-cbind(chess_2[,1:2],chess_2[,5:10],Différence.Elo)
#View(chess_3)n1<-nrow(chess_3)
Glmnouv<-glm(Victoire~Couleur.joueur+Différence.Elo+Type.partie+Site+Longueur.Partie,data=chess_3,family="binomial")
summary(Glmnouv)##
## Call:
## glm(formula = Victoire ~ Couleur.joueur + Différence.Elo + Type.partie +
## Site + Longueur.Partie, family = "binomial", data = chess_3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.0542422 0.0515281 1.053 0.292491
## Couleur.joueurNoir -0.1086493 0.0313162 -3.469 0.000522 ***
## Différence.Elo 0.0050285 0.0001743 28.854 < 2e-16 ***
## Type.partieBullet 0.0369358 0.0368099 1.003 0.315658
## Type.partieClassique 0.2015611 0.0719127 2.803 0.005065 **
## Type.partieCorrespondance 0.1556166 0.2152788 0.723 0.469765
## Type.partieRapide 0.1016046 0.0563031 1.805 0.071137 .
## SiteLichess.com -0.0861595 0.0354725 -2.429 0.015144 *
## Longueur.Partie -0.0020986 0.0009602 -2.185 0.028858 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 24163 on 17434 degrees of freedom
## Residual deviance: 22952 on 17426 degrees of freedom
## AIC: 22970
##
## Number of Fisher Scoring iterations: 4
## Start: AIC=23040.2
## Victoire ~ Couleur.joueur + Différence.Elo + Type.partie + Site +
## Longueur.Partie
##
## Df Deviance AIC
## - Type.partie 4 22963 23012
## - Longueur.Partie 1 22957 23035
## - Site 1 22958 23036
## <none> 22952 23040
## - Couleur.joueur 1 22964 23042
## - Différence.Elo 1 24055 24133
##
## Step: AIC=23011.78
## Victoire ~ Couleur.joueur + Différence.Elo + Site + Longueur.Partie
##
## Df Deviance AIC
## - Longueur.Partie 1 22968 23007
## - Site 1 22969 23008
## <none> 22963 23012
## - Couleur.joueur 1 22975 23014
## - Différence.Elo 1 24103 24142
##
## Step: AIC=23006.79
## Victoire ~ Couleur.joueur + Différence.Elo + Site
##
## Df Deviance AIC
## - Site 1 22974 23003
## <none> 22968 23007
## - Couleur.joueur 1 22980 23009
## - Différence.Elo 1 24111 24140
##
## Step: AIC=23003.22
## Victoire ~ Couleur.joueur + Différence.Elo
##
## Df Deviance AIC
## <none> 22974 23003
## - Couleur.joueur 1 22986 23006
## - Différence.Elo 1 24151 24171
##
## Call: glm(formula = Victoire ~ Couleur.joueur + Différence.Elo, family = "binomial",
## data = chess_3)
##
## Coefficients:
## (Intercept) Couleur.joueurNoir Différence.Elo
## -0.056694 -0.108413 0.005085
##
## Degrees of Freedom: 17434 Total (i.e. Null); 17432 Residual
## Null Deviance: 24160
## Residual Deviance: 22970 AIC: 22980
La méthode de descente fait passer de AIC=23040.2 à AIC=23003.22
Différence.Elo et Couleur.joueurNoir sont les variables les plus significatives.
Ensuite Type.partieClassique,SiteLichess.com et Longueur.Partie sont significatives aussi même si elles le sont bien moins.
glmbest2<-glm(Victoire~Couleur.joueur+Différence.Elo,data=chess_3,family="binomial")
summary(glmbest2)##
## Call:
## glm(formula = Victoire ~ Couleur.joueur + Différence.Elo, family = "binomial",
## data = chess_3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -0.0566938 0.0224819 -2.522 0.011677 *
## Couleur.joueurNoir -0.1084134 0.0312971 -3.464 0.000532 ***
## Différence.Elo 0.0050854 0.0001722 29.532 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 24163 on 17434 degrees of freedom
## Residual deviance: 22974 on 17432 degrees of freedom
## AIC: 22980
##
## Number of Fisher Scoring iterations: 4
#Proba que bob gagne avec les blancs et adversaire qui a 200 elo de moins
#Différence.Elo=200 et il joue les blancs
#Bob est blanc donc on a 0 de contribution au lieu de 1*-0.1084134 s'il était noir
Bobscore<--0.0566938 +0*-0.1084134 +0.0050854*200
probaBob<-exp(Bobscore)/(1+exp(Bobscore))
probaBob## [1] 0.7231991
Bob a donc 72.3% de chance de gagner en jouant les blancs et en ayant 200 elo de plus que son adversaire.
## [1] 36
Il y’a exactement 36 ouvertures que Bob a joué plus de 100 fois dans l’ensemble de ses parties.
chess_3$ECO<-as.character(chess_3$ECO)
chess_3$ECO[!(chess_3$ECO %in% open)]<-"Peu joué"
chess_3$ECO<-as.factor(chess_3$ECO)
#View(chess_3)##
## Call:
## glm(formula = Victoire ~ ., family = "binomial", data = chess_3)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.3352409 0.1915359 1.750 0.08007 .
## Couleur.joueurNoir -0.2902743 0.0623532 -4.655 3.23e-06 ***
## Type.partieBullet 0.1162571 0.0565141 2.057 0.03967 *
## Type.partieClassique 0.0344762 0.0946966 0.364 0.71581
## Type.partieCorrespondance -0.1350239 0.2628311 -0.514 0.60744
## Type.partieRapide 0.0883830 0.0775651 1.139 0.25451
## SiteLichess.com -0.0847414 0.0457586 -1.852 0.06404 .
## Year2018 0.2806963 0.2465952 1.138 0.25500
## Year2020 -0.0617735 0.0750905 -0.823 0.41071
## Year2021 -0.0419436 0.0769089 -0.545 0.58550
## Year2022 -0.1134652 0.0669522 -1.695 0.09013 .
## Year2023 -0.1278492 0.0741896 -1.723 0.08484 .
## Year2024 -0.2347601 0.0790438 -2.970 0.00298 **
## Year2025 -0.3006071 0.1250294 -2.404 0.01620 *
## ECOA13 0.0035649 0.2501052 0.014 0.98863
## ECOA40 -0.0296732 0.1875191 -0.158 0.87427
## ECOA41 0.2265089 0.2404060 0.942 0.34609
## ECOA43 -0.1170147 0.2689635 -0.435 0.66352
## ECOA50 0.2139532 0.2816684 0.760 0.44750
## ECOA52 -0.0256811 0.2575999 -0.100 0.92059
## ECOA53 -0.0594680 0.3085190 -0.193 0.84715
## ECOA56 0.1149811 0.3004207 0.383 0.70192
## ECOA57 0.3567604 0.2385727 1.495 0.13481
## ECOA84 -0.2410348 0.2848794 -0.846 0.39750
## ECOA85 0.3078628 0.2932694 1.050 0.29383
## ECOC00 0.1661905 0.1798033 0.924 0.35534
## ECOC01 0.1812252 0.1906603 0.951 0.34185
## ECOC02 0.3282712 0.1892177 1.735 0.08276 .
## ECOC05 -0.0213547 0.2191947 -0.097 0.92239
## ECOC06 0.3491873 0.2396017 1.457 0.14502
## ECOC11 0.3583701 0.2047734 1.750 0.08010 .
## ECOC12 0.2405234 0.2159989 1.114 0.26548
## ECOD00 0.2567405 0.2457000 1.045 0.29605
## ECOD02 0.0645445 0.2567593 0.251 0.80152
## ECOD06 0.2106704 0.2257837 0.933 0.35079
## ECOD10 0.2581835 0.1972479 1.309 0.19056
## ECOD20 0.0949407 0.2135140 0.445 0.65657
## ECOD30 0.0625080 0.2068155 0.302 0.76247
## ECOD31 0.3448042 0.2113357 1.632 0.10277
## ECOD35 -0.1304124 0.2119205 -0.615 0.53830
## ECOD37 0.1173672 0.2297122 0.511 0.60940
## ECOD50 0.0325440 0.2730080 0.119 0.90511
## ECOD53 -0.1124552 0.2279846 -0.493 0.62183
## ECOD55 -0.0405290 0.2143573 -0.189 0.85004
## ECOD85 -0.0980135 0.2892880 -0.339 0.73475
## ECOE00 -0.0408147 0.2894072 -0.141 0.88785
## ECOE11 0.1911675 0.3015769 0.634 0.52615
## ECOE32 -0.0791831 0.2899303 -0.273 0.78477
## ECOE61 0.3411407 0.2056582 1.659 0.09716 .
## ECOPeu joué 0.0239411 0.1796940 0.133 0.89401
## Longueur.Partie -0.0083263 0.0011916 -6.987 2.80e-12 ***
## Difference.Gaffe -1.3265509 0.0212406 -62.454 < 2e-16 ***
## Différence.Elo 0.0045309 0.0002077 21.816 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 24163 on 17434 degrees of freedom
## Residual deviance: 16416 on 17382 degrees of freedom
## AIC: 16522
##
## Number of Fisher Scoring iterations: 5
ECOC11 est associé au coefficient positif le plus élevé donc il s’agit de l’ouverture parmis toutes , qui contribue le plus à la victoire de Bob.
ECOA84 est associé au coefficient le plus grand négativement ce qui explique que cette ouverture contribue le plus à la defaite de Bob parmis toutes les ouvertures.
Rapport de cote ajusté ajusté entre ces deux ouvertures et intervalle de confiance à 95%
## ECOC11
## 0.599405
## ECOC11
## 1.821035
IC<-confint.default(glmfinal)
err_s_diff<-sqrt(vcov(glmfinal)["ECOC11", "ECOC11"]+vcov(glmfinal)["ECOA84","ECOA84"]-2*vcov(glmfinal)["ECOC11","ECOA84"])
IC_OR<-exp(d_c+c(inf=-1.96,sup=1.96)*err_s_diff)
IC_OR## inf sup
## 1.102987 3.006533
Bob a approximativement 1.8 fois plus de chance de gagner la partie avec une ouverture C11 plutôt que A84.
1 n’appartient pas à l’IC_OR donc le résultat est statistiquement significatif au seuil 95%
On peut affirmer avec 95% de confiance que l’ouverture C11 est meilleur que l’ouverture A84 pour Bob.
Choix du jeu et ce que je compte faire avec : vgsales.csv
Problématique : L’objectif va être dans un premier temps d’adapter un modèle dans le but de prédire le nombre de vente d’un jeu sur console portable et faire la même chose sur les jeux de console de salon. L’objectif est de determiner la comparaison d’influence entre ces deux manière de voir le jeu vidéo.
On va globalement regarder la composition de la base de données et faire des petites analyse globales sur le jeu vidéo , ainsi nous allons faire des choix en conséquence sur les variables qu l’on modifiera et gardera.
On pourra également faire une regression logistique pour determiner si un jeu est populaire ou non populaire en fonction d’une nouvelle variable score. Pour effectuer ceci , nous devrons determiner ce que l’on appel succès.
Ce jeu de données nous renseigne sur 16 598 jeux videos en donnant leurs intitulés (de quel jeu il s’agit) , leurs rangs (les plus populaires , basé sur les ventes globales).
Nous retrouvons également la plateforme associé à chaque jeu , l’année de sortie , l’organisme qui a publié le jeu , le genre du jeu (Action, RP ou autre) et enfin les ventes focalisés sur l’Europe , le Japon , les ventes mondiales et les ventes dans les autres pays réunis).
Ainsi ce jeu de donnée comporte 16 598 jeux pour 11 variables.
Nous avons 6 variables qualitatives et 5 quantitatives.
Les variables quantitatives sont les nombres d’exemplaires vendus en millions dans les différentes régions : Japon , Europe , Amérique du nord , les autres et les ventes globales.
On s’interessera aussi au succès des jeux pour les petits éditeurs.
## [1] "Wii" "NES" "GB" "DS" "X360" "PS3" "PS2" "SNES" "GBA" "3DS"
## [11] "PS4" "N64" "PS" "XB" "PC" "2600" "PSP" "XOne" "GC" "WiiU"
## [21] "GEN" "DC" "PSV" "SAT" "SCD" "WS" "NG" "TG16" "3DO" "GG"
## [31] "PCFX"
## [1] "2006" "1985" "2008" "2009" "1996" "1989" "1984" "2005" "1999" "2007"
## [11] "2010" "2013" "2004" "1990" "1988" "2002" "2001" "2011" "1998" "2015"
## [21] "2012" "2014" "1992" "1997" "1993" "1994" "1982" "2003" "1986" "2000"
## [31] "N/A" "1995" "2016" "1991" "1981" "1987" "1980" "1983" "2020" "2017"
## [1] "Sports" "Platform" "Racing" "Role-Playing" "Puzzle"
## [6] "Misc" "Shooter" "Simulation" "Action" "Fighting"
## [11] "Adventure" "Strategy"
## Rank Name Platform Year
## Min. : 1 Length:16598 Length:16598 Length:16598
## 1st Qu.: 4151 Class :character Class :character Class :character
## Median : 8300 Mode :character Mode :character Mode :character
## Mean : 8301
## 3rd Qu.:12450
## Max. :16600
## Genre Publisher NA_Sales EU_Sales
## Length:16598 Length:16598 Min. : 0.0000 Min. : 0.0000
## Class :character Class :character 1st Qu.: 0.0000 1st Qu.: 0.0000
## Mode :character Mode :character Median : 0.0800 Median : 0.0200
## Mean : 0.2647 Mean : 0.1467
## 3rd Qu.: 0.2400 3rd Qu.: 0.1100
## Max. :41.4900 Max. :29.0200
## JP_Sales Other_Sales Global_Sales
## Min. : 0.00000 Min. : 0.00000 Min. : 0.0100
## 1st Qu.: 0.00000 1st Qu.: 0.00000 1st Qu.: 0.0600
## Median : 0.00000 Median : 0.01000 Median : 0.1700
## Mean : 0.07778 Mean : 0.04806 Mean : 0.5374
## 3rd Qu.: 0.04000 3rd Qu.: 0.04000 3rd Qu.: 0.4700
## Max. :10.22000 Max. :10.57000 Max. :82.7400
Il y’a 31 plateforme de jeu , les années de publication vont de 1980 à 2020 sans compter toutes les années entre.
Il y’a 12 genre de jeu repertorié et 579 éditeurs.
Pour le reste des variables qualitatives , il y’a le nom du jeu et le rang de celui-ci en terme de nombre d’exemplaire vendu.
On regarde les ventes globales pour chaque année
## Warning: There was 1 warning in `mutate()`.
## ℹ In argument: `Year = as.numeric(Year)`.
## Caused by warning:
## ! NAs introduced by coercion
jv<-jv%>%mutate(Rank=as.numeric(Rank))
jv<-jv%>%mutate(NA_Sales=as.numeric(NA_Sales))
jv<-jv%>%mutate(EU_Sales=as.numeric(EU_Sales))
jv<-jv%>%mutate(JP_Sales=as.numeric(JP_Sales))
jv<-jv%>%mutate(Other_Sales=as.numeric(Other_Sales))
jv<-jv%>%mutate(Global_Sales=as.numeric(Global_Sales))
sum(is.na(jv$Rank))#0## [1] 0
## [1] 271
## [1] 0
## [1] 0
## [1] 0
## [1] 0
## [1] 0
#Ca ne pose pas de problème de garder les N/A
sum_V<-jv%>%group_by(jv$Year)%>%summarise(Total_Ventes=sum(Global_Sales,na.rm=TRUE))
print(sum_V)## # A tibble: 40 × 2
## `jv$Year` Total_Ventes
## <dbl> <dbl>
## 1 1980 11.4
## 2 1981 35.8
## 3 1982 28.9
## 4 1983 16.8
## 5 1984 50.4
## 6 1985 53.9
## 7 1986 37.1
## 8 1987 21.7
## 9 1988 47.2
## 10 1989 73.4
## # ℹ 30 more rows
Interprétation :
On va s’intéresser à présent à l’année speciale qu’a été 2008 (Grosse année de vente). On pourrait se focaliser également sur 2005-2011.
## [1] 1699 11
#jv2008
jv2008$Platform<-relevel(as.factor(jv2008$Platform),"DS")
plateforme_vente2008<-table(jv2008$Platform,jv2008$Global_Sales)
#plateforme_vente2008
fisher.test(plateforme_vente2008,simulate.p.value=TRUE)##
## Fisher's Exact Test for Count Data with simulated p-value (based on
## 2000 replicates)
##
## data: plateforme_vente2008
## p-value = 0.0004998
## alternative hypothesis: two.sided
Nous avons une p-valeur de 0.0004998 ce qui montre qu’on rejette l’hypothèse nulle , ainsi il existe une association significative entre la plateforme de jeu et le nombre de vente.
Cela est cohérent (par exemple) avec le fait que l’année 2008 est une année marquante pour la Wii avec des très grosses sorties qui resterons majeurs sur cette année. (Mario kart Wii , smash bros brawl). Cette année comporte également un nombre massif de vente de la Wii et de la DS avec 1,6M et 2,25M respectivement alors que 708 000 et 566 000 PS3 et Xbox ont été vendu cette année la.
On remarque que l’année 2008 est une année marqué par une grosse présence de Nintendo (jeux DS et Wii).
Creation d’un indicateur de popularité et comparaison entre les régions :
On va se baser exclusivement sur les notes mais je compte normaliser sur chaque colonne de vente en excluant les ventes globales qui sont la somme de toutes.
Je definirai donc une variable score étant la somme normalisé de chacune des ventes.
library(dplyr)
jv2<-read.csv("vgsales.csv",stringsAsFactors=FALSE)
normaliser<-function(x){
return((x-min(x,na.rm=TRUE))/(max(x,na.rm=TRUE)-min(x,na.rm=TRUE)))
}
jv2$Year<-as.numeric(jv2$Year)## Warning: NAs introduced by coercion
jv2$popuG<-normaliser(jv2$NA_Sales)+normaliser(jv2$EU_Sales)+normaliser(jv2$JP_Sales)+normaliser(jv2$Other_Sales)
#On ne garde que les variables explicatives et la cible (popuG)
jv2_I<-jv2[,c("Platform","Year","Genre","Publisher","popuG")]
#Filtrage des éditeurs (<50)
jv2_I<-jv2_I[jv2_I$Publisher%in%names(which(table(jv2_I$Publisher)>=50)),]
Ce graphique montre que la massive partie des jeux de notre base de
donnée n’est pas populaire (en comparaison avec les bests seller).
Il y’a donc une répartition défavorable en quelque sorte. Nous avons que quelques jeux qui ont un gros score mais ils se font petit dans l’ensemble de la plupart des jeux qui n’ont pas une popularité élevé.
à la lumière d’autres types d’art (livre, cinéma ou autre) on retrouve beaucoup de gros titres et de titre ayant un impact relatif moindre.
Ici on cherche à regrouper les modalités de la variable éditeur en groupe plus large pour pouvoir obtenir une meilleure lecture des informations.
#Filtre des NA
jv2_I<-jv2_I%>%filter(!is.na(Year))
#unique(jv2_I$Publisher)
constructeurs<-c("Nintendo","Microsoft Game Studios","Sony Computer Entertainment")
Grands<-c("Take-Two Interactive","Activision","Ubisoft","Electronic Arts","Sega","SquareSoft","Capcom","Konami Digital Entertainment","Square Enix","Namco Bandai Games","THQ","Vivendi Games",
"Warner Bros. Interactive Entertainment")
Moyens<-c("Bethesda Softworks","Atari","505 Games","LucasArts","Eidos Interactive","Disney Interactive Studios","Codemasters", "Midway Games","Deep Silver","Tecmo Koei","Infogrames","Atlus","Focus Home Interactive")
petits<-c("Virgin Interactive","Acclaim Entertainment","Majesco Entertainment","Unknown","Banpresto","D3Publisher","Crave Entertainment", "Hudson Soft","Rising Star Games","N/A","Zoo Digital Publishing","Empire Interactive","Nippon Ichi Software","Ignition Entertainment","Kadokawa Shoten", "Marvelous Interactive","Idea Factory","5pb")
jv2_I<-jv2_I%>%mutate(Publisher=case_when(
Publisher %in% constructeurs~"Constructeur",
Publisher %in% Grands~"Grand",
Publisher %in% Moyens~"Moyen",
Publisher %in% petits~"Petit",
TRUE~"Autres"))Gestion des années d’apparition
# L'âge d'or de l'arcade et des premières consoles (8/16 bits)
retro<-1980:1994
# L'arrivée de la 3D et la domination de la PS1/PS2
TroisD<-1995:2005
# L'ère de la HD, du jeu en ligne et de la Wii
HD<-2006:2013
# L'ère moderne (PS4, Switch, Cloud)
moderne<-2014:2020
jv2_I<-jv2_I%>%mutate(Periode=case_when(
Year%in%retro~"Retro",
Year%in%TroisD~"3D",
Year%in%HD~"HD",
Year%in%moderne~"Moderne",
TRUE~"Inconnu"))Gestion des plateformes
#unique(jv2_I$Platform)
Nintendo <- c("Wii","NES","GB","DS","SNES","GBA","3DS","N64","GC","WiiU")
Sony <- c("PS4","PS3","PS2","PS","PSP","PSV")
Microsoft <- c("X360","XB","XOne")
PC <- c("PC")
Sega_Retro <- c("GEN","DC","SAT","SCD","GG")
Autres_Retro <- c("2600","WS","3DO","NG","TG16")
jv2_I<-jv2_I%>%
mutate(Platform_Group=case_when(
Platform%in%c("Wii","NES","GB","DS","SNES","GBA","3DS","N64","GC","WiiU")~ "Nintendo",
Platform%in%c("PS4","PS3","PS2","PS","PSP","PSV")~"Sony",
Platform%in%c("X360","XB","XOne")~"Microsoft",
Platform=="PC"~"PC",
TRUE~"Autres/Retro"))Consoles portables et Salon
consoles_portables<-c("GB","DS","GBA","3DS","PSP","PSV","WS","GG")
jv2_I$Support_Type<-ifelse(jv2_I$Platform%in%consoles_portables,"Portable", "Salon")
table(jv2_I$Support_Type)##
## Portable Salon
## 3975 9033
## Platform Year Genre Publisher
## Length:13008 Min. :1980 Length:13008 Length:13008
## Class :character 1st Qu.:2003 Class :character Class :character
## Mode :character Median :2007 Mode :character Mode :character
## Mean :2007
## 3rd Qu.:2010
## Max. :2020
## popuG Periode Platform_Group Support_Type
## Min. :0.000000 Length:13008 Length:13008 Length:13008
## 1st Qu.:0.003444 Class :character Class :character Class :character
## Median :0.008992 Mode :character Mode :character Mode :character
## Mean :0.027466
## 3rd Qu.:0.025019
## Max. :3.169263
Création de la variable binaire succès qui se base sur le quartile 0.9 de la popularité.
# Création d'une variable pour le Top 10%
jv2_I$Succes_Top10<-ifelse(jv2_I$popuG>quantile(jv2_I$popuG,0.9),1,0)
# Calcul de l'OR pour le succès en fonction du support
tab_10<-table(jv2_I$Support_Type,jv2_I$Succes_Top10)
oddsratio.wald(tab_10)## $data
##
## 0 1 Total
## Portable 3701 274 3975
## Salon 8006 1027 9033
## Total 11707 1301 13008
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Portable 1.0000 NA NA
## Salon 1.7327 1.508077 1.99078
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Portable NA NA NA
## Salon 6.661338e-16 7.812094e-16 4.547415e-15
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
On trouve des p-valeurs très petites donc la différence entre salon et portable n’est pas due au hasard au seuil 95%. Cela veut dire qu’en moyenne il y’a 1.7327 fois plus de jeu étant un top 20% de succès sur console de salon.
Le succès des hits et donc plus controlé par la console de salon.
Succès top 10% en fonction de la plateforme.
## $data
##
## 0 1 Total
## Autres/Retro 256 18 274
## Microsoft 1804 166 1970
## Nintendo 4350 499 4849
## PC 683 30 713
## Sony 4614 588 5202
## Total 11707 1301 13008
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Autres/Retro 1.000000 NA NA
## Microsoft 1.308697 0.7908511 2.165625
## Nintendo 1.631469 1.0026562 2.654639
## PC 0.624695 0.3422433 1.140253
## Sony 1.812455 1.1152788 2.945445
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Autres/Retro NA NA NA
## Microsoft 0.29563302 0.34710543 0.29381563
## Nintendo 0.03894833 0.04954068 0.04663431
## PC 0.13317850 0.13699960 0.12240287
## Sony 0.01042556 0.01321338 0.01491006
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Ici on voit que Sony est le groupe qui comptabilise le plus de succès
Je souhaite regarder également ce succès ci selon les périodes du jeu vidéo
## $data
##
## 0 1 Total
## 3D 4071 467 4538
## HD 6329 586 6915
## Moderne 1093 105 1198
## Retro 214 143 357
## Total 11707 1301 13008
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## 3D 1.0000000 NA NA
## HD 0.8071360 0.7103063 0.9171657
## Moderne 0.8374393 0.6707402 1.0455683
## Retro 5.8251416 4.6174368 7.3487252
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## 3D NA NA NA
## HD 0.001063825 1.061746e-03 9.989755e-04
## Moderne 0.114324432 1.289172e-01 1.168312e-01
## Retro 0.000000000 9.046938e-44 2.077751e-60
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Ici les informations sont très intéressantes puisque l’on peut voir l’évolution d’un hit en fonction de la période. Un jeu dit “retro” de l’ancien était beaucoup plus probable d’être un hit. L’effet de l’époque infique qu’un jeu retro a presque 6 fois plus de chance d’être un hit qu’un jeu de l’époque 3D.
On visualise l’effet l’effet de la période et du support sur la popularité
ggplot(jv2_I,aes(x=Periode,y=popuG,color=Support_Type))+geom_jitter(alpha=0.4) +labs(title ="Popularité des jeux selon la période et le support",
x="Période",y="Popularité (Ventes Mondiales)")+theme_light()
On voit un nuage de point très dense et qui monte assez haut pour la
période HD. L’ère HD est celle ou le marché du jeu vidéo à exploser en
volume.
à présent on s’intéresse au genre des jeux étant des succès.
## $data
##
## 0 1 Total
## Action 2520 258 2778
## Adventure 782 23 805
## Fighting 595 75 670
## Misc 1170 108 1278
## Platform 633 123 756
## Puzzle 347 42 389
## Racing 879 96 975
## Role-Playing 960 185 1145
## Shooter 906 145 1051
## Simulation 592 61 653
## Sports 1813 163 1976
## Strategy 510 22 532
## Total 11707 1301 13008
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Action 1.0000000 NA NA
## Adventure 0.2872777 0.1861329 0.4433847
## Fighting 1.2311902 0.9378057 1.6163574
## Misc 0.9016100 0.7127242 1.1405542
## Platform 1.8979389 1.5053210 2.3929595
## Puzzle 1.1822264 0.8373708 1.6691044
## Racing 1.0667513 0.8336371 1.3650525
## Role-Playing 1.8822674 1.5365640 2.3057489
## Shooter 1.5632219 1.2581172 1.9423173
## Simulation 1.0064425 0.7507919 1.3491441
## Sports 0.8781539 0.7152552 1.0781526
## Strategy 0.4213406 0.2698438 0.6578914
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Action NA NA NA
## Adventure 5.474265e-11 7.931915e-11 2.295753e-09
## Fighting 1.382112e-01 1.448059e-01 1.336648e-01
## Misc 3.893658e-01 4.091922e-01 3.876902e-01
## Platform 1.519331e-07 1.454075e-07 4.054096e-08
## Puzzle 3.418437e-01 3.548919e-01 3.409501e-01
## Racing 6.040068e-01 6.106748e-01 6.074596e-01
## Role-Playing 1.973488e-09 2.291282e-09 6.380457e-10
## Shooter 7.492518e-05 7.415607e-05 4.960491e-05
## Simulation 9.558998e-01 9.404405e-01 9.657410e-01
## Sports 2.143885e-01 2.335310e-01 2.142976e-01
## Strategy 2.671572e-05 3.873131e-05 9.151526e-05
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Le top 10% des jeux les plus populaire sont les jeux de plateforme et de role-play qui sont proche de 90% de chance d’être plus populaire qu’un jeu d’action. (p-valeur significative)
## $data
##
## 0 1 Total
## Constructeur 1100 467 1567
## Grand 7065 702 7767
## Moyen 1996 100 2096
## Petit 1546 32 1578
## Total 11707 1301 13008
##
## $measure
## odds ratio with 95% C.I.
## estimate lower upper
## Constructeur 1.00000000 NA NA
## Grand 0.23404575 0.20486428 0.26738391
## Moyen 0.11800904 0.09393478 0.14825322
## Petit 0.04875468 0.03379801 0.07033014
##
## $p.value
## two-sided
## midp.exact fisher.exact chi.square
## Constructeur NA NA NA
## Grand 0 2.704066e-93 1.313272e-113
## Moyen 0 2.704544e-98 2.180371e-95
## Petit 0 9.394347e-117 8.148797e-101
##
## $correction
## [1] FALSE
##
## attr(,"method")
## [1] "Unconditional MLE & normal approximation (Wald) CI"
Les gros constructeurs prennent la part majoritaire des succès sur le marché. (5 fois plus que les grands éditeurs).
Graphique boite à moustache montrant la répartition des hits selon les éditeurs
library(ggplot2)
ggplot(jv2_I,aes(x=Publisher,y=log(popuG+1),fill=Publisher))+geom_boxplot() +
labs(title="Distribution du succès par type d'éditeur",
x="Catégorie d'Éditeur",y="Ventes (log scale)")+theme_minimal()Nous remarquons directement l’interêt de ce genre de visualisation. En effet on voit tout de suite que les “Constructeurs” ont une médiane de ventes bien plus haute et beaucoup d’outliers (les hits mondiaux).
On fait à present un glm par descente avec critère de sélection AIC/BIC
# Modèle Gamma (très adapté aux scores de ventes)
modele<-glm(popuG+10^(-6)~Year+Platform+Publisher+Periode,data=jv2_I,family=Gamma(link="log"))
summary(modele)##
## Call:
## glm(formula = popuG + 10^(-6) ~ Year + Platform + Publisher +
## Periode, family = Gamma(link = "log"), data = jv2_I)
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 72.14079 19.01848 3.793 0.000149 ***
## Year -0.03763 0.00957 -3.932 8.46e-05 ***
## Platform3DO -1.05175 1.80562 -0.582 0.560246
## Platform3DS 1.18506 0.36085 3.284 0.001026 **
## PlatformDC 0.58622 0.41018 1.429 0.152975
## PlatformDS 0.71519 0.33512 2.134 0.032849 *
## PlatformGB 1.33033 0.32906 4.043 5.31e-05 ***
## PlatformGBA 0.10422 0.33068 0.315 0.752649
## PlatformGC -0.15940 0.33349 -0.478 0.632681
## PlatformGEN 0.75106 0.43436 1.729 0.083813 .
## PlatformGG -1.67959 1.79638 -0.935 0.349811
## PlatformN64 0.32091 0.32801 0.978 0.327917
## PlatformNES 1.19907 0.29001 4.135 3.58e-05 ***
## PlatformNG -0.76824 1.80611 -0.425 0.670584
## PlatformPC 0.45743 0.33934 1.348 0.177679
## PlatformPS 0.78208 0.31009 2.522 0.011678 *
## PlatformPS2 1.04935 0.32646 3.214 0.001311 **
## PlatformPS3 1.58815 0.34508 4.602 4.22e-06 ***
## PlatformPS4 2.13192 0.36887 5.780 7.66e-09 ***
## PlatformPSP 0.72688 0.33914 2.143 0.032106 *
## PlatformPSV 0.79901 0.36524 2.188 0.028714 *
## PlatformSAT 0.48384 0.32758 1.477 0.139688
## PlatformSCD -0.33691 0.76601 -0.440 0.660070
## PlatformSNES 1.17920 0.28286 4.169 3.08e-05 ***
## PlatformTG16 -1.17353 1.80611 -0.650 0.515859
## PlatformWii 1.17751 0.33977 3.466 0.000531 ***
## PlatformWiiU 0.84183 0.38315 2.197 0.028029 *
## PlatformWS 0.50417 0.79106 0.637 0.523919
## PlatformX360 1.34817 0.34221 3.940 8.20e-05 ***
## PlatformXB -0.20634 0.33144 -0.623 0.533585
## PlatformXOne 1.53630 0.37556 4.091 4.33e-05 ***
## PublisherGrand -1.15371 0.05112 -22.568 < 2e-16 ***
## PublisherMoyen -1.59451 0.06131 -26.009 < 2e-16 ***
## PublisherPetit -2.13020 0.06525 -32.647 < 2e-16 ***
## PeriodeHD -0.24921 0.07287 -3.420 0.000629 ***
## PeriodeModerne -0.49526 0.12474 -3.970 7.22e-05 ***
## PeriodeRetro 0.10957 0.19540 0.561 0.574979
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for Gamma family taken to be 3.172353)
##
## Null deviance: 28488 on 13007 degrees of freedom
## Residual deviance: 20898 on 12971 degrees of freedom
## AIC: -75571
##
## Number of Fisher Scoring iterations: 10
## Start: AIC=-75570.54
## popuG + 10^(-6) ~ Year + Platform + Publisher + Periode
##
## Df Deviance AIC
## <none> 20898 -75571
## - Periode 3 20948 -75561
## - Year 1 20947 -75557
## - Platform 29 23330 -74862
## - Publisher 3 24780 -74353
## Start: AIC=-75294.03
## popuG + 10^(-6) ~ Year + Platform + Publisher + Periode
##
## Df Deviance AIC
## - Periode 3 20948 -75307
## <none> 20898 -75294
## - Year 1 20947 -75288
## - Platform 29 23330 -74802
## - Publisher 3 24780 -74099
##
## Step: AIC=-75284.31
## popuG + 10^(-6) ~ Year + Platform + Publisher
modele est déjà un très bon modèle par critère de descente AIC , le critère BIC nous indique que l’on peut enlever la variable de période ce qui améliorera le modèle.
Ainsi la variable Période (en comparaison avec les autres variables) n’explique pas suffisament bien la popularité d’un jeu.
à présent on s’intéressera à une regression logistique sur la variable créer ci-dessus (succès top 10%) pour determiner les variables qui influence un jeu à être un top jeu 10%.
modeleLog<-glm(Succes_Top10~Platform_Group+Publisher+Periode+Support_Type,data=jv2_I,family=binomial)
summary(modeleLog)##
## Call:
## glm(formula = Succes_Top10 ~ Platform_Group + Publisher + Periode +
## Support_Type, family = binomial, data = jv2_I)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.04877 0.29630 -10.289 < 2e-16 ***
## Platform_GroupMicrosoft 1.33995 0.29311 4.571 4.84e-06 ***
## Platform_GroupNintendo 1.55901 0.27895 5.589 2.28e-08 ***
## Platform_GroupPC 0.65371 0.33679 1.941 0.0523 .
## Platform_GroupSony 1.72945 0.28418 6.086 1.16e-09 ***
## PublisherGrand -1.34209 0.07187 -18.675 < 2e-16 ***
## PublisherMoyen -2.02679 0.11947 -16.965 < 2e-16 ***
## PublisherPetit -2.97292 0.18985 -15.659 < 2e-16 ***
## PeriodeHD 0.03491 0.06957 0.502 0.6158
## PeriodeModerne 0.02484 0.11777 0.211 0.8330
## PeriodeRetro 2.13666 0.15475 13.807 < 2e-16 ***
## Support_TypeSalon 0.60780 0.08300 7.323 2.43e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 8458.2 on 13007 degrees of freedom
## Residual deviance: 7410.6 on 12996 degrees of freedom
## AIC: 7434.6
##
## Number of Fisher Scoring iterations: 6
On peut remarquer ici un effet big three des plateformes (Sony , Nintendo et Microsoft)
La hiérarchie impitoyable des Éditeurs : Les constructeurs se voient avoir un succès écrasant , les Grand éditeurs ont 5 fois moins de succès et pour les petits nous tombons à 5% de leurs parts.
Le facteur “Salon” Retour en force : un jeu étant sur un support salon favorise la qualité d’un jeu à être un succès.
L’exception “Rétro” : c’est une nuance subtile, à cette époque il n’y avait moins de jeu mais ils avaient tendance à plus facilement être des succès ce qui n’est plus le cas dans notre époque moderne du jeu vidéo. (Il n’y avait pas à l’époque l’installation actuelle/La grande place qu’a pris les jeux vidéos dans la vie des Hommes).
On effectue la comparaison entre console de salon et console portable
jv2_I$Support_Type<-as.factor(jv2_I$Support_Type) #Car variable binaire pour regression logistique
modeleSupport<-glm(Support_Type~Publisher+Genre+Periode+popuG,
family=binomial,data=jv2_I)
summary(modeleSupport)##
## Call:
## glm(formula = Support_Type ~ Publisher + Genre + Periode + popuG,
## family = binomial, data = jv2_I)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.09071 0.08096 13.473 < 2e-16 ***
## PublisherGrand 0.30018 0.06595 4.552 5.32e-06 ***
## PublisherMoyen 0.50166 0.08057 6.226 4.78e-10 ***
## PublisherPetit -0.24402 0.08242 -2.961 0.003069 **
## GenreAdventure -0.61851 0.08553 -7.231 4.78e-13 ***
## GenreFighting 0.49369 0.10822 4.562 5.07e-06 ***
## GenreMisc -0.25718 0.07324 -3.511 0.000446 ***
## GenrePlatform -0.56010 0.09090 -6.162 7.19e-10 ***
## GenrePuzzle -1.46837 0.12055 -12.181 < 2e-16 ***
## GenreRacing 0.52477 0.09472 5.540 3.02e-08 ***
## GenreRole-Playing -0.56275 0.07514 -7.489 6.92e-14 ***
## GenreShooter 1.29919 0.11218 11.582 < 2e-16 ***
## GenreSimulation -0.49367 0.09167 -5.385 7.23e-08 ***
## GenreSports 0.55406 0.07276 7.615 2.63e-14 ***
## GenreStrategy -0.03727 0.10600 -0.352 0.725127
## PeriodeHD -0.82542 0.04707 -17.534 < 2e-16 ***
## PeriodeModerne -0.38612 0.07846 -4.921 8.60e-07 ***
## PeriodeRetro 1.15010 0.19210 5.987 2.14e-09 ***
## popuG 1.07515 0.34627 3.105 0.001903 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 16013 on 13007 degrees of freedom
## Residual deviance: 14466 on 12989 degrees of freedom
## AIC: 14504
##
## Number of Fisher Scoring iterations: 5
On retrouve ici une claire tendance entre console de salon et console portable.
Ces deux manières de jouer trouvent des utilisations différentes.
En effet les jeux de tir sont plus souvent de salon car plus adapté à l’être (necessite des capacités et équipement adapté sur une console de salon et offre donc une meilleure expérience de salon).
On voit également les jeux de sport , de combat de course qui sont beaucoup plus des jeux de console de salon (Proche de 2 fois plus de jeu de ces genre sont de salon).
Pour ce qui est des coefficients négatifs dans ce modèle on retrouve les jeux de puzzle ,aventure , plateforme , RPG et simulation qui sont donc des jeux qui se voient être plus joué sur console portable puisque ce sont des jeux rapides sans prise de tête ne necessitant pas forcément l’experience et l’installation d’une console de salon.
D’un point de vue des éditeurs on retrouve que les moyens , constructeurs et grand éditeurs ont un coefficient positif donc ils favorisent des sorties de jeux sur console de salon (ca peut s’expliquer puisque ces éditeurs privilégie le multiplateforme et également avec leurs moyens et leurs visibilités , ils peuvent se permettre de voir plus ambitieux et grand).
Cependant les petits éditeurs ont tendance à privilégier des sorties portable (coût de developpement plus bas , accessible plus facilement, barrière d’entrée plus simple)
Si l’on considère maintenant les période du jeu vidéo on retrouve que l’époque retro se hisse au sommet avec une présence dominante des jeux sur consoles de salon.
On trouve ensuite un coefficient négatif à l’ère HD qui est l’époque des DS/PSP d’ou cette ère met en lumière les consoles portables qui deviennent une forme de révolution dans le jeu.
Ensuite on retrouve une même tendance pour l’époque moderne mais qui s’est beaucoup plus atténuée (-0.8 -> -0.38) ce qui montre que le portable garde de sa présence même si cette présence diminue. Cette base de donnée ne montre pas le passage à l’ère du mobile avec des jeux comme clash of clan , clash royal , subway surfer , doodle jump , ce qui pourrait augmenter la cote du mobile face au salon.
On retiendra que le choix de la plateforme (salon/portable) n’est pas une conséquence du hasard , un petit éditeur voulant developper un puzzle game se verra mal se lancer sur du salon en essayant de concurencer d’autres jeux plus complexes et innovants sur ce support.
Pour finir la variable de popularité dans ce modèle indique que la probabilité qu’un jeu soit un jeu de salon augmente son nombre de vente mondial. Plus un jeu à l’ambition d’être un carton , un succès massif , plus il a des chance d’être un jeu de salon.
Ainsi le portable se voit considérer des jeux à succès plus modeste puisque plus niche en globalité.
Pour conclure j’aimerai faire une ouverture de ce sujet en apportant une visualisation des corrélations par région.
library(corrplot)
Corr<-cor(jv[,c("NA_Sales","EU_Sales","JP_Sales","Other_Sales")])
corrplot(Corr,method="color",addCoef.col="black",type="upper",title="Corrélation des ventes par région")Pour conclure le salon et le portable offre des expériences totalement différentes et se voient dans cette branche du jeu vidéo être adapté à différent style de jeu , d’envie du moment , de la facilité à être mis en place. On pourrait aller plus loin dans cette étude si l’on avait à disposition de nouvelles variables comme par exemple des notes de joueur , le temps de jeu , la difficulté des jeux, la capacité (nombre de personne pouvant jouer) mais également les prix des jeux consoles sur le marché primaire et secondaire et aussi pourquoi pas les exigences d’âge pour jouer ou la présence plus ou moins développer de compétition dans ces jeux.
Ce graphique des corrélation pourrait également nous questionner sur la place du Japon dans cette industrie du jeu vidéo puisque le japon ne semble pas être très bien corrélé au marché du jeu dans les autres région.
Ce cas précis donne donc de l’intêret pour ainsi pouvoir comprendre en quoi , en quel mesure le Japon est il si différent.
(Détaillez le choix des individus, des variables et la nature du modèle)
J’ai décidé de segmenter les variables dont les modalités sont intéressantes dans ce contexte et donc par conséquent qui ne mérite pas d’être simplement supprimé.
J’ai donc décidé de joindre les années en époque définissant des ères dans le jeu vidéo , de regrouper les éditeurs les plus gros (>50) en groupes de popularité (Petits/Moyens/Grands studios).
J’ai aussi choisi de regrouper les plateforme en groupe de plateforme pour réduire la masse de donnée (considérer Wii et Wii U comme étant nintendo par exemple).
J’ai choisi de faire un modèle logistique pour la variable console de salon ou console portable puisque qu’il s’agit d’une variable binaire.
De plus une variable essentiel à été la variable de score sur laquelle j’ai éffectué un modèle de regression gamma , Ce choix s’est fait puisque la variable score a tendance à prendre énormément de petite valeurs (proche de 0 puisque la plupart des jeux ne sont pas très populaire face à d’autres dans ce jeu de données).
Cette variable score m’a permis de définir différentes variables binaire de succès avec une frontière de décisision basé sur la valeur du quartile choisi.
Ces différentes variables binaires nous ont donc permis d’établir des analyses des jeux vidéos selon leurs caractéristiques pour ainsi pouvoir imaginer pourquoi tel type de jeu a tendance à être un succès et pas un autre.