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

R Discussion :

Bootstrap pour les intervalles de prévision/prédiction


Sujet :

R

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 30
    Points
    30
    Par défaut Bootstrap pour les intervalles de prévision/prédiction
    Bonjour,

    Je cherche à utiliser une technique de bootstrap pour les intervalles de prévision/prédiction (non pas les intervalles de confiance) afin d'affiner mon modèle de régression linéaire multiple.
    Y, X1 et X2 sont des variables numériques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LinearModel.1 <- lm(Y ~ X1 + X2, data=Dataset)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    predict(LinearModel.1, interval = "prediction")
    J'obtiens les résultats suivants :

    fit lwr upr
    1 38774.82 19308.76176 58240.89
    2 23473.52 3581.98855 43365.05
    3 47638.02 27802.77386 67473.28
    4 40561.23 20885.37152 60237.10
    5 40052.23 20581.23928 59523.22
    6 45350.39 24797.55766 65903.22
    7 17577.33 -3055.85063 38210.50
    8 44858.50 24476.16404 65240.83
    9 49074.11 29446.03868 68702.19
    10 54712.31 34797.56544 74627.06
    11 20500.04 37.76331 40962.31
    12 31081.89 10118.51465 52045.26
    13 14005.14 -6285.55872 34295.83
    14 57835.98 37562.74180 78109.22
    15 69049.88 47998.07255 90101.68
    16 50056.00 30348.07833 69763.93
    17 14225.25 -7233.66218 35684.16
    18 34939.20 15362.66772 54515.73
    19 13077.82 -7280.29768 33435.94
    20 26327.29 6083.15485 46571.42
    21 59727.04 39487.63245 79966.45
    22 29092.02 8483.79715 49700.24

    Comment faire pour bootstrapper mes intervalles de prévision/prédiction ? J'ai cherché en vain un package. D'avance merci pour votre précieuse aide.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 208
    Points : 461
    Points
    461
    Par défaut
    Salut,

    Intuitivement, sans utiliser de package particulier, j'aurais relancé la régression n fois sur différents échantillonnages de la base, et conservé pour chaque observation le min et max des prévisions données par les n modèles.


    Schéma du code:

    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
     
     
     
    pred.min<-rep(NA,nrow(dataset))
    pred.max<-rep(NA,nrow(dataset))
     
    for(i in 1:n){ #n boostrap
     
     
    s<-sample(1:nrow(dataset),size=N) #N taille des echantillonnages 
     
    reg<-lm(....,data=dataset[s])
     
    tmp<-predict(....,newdata=dataset)
    pred.min<-pmin(tmp,pred.min)
    pred.max<-pmax(tmp,pred.max)
     
    }
    Tes intervalles de prévisions bootstrappés sont donnés pour chaque observation par pred.min et pred.max.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    Bonsoir,

    Super merci pour cet excellent code.


  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    Bonsoir,

    Après maintes tentatives et quelques conseils je suis arrivé à ce code R ci-dessous afin d'établir mes intervalles de prévision bootstrappés.
    Toutefois, même si le code R fonctionne (pas de message d'erreur), ce code R ne me permet pas d'obtenir les sorties que je souhaitais.

    J'aurais aimé les mêmes sorties que voici :

    fit lwr upr
    1 38774.82 19308.76176 58240.89
    2 23473.52 3581.98855 43365.05
    3 47638.02 27802.77386 67473.28
    4 40561.23 20885.37152 60237.10
    5 40052.23 20581.23928 59523.22
    6 45350.39 24797.55766 65903.22
    7 17577.33 -3055.85063 38210.50
    8 44858.50 24476.16404 65240.83
    9 49074.11 29446.03868 68702.19
    10 54712.31 34797.56544 74627.06
    11 20500.04 37.76331 40962.31
    12 31081.89 10118.51465 52045.26
    13 14005.14 -6285.55872 34295.83
    14 57835.98 37562.74180 78109.22
    15 69049.88 47998.07255 90101.68
    16 50056.00 30348.07833 69763.93
    17 14225.25 -7233.66218 35684.16
    18 34939.20 15362.66772 54515.73
    19 13077.82 -7280.29768 33435.94
    20 26327.29 6083.15485 46571.42
    21 59727.04 39487.63245 79966.45
    22 29092.02 8483.79715 49700.24

    Est-ce possible d'obtenir les intervalles de prévision lwr et upr pour les 22 données ? Si oui, que dois-je modifier dans mon code ci-dessous ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    LinearModel.1 <- lm(GDP.per.head ~ Competitivness.score + Quality.score, data=Dataset)
    nr <- nrow(Dataset)
    ymat <- matrix(with(Dataset,sample(GDP.per.head,100*nr,rep=TRUE)), nrow =nr)
    out <- lm(ymat ~Competitivness.score + Quality.score,data=Dataset)
    b <-predict(out,interval="prediction")
    summary(b)
    Merci pour votre aide.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Mai 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 25
    Points : 30
    Points
    30
    Par défaut
    Bonsoir,

    J'ai essayé un autre code R ci-dessous, mais il ne fonctionne pas. Quelqu'un peut-il me dire ce qui ne joue pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    LinearModel.1 <- lm(GDP.per.head ~ Competitivness.score + Quality.score, data=Dataset)
    B <- 500
    result <- array(dim = c(22, 3, B))
    for(i in 1:B){
    s <- sample(nrow(Dataset), 22, replace = TRUE)
    lm.tmp <- lm(GDP.per.head ~ Competitivness.score + Quality.score, data = Dataset[s, ])
    result[,,i] <- predict(lm.tmp, interval = "prediction")
    }
    Merci d'avance

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/02/2012, 11h07
  2. Réponses: 9
    Dernier message: 03/03/2011, 23h49
  3. Réponses: 6
    Dernier message: 15/01/2011, 20h36
  4. Réponses: 5
    Dernier message: 31/08/2010, 10h20
  5. Réponses: 0
    Dernier message: 25/09/2007, 15h11

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