IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Probabilités Discussion :

histoire d'arrondi de probabilité


Sujet :

Probabilités

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Par défaut histoire d'arrondi de probabilité
    Bonjour à tous,

    J'ai le problème suivant: j'ai n villes et m personnes. Je connais la probabilité pour une personne d'habiter chacune des villes. On note p_i la probabilité pour une personne d'habiter la ville i. On a bien \sum_{i=1}^n p_i = 1
    Le problème c'est que je ne peux pas arrondir les m \times p_i pour me donner le nombre de personnes habitant dans chaque ville. J'ai donc 2 méthodes mais je m'interroge sur l'exactitude de celles ci d'un point de vu mathématique:
    méthode 1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Hab : tableau contenant le nombre d'habitants dans les différentes villes
    Prob : tableau des probabilités d'habiter dans chaque ville
    Pour i=1 à n
      Prob[i] <- m * Prob[i]
    Fin Pour
    cpt <- m
    Pour i=1 à n
      Hab[i]<- Hab[i] + partie_entiere_inferieure(Prob[i])
      cpt <- cpt - partie_entiere_inferieure(Prob[i])
      Prob[i] <- Prob[i] - partie_entiere_inferieure(Prob[i])
    Fin Pour
    Tant que cpt > 0
      Soit i l'indice du maximum dans Prob
      Prob[i] <- 0
      Hab[i] <- Hab[i] + 1
      cpt <- cpt - 1
    Fin Tant que
    méthode 2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Hab : tableau contenant le nombre d'habitants dans les différentes villes
    Prob : tableau des probabilités d'habiter dans chaque ville
    ProbCum : tableau des probabilités cumulées
    ProbCum[0] <- Prob[0]
    Pour i=2 à n
      ProbCum[i] <- ProbCum[i-1]+Prob[i]
    Fin Pour
    Pour j=1 à m
      nombre <- Tirer un nombre aléatoire entre 0 et 1
      i <- 1
      Tant que ProcCum[i] < nombre
        i <- i + 1
      Fin Tant que
      Hab[i] <- Hab[i] + 1
    Fin Pour

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par CedricMocquillon Voir le message
    J'ai donc 2 méthodes mais je m'interroge sur l'exactitude de celles ci d'un point de vu mathématique:
    J'ai pas du bien comprendre le problème, car pour moi le nombre de personnes habitant une ville est donnée par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                           m
    PopulationVille(v) = Somme P(i,v)
                          i=1
    pour 1<=v<=n
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Par défaut
    Dans mon exemple, l'objectif est par exemple, connaissant la répartition de la population française sur l'ensemble des villes de france, de simuler un comportement de cette population en n'en prenant que 10 000. Il faut donc que je "place" ces 10 000 personnes sur mes villes de sorte à être le plus fidèle possible par rapport à la réalité. Dans mon exemple, chaque personne a exactement la meme probabilité d'habiter à Paris mais par contre une personne n'a pas la même probabilité d'habiter Paris que Toulouse. (le proba d'habiter Paris est de NbHabitant(Paris)/NbHabitant(France))

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Ah... je pense que j'ai compris. Tu veux faire du resampling, c'est à dire passer d'un echantillon de taille 60 millions à un échantillon de taille 10.000.

    Dance ce cas, il vaut mieux utiliser ta méthode 2.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 301
    Par défaut
    Merci pour ta réponse c'est effectivement ce que je veux faire. Par contre aurais-tu une justification pour le fait d'utiliser la seconde méthode? Car pour moi si on considère que l'on cherche à approximer au mieux la fonction qui à une ville renvoie le nombre d'habitant en nombre réels (c'est-à-dire qui renvoie m*p[i]) par une fonction à valeurs entières, la première méthode minimise l'erreur d'approximation. Cependant il est vrai que d'un point de vue probabilité, j'ai l'intuition que la seconde est mieux (mais je n'ai aucun argument pour le justifier)...

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par CedricMocquillon Voir le message
    Merci pour ta réponse c'est effectivement ce que je veux faire. Par contre aurais-tu une justification pour le fait d'utiliser la seconde méthode?
    Ta 1ère méthode fait du "rescaling", c'est à dire qu'on construit un nouvel échantillon qui à le même histogramme que l'echantillon de départ.

    Ta 2nde méthode fait du "bootstrapping", c'est à dire qu'on construit un nouvel échantillon à partir d'un modèle de l'echantillon de départ.

    Si tu veux une justification le plus simple est de rechercher sur internet "resampling bootstrap".

    En gros, la 1ère méthode conduit à moyenner les valeurs et donc à changer les réalisations possibles => des valeurs entieres deviennent des valeurs décimales (= le célèbre 1,5 enfants par famille). C'est pour cela qu'on préfère utiliser la 2nde méthode car les réalisations possibles ont le meme ensemble de définition.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Discussions similaires

  1. [C#] histoire de commit et de roolback
    Par dupin40 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 18/05/2021, 17h45
  2. [Math]Problème troncage ou arrondi sur des valeurs
    Par Carrel dans le forum Général Java
    Réponses: 6
    Dernier message: 07/10/2009, 15h11
  3. [BigDecimal] les arrondis...
    Par LoulouFifi dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 13/01/2004, 18h37
  4. création d'un bouton de forme arrondie
    Par THIERRY L. dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/12/2003, 14h04
  5. [VB6] Racine carrée + arrondi
    Par Krys29 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/10/2002, 13h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo