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 :

Fonction lscov et incertitudes


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut Fonction lscov et incertitudes
    Bonjour,

    Je souhaite resoudre un systeme lineaire de la forme :

    y=a + bx1 + cx2 (1)

    ou a,b,c sont les coefficients a determiner. y,x1 et x2 sont des vecteurs de la meme taille et sont connus.

    J'ai donc pense a utilise la methode des moindres carres. Je ne me suis pas embetee, j'ai utilise directement la fonction proposee par matlab : X=lscov(A,B) en mettant mon equation (1) sous la forme matricielle : B=AX avec X=(a b c).

    Cette fonction me retourne bien les valeurs des coefficients a, b, c. Par contre, j'aimerais egalement connaitre l'incertitude sur mes coefficients. Matlab propose de calculer l'ecart-type avec la commande suivante : [x,stdx]=lscov(...) mais je ne comprends pas comment Matlab calcule cet ecart-type.
    Dans la description de la fonction lscov, il est ecrit que stdx est calcule de la maniere suivante :

    x = inv(A'*inv(V)*A)*A'*inv(V)*B
    mse = B'*(inv(V) - inv(V)*A*inv(A'*inv(V)*A)*A'*inv(V))*B./(m-n)
    S = inv(A'*inv(V)*A)*mse
    stdx = sqrt(diag(S))

    Ce qui me perturbe, c'est que je n'entre a aucun moment la valeur de V. Du coup, je ne comprends pas comment cette fonction peut calculer l'ecart-type.

    Est-ce-que quelqu'un aurait une explication ? ou sinon, est-ce-que quelqu'un aurait une autre astuce pour calculer l'incertitude sur mes coefficients ? je n'ai vraiment pas envie d'utiliser les valeurs retournees par matlab sans savoir comment il fait pour les trouver. Et surtout, j'ai peur que les valeurs que matlab me retourne ne correspondent pas a l'incertitude, mais a autre chose que je n'aurais pas saisie.

    Merci d'avance pour votre aide !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2013
    Messages : 189
    Par défaut
    Salut,

    en ouvrant le code de la fonction, qui se trouve ici :

    C:\MATLAB\R2012a\toolbox\matlab\matfun\lscov.m


    on voit cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    % V not given, assume the identity.
    if nargin < 3 || isempty(V)
        V = [];
        alg = 'chol';
    donc dans ton cas inv(V) = V = Id, tu peux simplifier tes formules en

    x = inv(A'*A)*A'*B
    mse = B'*(Id -A*inv(A'*A)*A')*B./(m-n)
    S = inv(A'*A)*mse
    stdx = sqrt(diag(S))

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    Ok super, merci !

    Par contre, est-il juste de considerer l'incertitude sur les coefficients comme l'ecart-type ? pour le coefficient a, je trouve un ecart-type que je trouve anormalement eleve. Cela veut-il dire que les valeurs trouves par la methode des moindres carres sont mauvaises ?

  4. #4
    Membre Expert
    Inscrit en
    Août 2010
    Messages
    1 124
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1 124
    Par défaut
    Bonjour,

    lscov est restreinte au cas de covariance fixe, c'est à dire le cas ou tu spécifie V (et comme tu ne le spécifie pas, il prend l'identité). Cela affecte les performances de l'estimateur vu que tu n'as pas l'air de connaitre V. Il faut se tourner vers les fonctions classiques de regression (regress et regstats, ou la division matricielle à droite).

    En ce qui concerne la significativité, l'écart-type est un indicateur (comme un autre) de l'incertitude de l'estimateur.Tu peux aussi faire un test d'hypothèse (tester la nullité du coefficient). Ils sont faits automatiquement par regress et regstats.

    Dans le cas de la régression linéaire, on connait exactement (en fonction des paramètres inconnus mais estimés) la variance de l'estimateur. Tu peux trouver la formule facilement. Par contre, le test de significativité va en plus souvent dépendre de la loi des résidus.

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    Ok, je vais me tourner vers la regression lineaire. C'est en effet plus approprie pour mon cas d'etude.

    Merci pour votre aide.

  6. #6
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    Rebonjour,

    J'ai applique vos conseils et ai utilise la fonction regress de matlab pour effectuer ma regression lineaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [coefficients]=regress(B,A)
    Mon souhait etait de calculer l'incertitude sur ses coefficients. Pour cela, je calcule la matrice de covariance-variance de â en appliquant les formules suivantes :

    s^2 = sum(y_observes - y_estimes) / (n - 3)

    var(â) = s^2 (XX')^-1

    avec X = [a;b;c] et n le nombre d'observations

    Malheureusement, cela ne marche pas car ma matrice XX' n'est pas inversible (je trouve une matrice infinie sur matlab).
    Comment puis-je resoudre un tel probleme ?

    Merci d'avance.

Discussions similaires

  1. [Débutant] La fonction LSCOV
    Par Jul13 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/10/2012, 11h43
  2. fonction nls récupérer les incertitudes
    Par svagrim dans le forum R
    Réponses: 0
    Dernier message: 10/09/2012, 22h44
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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