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

MATLAB Discussion :

Ellipse de confiance à 95% sur des coordonnées XY


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 68
    Points : 26
    Points
    26
    Par défaut Ellipse de confiance à 95% sur des coordonnées XY
    Bonjour à tous,


    Je vous présente un peu ma situation. J'ai des données X et Y de points et j'aimerais calculer une ellipse de confiance à 95%.

    On ma donné ce programme

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    function [outellip,SurfaceMat] = FncEllipse(VectX,VectY)
     
    [nr,nc]=size(VectX);
     
    for j=1:nc
     
        mult=1.96;
     
        %%%%%%%%%%%%%%%%%% Matrice de covariance
        V = cov([VectX(:,j) VectY(:,j)]);
        %%%%%%%%%%%%%%%%%% EigenVect et Val
        [vec, val] = eig(V);
     
        %%%%%%%%%%%%%%%%%%%%% Calcul de l'aire
        axes = mult*sqrt(svd(val));          %--Axes: create singular values vector (eigenvalues ordered by decreasing values, non-negative)
        angles = atan2(vec(2, :), vec(1,:))*180/pi ;  %--angles of each principal vector in degree
        Surface = pi*prod(axes);             %--area
     
        t = linspace(0, 2*pi);
     
        ellip = vec*mult*sqrt(val)*[cos(t);sin(t)] + repmat([mean(VectX(:,j));mean(VectY(:,j))], 1, 100);
     
        ellip = ellip';
        axes = axes';
     
        SurfaceMat(1,j)=Surface;
        outellip(j).ellip=ellip;
        outellip(j).surface=Surface;
     
     
    end
    mon problème est que je ne vois pas du tout comment utiliser les 95% et je ne comprends pas d'où viens le paramètre " mult=1.96"

    Pour le moment, je n'ai pas la possibilité de contacter la personne ayant réalisé ce programme et j'aimerai avancé en attendant ...

    Si vous pouvez m'aider ...
    Je vous remercie !!!!!

  2. #2
    Membre éclairé
    Avatar de Kangourou
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 859
    Points
    859
    Par défaut
    ce sont des stats...

    si tes coordonnées x (par exemple) suivent une loi normale de moyenne M et d'écart-type SIGMA, alors l'intervalle [MU-1.96*SIGMA MU+1.96*SIGMA] contient 95% des points.

    On arrondi parfois à 2 quand on fait les calculs de tête...


    Si tu calcules la moyenne et l'écart-type à partir d'une série de N points, alors le multiplicateur est différent (enfin, il devrait être différent, mais on utilise souvent 1.96 de manière abusive). Il tend vers 1.96 quand le nombre de points augmente.

    Si tu a la toolbox stats, tu peux regarder les fonction norminv, normcdf et les autres de la série.

    Dans le code que tu as, les valeurs "val" contiennent les variances, donc sqrt(val) contient les écart-types.
    Les multiplications par cosinus et sinus permettent de calculer l'ellipse après rotation.

    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 68
    Points : 26
    Points
    26
    Par défaut
    Bonjour,


    Je vous remercie pour toutes ces précisions.
    Tout est plus clair désormais.

    Je clôturerais le post une fois que j'aurais essayé un peu de faire tourner le programme afin de voir que j'ai bien tout compris.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 68
    Points : 26
    Points
    26
    Par défaut
    Lorsque je fais mon calcul, j'utilise des données en millimètre.
    La sortie "Surface" est donc en millimètre² (mm²) si je ne me trompe pas !

    Petite question pour vraiment être sur !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 58
    Points : 69
    Points
    69
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Surface = pi*prod(axes);
    prod(axes) étant le produit des axes c'est effectivement l'aire d'une ellipse et donc bien en mm2 (si tes axes sont en mm)

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

Discussions similaires

  1. [C#] Centrer une image sur des coordonnées précises
    Par Towandaa dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 27/03/2012, 16h00
  2. Réponses: 4
    Dernier message: 06/06/2007, 12h16
  3. Réponses: 6
    Dernier message: 20/04/2007, 11h38
  4. Réponses: 2
    Dernier message: 27/03/2007, 18h58
  5. Une infobulle à partir des coordonnées sur une image
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/01/2006, 21h20

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