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 :

Utilisation de la fonction contour de R


Sujet :

R

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Utilisation de la fonction contour de R
    Bonjour à tous,

    Je dois utiliser la fonction contour de R pour reproduire une image comme celle-ci :

    Nom : Contour_plot.png
Affichages : 1030
Taille : 12,9 Ko

    Je dispose pour ceci de deux jeux de données : une série de 50 000 valeurs pour la variable 1 et une série de 50 000 valeurs pour la variable 2 (non ordonnées).

    Lorsque j'utilise la fonction contour pour tenter de reproduire ce graphique, je pose les paramètres suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab2=as.matrix(tab[1:500,]) ## je ne prends que quelques valeurs pour essayer
    x=seq(1,max(tab2[,1]),length.out = nrow(tab2))
    y=seq(1,max(tab2[,2]),length.out = ncol(tab2))
    puis : contour(x,y,tab2,lty="solid")Le problème c'est que l'image obtenue est celle-ci ....

    Nom : Rplot.jpeg
Affichages : 1015
Taille : 199,2 Ko

    Rien à voir avec ce qui est attendu ... Et je ne comprends pas bien pourquoi en me basant sur les exemples qui sont donnés dans l'aide ou sur le net..

    La réponse est peut-être toute bête et juste sous mon nez mais cette fonction contour reste pour le moment un mystère pour moi (du moins concernant la manière de l'utiliser ..)

    Est-ce-que quelqu'un pourrait m'éclairer sur l'utilisation de cette fonction ?

    Merci d'avance pour votre aide !

  2. #2
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    bonjour,

    peut être qu'une façon plus simple d'imaginer la fonction contour serait la suivante

    z = f(x,y) donc on a une valeur de z pour chaque couple de point x,y !

    x et y sont des vecteurs et z une matrice de dimensions (x,y) !

    prenons un exemple :

    x est un vecteur de 10 valeurs, y un de 65 donc z comporte 10*65 valeurs et est une matrice de 10 lignes et 60 colonnes !

    si je comprends bien votre exemple votre échantillon de tab2 est de dimension (500,2) donc vous avez un problème de "dimensions"

    ci-joint un exemple simple pour mieux comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # creation de donnees 
    n <- 50 # longueur du vecteur
    x <- runif(n, min = 0, max = 70)
    y <- runif(n, min = 0, max = 3)
    z <- outer(x,y,"*") # creation des valeurs qui correspondent au couple de valeurs x,y == matrice de dimension (n,n)
    #plot le contour
    contour(x=seq(min(x),max(x),length.out=length(x)),y=seq(min(y),max(y),length.out=length(y)),z,nlevels=3)
    A noter que dans votre cas
    x=seq(1,max(tab2[,1]),length.out = nrow(tab2))
    y=seq(1,max(tab2[,2]),length.out = ncol(tab2))

    vous fixez les limites à 1 comme la plus basse valeur donc vous pouvez tronquer une partie des résultats
    et si vous avez deux colonnes dans tab2 alors y sera composé de deux valeurs !

    Je ne sais pas si tout cela est très clair mais je me rends compte que cela n'est pas si simple d'expliquer....

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Alpacky,

    Tout d'abord merci beaucoup pour ces informations ! La manière d'utiliser la fonction contour est un peu plus claire ! (au moins la forme de ses arguments )

    Mais du coup je ne vois pas comment l'adapter à mon cas de figure ... (obligation d'utiliser cette fonction).

    Si j'ai bien compris, il faudrait déclarer que x=seq(1, nrow(tab2))=500 (dans le cas tronqué) et que y=seq(1,ncol(tab2))=2 ..? De cette manière on aurait un vecteur de longueur 500 et un autre de longueur 2 ce qui correspondrait à la matrice z=tab2 de taille 500*2 contenant les valeurs des deux variables ..?

    Pour être plus précise, la matrice tab2 est de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           var1=A           var2=B ## noms des variables
              a1                b1
              a2                b2
              ...                ...  
            a500             b500
    Ou alors est-ce-que pour obtenir le même style d'image que la première postée, peut-être faut-il superposer les deux contours..? Et donc utiliser contour pour chaque variable séparément ..?

    Merci encore pour votre aide !

  4. #4
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    Dans la figure que vous devez représenter, les contours représentent une quantité, appelons la var3, qui est fonction de var1 et var2 !

    Donc je ne comprends pas comment, sans créer de var3 ou sans que l'on vous en fournisse une, vous pourriez créer une figure similaire en utilisant contour !

    Peut-être que je comprends mal le problème, auriez vous un csv ou autre ?

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Alors la bonne nouvelle c'est que j'ai bien compris grâce à vous

    La moins bonne nouvelle c'est que je ne dispose pas d'une troisième variable étant fonction des deux premières ...

    Ce dont je dispose est :

    - un fichier indiquant : nom de la variable, ligne à laquelle les valeurs commencent et ligne à laquelle elles se terminent (par ex pour mes 2 variables la première ligne du fichier donne : A 1 500, et la seconde : B 501 1000)

    - un second fichier contenant une colonne de valeurs : en se basant sur le premier fichier on sait que les valeurs de A se trouvent de la ligne 1 à la ligne 500 et celles de B de la ligne 501 à la ligne 1000

    Les indications données pour effectuer le contour sont :

    6) Draw contours.
    The routine should work for non-elliptical contours, for example when
    one has two separate “islands”. The contours should include about 68% and about
    95% of the samplings. A small margin of error is allowed (i.e. 70% in place of 68%
    is fine). It is instead not allowed to draw contours at pre-defined thresholds (e.g,
    taking the peak value and dividing by a “magic number”). Check your contours
    against those in Fig. 2 with the sampling in CODAchain1.txt. The latter contours
    are somewhat approximated (and nothing better than this is required!).

    Le fichier "CODAchain1.txt" correspond à mon deuxième fichier, il contient les valeurs des variables. Et la Fig.2 est la figure que je dois obtenir (à peu près).

    Mais je n'ai pas d'autres indications ou fichiers ....

  6. #6
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    êtes vous certaine que A et B ne doivent pas être utilisés en entrée d'une fonction pour trouver une troisième variable ?

    Est-ce cet exercice que vous réalisez http://www.brera.mi.astro.it/~andreo...ngl_master.pdf ?

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Je ne suis pas sûre du tout non que A et B ne doivent pas être utilisées ensemble pour trouver une troisième variable .. Mais si c'est le cas, je ne sais pas du tout de quelle manière au vu des instructions ..

    Alors non ce n'est pas cet exercice que j'effectue mais ça pourrait être un bon entraînement pour moi ..! Je vais suivre une formation en astrostatistiques et il y a certains "pré-requis", enfin quelques petits programmes à écrire avant de débuter. N'ayant pas eu à utiliser les contours jusqu'à présent je bloque un peu pour ce point (même si grâce à vous je sais maintenant comment la fonction peut être utilisée ).
    Par contre le professeur ayant rédigé cet exercice est bien celui qui dispensera la formation

  8. #8
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    ok je pense avoir trouvé la solution, un petit indice

    http://svitsrv25.epfl.ch/R-doc/libra...ml/hist2d.html

    et encore un autre

    https://www.rdocumentation.org/packa....1/topics/ci2d

    en jouant sur les arguments on trouve sans mal comment réaliser l'image !

    bon courage pour la formation !

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    On se rapproche ..!

    Avec les données j'obtiens :
    Nom : Rplot01.jpeg
