Partage
  • Partager sur Facebook
  • Partager sur Twitter

Prédiction de statistiques

Sujet résolu
    20 octobre 2017 à 17:42:56

    Bonjour,

    Je cherche à faire un modèle prédictif du nombre d'internaute pour les années à venir.

    Selon l'Internet World Stats, on sait que :

    Nombre d'internaute (en millions) pour le mois de décembre de chaque année :

    1995    16
    1996    36
    1997    70
    1998    147
    1999    248
    2000    361
    2001    513
    2002    587
    2003    719
    2004    817
    2005    1018
    2006    1093
    2007    1319
    2008    1574
    2009    1802
    2010    1971
    2011    2267
    2012    2497
    2013    2802
    2014    3079
    2015    3366
    2016    3696

    Ce qui, après un rapide calcule, nous donne en "utlisateur supplémentaire chaque seconde" :

    1995	+ 0.50/s
    1996	+ 0.82/s
    1997	+ 1.07/s
    1998	+ 2.44/s
    1999	+ 3.20/s
    2000	+ 3.58/s
    2001	+ 4.81/s
    2002	+ 2.34/s
    2003	+ 4.18/s
    2004	+ 3.10/s
    2005	+ 6.37/s
    2006	+ 2.37/s
    2007	+ 7.16/s
    2008	+ 8.08/s
    2009	+ 7.22/s
    2010	+ 5.35/s
    2011	+ 9.38/s
    2012	+ 7.29/s
    2013	+ 9.67/s
    2014	+ 8.78/s
    2015	+ 9.10/s
    2016	+ 10.46/s

    Les mêmes données, mais en graphiques :

    (Le deuxième n'est pas nommé car je ne l'ai pas fini)

    Le premier graphique, et encore moins le second, ne permet pas d'établir une évolution moyenne fiable de l'évolution du nombre d'internautes, comme en témoigne ceci :

    C'est déja moins pire si on part de 2002:

    Si je fais la même chose sur le second graphique :

    Si j'utilise le premier modèle (celui de 2002 à 2016), j’obtiens une prévision pour décembre 2017 de 4 036 millions d'internautes . si j'utilise la seconde, j'obtiens une prévision de 3 960 millions, ce qui fait quand même une différence de 76 millions entre les deux, et ce seulement pour une année, alors sur 5, 10 ou 15 ans ...

    Je me demande du coup comment peut ont, de la façons la plus fiable possible, prédire l'évolution du nombre d'internaute pour les prochaines années ? Je m'en retourne donc vers vous.

    Cordialement,

    -
    Edité par Bhasher 20 octobre 2017 à 18:26:01

    • Partager sur Facebook
    • Partager sur Twitter

    CodeWe is an open-source live code-sharing website.

      20 octobre 2017 à 22:08:34

      Il y a une citation célèbre qui dit : La prédiction est un art bien difficile, surtout en ce qui concerne l'avenir.

      Quand on aime les grands mots, on parle de modélisation : on bâtit un modèle (un modèle mathématique) qui représente au mieux le phénomène étudié. Quand on parle de modèle on essaie d'introduire plein de données explicatives.

      Par exemple, dans ton cas, on peut par exemple essayer de prédire d'une part le nombre d'internautes dans les pays développés, et d'autre part le nombre d'internautes dans les BRICS (Brésil, Inde, Chine) et enfin le nombre d'internautes dans le reste du monde.  Ainsi, tu as 3 nombres à estimer, mais chaque nombre est peut-être plus facile à estimer... 

      Ici, tu utilises un outil classique, un modèle de régression linéaire à une variable. Tu veux tracer une droite.... mais ce postulat n'est pas bon. La population de la terre évolue, mais relativement peu. Si tu traces une droite, tu vas nous annoncer un truc du genre : En 2050, il y aura 18 Mds d'internautes... et donc il y aura sur terre plus d'internautes que d'humains  :p

      Sur une question comme celle-ci, tu peux faire une estimation toute personnelle, sans aucun outil mathématique. Tu peux dire : à partir de 2050, tous les gens de plus de 10 ans seront des internautes...(peut-être un peu plus, ou un peu mpoins, peu importe). Et à l'aide de ce point à l'horizon, et des points dont tu disposes, tu peux essayer de dessiner une courbe qui te paraît cohérente. Ce que tu vas obtenir sera certainement plus solide que ce que tu as entrepris.

      Et surtout, tu vas voir que  même si tu te plantes sur ce point à l'horizon, même si tu remplaces 2050 par 2060..., l'impact sur ta prévision est relativement faible.

      • Partager sur Facebook
      • Partager sur Twitter
        20 octobre 2017 à 23:34:54

        Je dirais que l'extrapolation ne permet pas de prédire les prochaines valeurs, mais de définir une base de comparaison. Par exemple le graphique n°4 montre une tendance à la croissance linéaire. Extrapoler servira à comparer les vraies valeurs à cette tendance. Par exemple on dira en décembre 2017 : « si la tendance de ces dix dernières années s'était poursuivie, on aurait eu 3960 millions d'internautes ce mois-ci, or il n'y en a que 3880, on en déduit que la croissance du nombre d'internautes ralentit. »

        Mais pour faire des prévisions, c'est comme dit tbc92 : il faut modéliser.

        • Partager sur Facebook
        • Partager sur Twitter
          21 octobre 2017 à 12:02:31

          Merci de vos réponses.

          Le site de renseignement des utilisateurs fournis les informations par continents. J'en ai fais plusieurs graphiques :

          Le même, mais en ligne :

          Je trouve personnellement, la variations entre chaque année beaucoup trop élevée que pour permettre une estimations fiable.

          Selon l'INED, il y aura 9,7 milliards d'humains sur terre en 2050. Si en retire 15% (les - de 10 ans), on obtient 8,2 milliards de personne étant des "internautes" en 2050. C'est a dire + 4 Mds en 33 ans. sachant qu'il nous à fallu 22 ans pour faire le même bon (+4Mds), on peut déduire une baisse de l'augmentation des internautes pour ces prochaines années, c'est sa ?

          Cordialement,

          • Partager sur Facebook
          • Partager sur Twitter

          CodeWe is an open-source live code-sharing website.

            21 octobre 2017 à 12:57:01

            Oublions les continents, et prenons l'autre méthode. Tu sais à peu près estimer le nombre d'internautes en 2050. Tu peux aussi estimer la valeur pour 2055 et 2060. Ca va bien aider.

            Place ces points sur un graphique, ainsi que les points connus pour 2005, 2010, 2015. Puis essaie de relier les points avec une courbe 'plausible'. Une courbe plausible, c'est une courbe qui n'a pas des ruptures brusques. Prédire + 10% par an pendant 10 ans , puis +1% par an les années suivantes, ce n'est pas plausible.  

            Et tu vas avoir une estimation qui tient parfaitement la route.

            Tu peux aussi combiner les 2 méthodes : Quelle sera la population de chaque continent en 2050 ou 2060, et à quel horizon chaque continent va-t-il atteindre la saturation... Puis faire le même exercice d'interpolation pour chaque continent.

            De manière générale, faire des extrapolations, c'est toujours très délicat, alors que faire des interpolations, c'est nettement plus facile. 

            • Partager sur Facebook
            • Partager sur Twitter
              22 octobre 2017 à 19:18:23

              Voici mon graphique :

              Qu'en pense tu ?

              Merci !

              • Partager sur Facebook
              • Partager sur Twitter

              CodeWe is an open-source live code-sharing website.

                22 octobre 2017 à 21:41:21

                Comme ça, à l'oeil, je trouve que les points correspondants aux années 2025 à 2040 sont un peu trop bas. Tu as pris les points connus, ou supposés connus, et apparemment, tu as tracé une droite entre 2015 et 2050.

                Non.

                La pente de ta courbe doit baisser progressivement.

                Tu peux faire un autre graphique pour contrôler que ton 'modèle' est cohérent. A partir des chiffres que tu as ici, et de la population mondiale, tu peux calculer pour chaque année le pourcentage de la population qui est internaute. Et tu peux vérifier si cette nouvelle courbe a elle-aussi une bonne tête.

                • Partager sur Facebook
                • Partager sur Twitter
                  23 octobre 2017 à 22:25:52



                  Le premier représente les valeurs de l'ancien graphique, le second mes nouvelles valeurs.

                  Qu'en pense tu ?

                  • Partager sur Facebook
                  • Partager sur Twitter

                  CodeWe is an open-source live code-sharing website.

                    24 octobre 2017 à 1:22:17

                    D'où l'intérêt de regarder les différents indicateurs.

                    La première courbe semblait pas trop mal, mais en regardant l'indicateur sur le pourcentage d'internautes, ça nous donnait un pourcentage croissant au début, puis décroissant... pas très cohérent. Le 2ème jeu de données semble plus réaliste.

                    Rendez vous dans 10 ans pour vérifier si la prédiction est correcte... mais ça devrait être pas trop mauvais.

                    Je trouve cet exercice très intéressant.

                    Si on prend la question initiale, et qu'on la sort du contexte, on a purement un exercice de maths. On a une vingtaine de nombres et on cherche à prolonger la courbe... Naturellement, on a envie de tracer une courbe qui monte de plus en plus, ou au moins qui monte comme une droite.

                    Et en regardant le contexte, on s'aperçoit que ces premières réponses ne sont pas réalistes, et on bâtit une autre courbe, qui n'a plus rien à voir.

                    Les maths, c'est bien, mais il faut aussi réfléchir, penser au contexte ; il ne faut pas appliquer bêtement des formules.

                    Et ça montre assez bien que quand on veut faire des interpolations, on est plus ou moins en zone de confort. On a de bonnes chances d'avoir une courbe proche de la réalité. Alors que quand on fait des extrapolations, on peut dire des grosses bêtises.

                    Si tu veux un éclairage différent sur les interpolations (ou les extrapolations), voici  un lien qui peut t'intéresser. Mais ça reste une approche purement mathématique...et d'un niveau certainement trop élevé pour toi.  

                    • Partager sur Facebook
                    • Partager sur Twitter
                      25 octobre 2017 à 22:22:58

                      J'ai utilisé scipy pour interpoler.

                      J'ai mis en entrée :

                      x = [2000,2005,2010,2015,2050,2060]
                      y = [36,1018,1971,3366,8470,8770]

                      et en sortie, j'ai reçu :

                      Étrangement, si je calcule les pourcentages, il baisse, puis remonte entre 2050 et 2060 :

                      -
                      Edité par Bhasher 25 octobre 2017 à 22:43:14

                      • Partager sur Facebook
                      • Partager sur Twitter

                      CodeWe is an open-source live code-sharing website.

                        26 octobre 2017 à 0:56:41

                        Tu peux inverser les 2 indicateurs. 

                        En entrée de Scipy, tu lui donnes les pourcentages sur les années connues, et les 'estimations' de pourcentage pour 2050 et 2060. (et 2055 aussi, ça peut aider). 

                        En sortie, tu lui demandes donc les pourcentages sur les années intermédiaires. Et à partir des pourcentage, tu recalcules la population.

                        Peut-être aussi qu'il faut revoir les estimations faites pour 2050 et/ou 2060.

                        Enfin, l'autre truc qui peut expliquer ce problème, c'est comment tu as utilisé scipy. Idéalement, il ne faut pas demander une courbe qui passe forcément par les points fournis, mais une courbe qui approche les points fournis. Si tu lui demandes une courbe qui passe exactement par les points, et si les points sont mal agencés, tu peux parfaitement obtenir une courbe d'allure sinusoïdale. Par contre, si tu lui demandes une courbe 'logarithmique' ou une courbe polynomiale de degré 2 qui approche au mieux les points, la courbe obtenue ne passera pas forcément par les points précis, mais elle aura une forme plus simple (pas de point d'inflexion en particulier pour les 2 formes que je propose).

                        Dernier point.... Mais qui aurait dû être le premier point, le point à mettre en avant éventuellement dès le premier jour...

                        A partir des données que tu as, demande à scipy d'estimer le nombre d'internautes en 1980, ou le pourcentage d'internautes en 1980. Je parie qu'il va se planter, et que toi et moi, on ferait mieux que scipy sur ce coup-là. Et même si tu lui dis qu'en 1960, il y avait 0 internautes, il va quand même se planter pour estimer l'année 1980.

                        Du coup, je pense qu'il y a des artifices pour ce type de données (je veux trouver la meilleure courbe, mais je veux surtout que la courbe en question reste systématiquement entre 0 et 1, même pour des valeurs de x très grandes, ou très petites). Ou en l'occurrence systématiquement entre 0 et 0.95, en considérant que le pourcentage d'internautes ne dépassera pas 95%. J'ai une vague idée de comment construire ces artifices ; éventuellement, je reviendrai dessus.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 octobre 2017 à 17:14:32

                          N'ayant pas mon pc a coté de moi, je n'ai pas encore pus faire les graphiques.

                          Il reste un gros soucis : il faut extrapoler une valeur lointaine et incertaine.

                          Si je change de problématiques, pour par exemple faire le nombre d'email envoyé. C'est plus compliqué d'extrapoler qur 50 ans pour ensuite interpoler.

                          N'est il pas possible d' extrapoler de façons à ce que les points suivent une logique. 

                          Si on sépare les type de données en deux groupes:

                          - Les dépendents:

                          par exemple le nombre d'utilisateur, qui DEPEND FORTEMENT d'une autre donnée (la population mondiale). Ce type de donnée donne des graphique respemblant un peu à un serpent, voir à une fonction racine de x.

                          - Les indépendents:

                          Par exemple le nombre de mail. On peut tout a fait en enoyé plus que la population mondiale. Ce type de fonction resemble un peu plus à une fonction abs(x carré)

                          Pour les indépendent, soit trouver une droite, soit ne pourrais on pas tenter de trouver une valeur de k dans une fonction k.x^2 qui resemble le plus possible à la réalité.

                          Cordialement,

                          • Partager sur Facebook
                          • Partager sur Twitter

                          CodeWe is an open-source live code-sharing website.

                            27 octobre 2017 à 20:36:07

                            Quand on parle de prédiction, il y a plein de niveaux :

                            - la prédiction par des outils mathématiques de niveau lycée. Régression Linéaire, méthode des moindres carrés.  

                            - Parmi les outils en questions, on peut choisir A PRIORI si on chercher une droite, ou une parabole ou ... ... On est toujours dans le domaine des Régressions linéaires, et de la méthode des moindres carrés.

                            Jusque là, on est dans des outils de niveau lycée ou lycéee ++.

                            - Il doit y avoir des méthodes pour arbitrer : j'ai cherché une droite, j'ai cherché un polynôme de degré 2, j'ai cherché un polynôme de degré 3. Forcément, plus on élève le degré, plus la courbe se rapproche des points existants.  Mais il faut arbitrer. Si en passant d'une courbe de degré 3 à une courbe de degré 4, on diminue l'erreur de 10%, est-ce que c'est une amélioration significative ? 

                            Parce que forcément, pour interpoler, la courbe de degré 4 risque de présenter des variations totalement injustifiées. On est toujours dans le domaine des mathématiques, mais plus au niveau lycée. On est au niveau Bac+5 spécialisé en analyse de données.

                            Et ensuite, on quitte le domaine des mathématiques, et on entre dans le domaine de l'informatique, il y a des outils d'intelligence artificielle.  

                            Et même dans ce domaine, l'ordinateur ne fait pas tout. En cherchant un exemple pour toi, je tombe là-dessus : 

                            https://makina-corpus.com/blog/metier/2017/initiation-au-machine-learning-avec-python-theorie

                            "La majorité des types d'apprentissages chez l'homme et l'animal sont non supervisés. Si l'apprentissage automatique était un gâteau, l'apprentissage non supervisé serait ce gâteau, l'apprentissage supervisé serait le nappage du gâteau et l'apprentissage par "renforcement" serait la cerise sur le gâteau. Nous savons faire le nappage et la cerise, mais nous ne savons pas faire le gâteau."

                            Avec mes mots à moi, ça veut dire quoi ? Ca veut dire que quand on donne des bons paramètres au système '(en plus des données mesurées bien sûr), le système trouve les bons résultats, mais si on lui donne des paramètres moyens, le système donne des résultats mauvais.

                            Sur ta question des Emails, on peut faire tourner des systèmes experts. Mais si 10 personnes lancent chacune un système expert sur cette question des emails, ces 10 personnes obtiendront 10 réponses différentes. Parce qu'elles choisiront des paramètres différents, dépendant de leur propre expertise.

                            Alors que si 10 personnes utilisent les premiers outils cités (régression linéaire), ces 10 personnes obtiendront le même résultat.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              29 octobre 2017 à 22:57:37

                              Je t'explique la finalité de mes question :

                              J'ai ouvert un petit site web (https://internetstats.shost.ca) Que j'avance surtout en local, et sur lequel je fais des calcules de statistiques en lien avec l'informatique (internet).

                              Comme le site est fais 100% en HTML/CSS/JS, je code source complet est accessible.

                              Et en cherchant un peu, on trouve à cette adresse un graphique:

                              https://internetstats.shost.ca/index/img/graphs/ChartGo1.png

                              Les autres sont au même lien, mais avec un nombre entre 2 et 6.

                              En Gros, j'utilise ceci :

                              var UsersInWorld = {1999: 0, 2000: 361, 2001: 513, 2002: 587, 2003: 719, 2004: 817, 2005: 1018, 2006: 1093, 2007: 1319, 2008: 1574, 2009: 1802, 2010: 1971, 2011: 2267, 2012: 2497, 2013: 2802, 2014: 3079, 2015: 3366, 2016: 3696, 2017: 4025} ;
                              var SitesInWorld = {1999: 0, 2000: 25, 2001: 36, 2002: 35, 2003: 45, 2004: 56, 2005: 74, 2006: 105, 2007: 155, 2008: 186, 2009: 233, 2010: 255, 2011: 555, 2012: 633, 2013: 861, 2014: 915, 2015: 901, 2016: 1739, 2017: 1900} ;

                              Chaque variable est une donnée. Et à chaque fois, avec cette syntaxe :

                              année: nb (en millions ici)

                              et avec sa j'ai une fonction (plusieurs même) qui calcule combien sa fait.

                              Enfin bref.

                              Ce qui nous concerne ici, c'est de pouvoir continuer ces valeurs. Donnée un nombre pour 2018, 2019, 2020, ...

                              Et mon but, c'est d'obtenir des valeurs les plus précise possible.

                              Comment savoir si "on est dans le bon" ? Par exemple, donnée les valeurs de 2000 à 2012, et voir si 2013,2014,2015,2016 et 2017 sont exacte (à peu près bien sur).

                              Je fais sa plus pour "apprendre" et "faire la réfléction", plus que pour faire des stats ^^ d'ou mon envie de précision.

                              Après, je n'ai pas non plus envie de passé dans un tout autre domaine qu'est le machine learning. Bien que je trouve ce domaine passionnant, je suis loin d'avoir les compétences requises pour faire fonctionner un algorithme un temps soit peu crédible.

                              Cordialement,

                              • Partager sur Facebook
                              • Partager sur Twitter

                              CodeWe is an open-source live code-sharing website.

                                1 novembre 2017 à 23:08:01

                                J'ai poursuivis sur d'autres statistiques.

                                https://internetstats.shost.ca/index/index.php

                                Pour lesquels j'ai fais des graphiques :

                                Graphique 1

                                Graphique 2

                                Graphique 3

                                Mes sources sont notées.

                                Mais le problème est toujours le même : J'ai les valeurs du passé, mais je n'arrive pas à extrapoler. A définir des valeurs pour le futur.

                                Cordialement,

                                • Partager sur Facebook
                                • Partager sur Twitter

                                CodeWe is an open-source live code-sharing website.

                                Prédiction de statistiques

                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                • Editeur
                                • Markdown