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 :

Optimisation boucles pour calcul Quantiles


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Par défaut Optimisation boucles pour calcul Quantiles
    Bonjour,

    Je cherche à optimiser le calcul de quantiles sur un univers de sociétés et de dates. Jusque là rien de bien compliqué, sauf qu'il faut que je calcule les quantiles sur les sociétés d'un même secteur d'activité.

    J'ai donc une matrice qui stocke les données avec les dates en lignes et les sociétés en colonnes, matrice qu'on appellera data, et j'ai un vecteur de secteurs d'activité de la taille du nombre de sociétés et trié dans le même ordre que les colonnes de ma matrice. J'espère que je n'ai perdu personne, là :p). Bien sûr, la grandeur que l'on souhaite quantiler est variable, ça peut être le nombre d'employés, le CA, ....

    Voici le code qui me permet de calculer les quantiles :

    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
     
     
      #Quantiles avec Secteur 
      QData <- matrix(NA,nrow(data),ncol(data))
      dimnames(QData )<- dimnames(data)
     
      sapply(1:nrow(data),function(l) {  
        sapply(DistinctSector, function(i) {
          SectorVector !=i -> k
          k[is.na(k)]<-TRUE
          datat<- data[l,]
          datat[k] <- NA 
          Rank <- rank(datat ,na.last = "keep",ties.method= "first")
          QData [l,!k] <<- qntl(Rank, breaks = seq(0, 1, by = 0.01))[!k]
          rm(Rank,datat ,k)
          gc(verbose = FALSE)
        })->u
      })->res
    Mon souci est que c'est très long à calculer (car 1300 dates, et 3000 sociétés), alors connaissez-vous un moyen d'optimiser ce code ?

    Merci d'avance

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Par défaut
    tu devrais transformer ton vecteur qui correspond au secteur d'activité en facteur avec as.factor() et ensuite utiliser la fonction tapply.
    Sinon comme ca c'est difficile de proposer autre chose sans avoir un aperçu du jeu de données

    sinon pour les quantiles il y a la fonction quantile()

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Par défaut
    Merci pour ton retour, c'est vrai que je n'ai encore jamais utilisé les factor, je vais regarder ça.

    Pour le jeu de données, c'est du type :
    Société A B C D E
    Date
    D1 10 5 20 13 14
    D2 0 10 30 7 2
    D3
    D4
    Avec le vecteur de secteur :
    A secteur 1
    B secteur 2
    C secteur 1
    D
    E
    .
    .
    .
    Pour la fonction quantile, en fait je l'utilise, ma fonction qntl en hérite, j'ai juste oublié de le préciser. En plus je passe au préalable par un rank car plus de possibilités pour la gestion des NA.

    Merci

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Par défaut
    J'arrive pas à comprendre comment utiliser les facteurs dans mon cas, si quelqu'un pouvait m'expliquer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Boucle pour calculer des quantiles.
    Par Pek Ma dans le forum R
    Réponses: 2
    Dernier message: 26/06/2013, 17h22
  2. Réponses: 2
    Dernier message: 12/06/2012, 13h49
  3. [AC-2000] boucle pour calculer le nb de jours entre 2 dates et afficher résultat
    Par Remus91 dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/06/2009, 10h36
  4. Faire une boucle pour facilité le calcul
    Par r_dani dans le forum Macro
    Réponses: 2
    Dernier message: 25/03/2009, 12h52
  5. Code pour calcul en boucle
    Par KGUTBM dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/06/2008, 12h04

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