Affichages : 994
Taille : 84,2 Ko

    avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    tab=as.matrix(cbind(values_var[[1]],values_var[[2]]))
    tab2=as.matrix(tab[1:500,])
     
    h2d2=hist2d(tab2)
    contour( h2d2$x, h2d2$y, h2d2$counts)
    La forme est là, maintenant il faut creuser un peu plus pour le contouring. Sauf si j'ai loupé quelque chose ..?

  10. #10
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    voila une proposition ! il vaut mieux utiliser une autre fonction du même package où tu spécifies les contours que tu veux (Intervalle de Confiance)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    # import data
    codaChain <- read.table("CODAchain1.txt")
    s <- codaChain[1:50000, ]
    bkg <- codaChain[50001:100000, ]
     
    # IC 68 et 95 % 
    ci2d(s[,2],bkg[,2],ci.levels=c(.68,.95) , show="contour", col="black", show.points=F)

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Aah je n'avais pas vu cette fonction dans le package !

    Donc là on représente bien des intervalles de confiance en fait avec les niveaux de confiance requis (je comprends mieux l'utilité du 68% et 95% de l'énoncé ..).
    Le paramètre "show" permet de spécifier ce que l'on souhaite représenter (enfin comment représenter ces intervalles de confiance) et on peut choisir la méthode d'estimation ainsi que "largeur de bande" utilisée avec "method" et "bandwidth" (et donc peut être affiner l'estimation).

    C'est bien ça ?

  12. #12
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    Parfaitement ! On peut aussi modifier le nombre de bins etc... https://www.rdocumentation.org/packa....1/topics/ci2d

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Pour information, je ne sais pas si vous avez vu ça dans l'aide, il existe une autre fonction --> conf2d, qui fonctionne sur le même principe mais avec une meilleure précision

    Ci-dessous se trouvent les figures obtenues avec ci2d (première) et avec conf2d (seconde) :

    Nom : ci2d.jpeg
Affichages : 1011
Taille : 46,9 Ko

    Nom : conf2d.jpeg
Affichages : 985
Taille : 36,1 Ko

  14. #14
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci beaucoup pour votre aide !

  15. #15
    Membre actif Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Points : 200
    Points
    200
    Par défaut
    Je n'avais pas vu, merci pour l'info
    bon courage pour la suite !

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

Discussions similaires

  1. Comment utiliser la fonction "contour"
    Par Aurore_atmo dans le forum Images
    Réponses: 6
    Dernier message: 06/07/2006, 13h13
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

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