Regression sous MatLab
Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Regression sous MatLab



  1. #1
    invite1264dbec

    Exclamation Regression sous MatLab


    ------

    Bonjour.
    Voilà mon problème :

    on a mesuré experimentalement:
    Ci,Xi,Yi,Zi (i mesures)(pour (Xi,Yi,Zi) donné on a mesuré Ci)

    on cherche F telle que :
    pour tout i : F(Xi,Yi,Zi)=Ci
    on suppose F polynomiale de degré 3.
    (on ne cherche pas à résoudre de système d'équations)

    Comment récupérer sous MatLab les tests d'hypothèses pour les coefficients (devant les X,Y,Z,X^2,...,Z^3) et les poids de X,Y,Z,...,Z^3

    Merci d'avance.
    Marco.

    -----

  2. #2
    juan

    Re : Regression sous MatLab

    salut!
    Ce doit être dans l'aide de la fonction NLINFIT, il me semble.
    A+

  3. #3
    juan

    Re : Regression sous MatLab

    J'ai jeté un oeil,c'est vrai que dans la version de Matlab que j'utilisais il y a un bout de temps, il n' y avait peut-être pas les intervalles.J'ai retrouvé ça:


    Nlinfit fournit de toutes manières :
    J,RSS,et les paramètres on en déduit le reste.
    A+

  4. #4
    invite1264dbec

    Re : Regression sous MatLab

    On cherche à faire une régression linéaire par la méthode des moindres carrés avec le polynôme choisi, ici de degré trois.
    NLINFIT me semble fait pour une regression non linéaire, mais pour la regression linéaire, j'ai du mal car on a cherché à faire :
    Y=(C1,C2,...,Ci,...,Cn) (en colonne)
    X=matrice i lignes ,p colonnes (avec p=card({1,X,Y,Z,...Z^3})


    1( 1 X1 Y1 ........................... Z1^3)
    2( 1 X2 Y2............................ ...........)
    3( 1 ................etc........... ..................)
    .( 1 .............................. ...................)
    .( 1 .............................. ...................)
    .( 1 .............................. ...................)
    i( 1 Xi............................ ..................)

    on a testé avec REGRESS mais on a eu des valeurs aberrantes (+-inf, ou en 10^(+-)13 et dans le genre).
    la colonne des 1 sert pour que MatLab calcule le terme constant lambda.
    REGRESS donne bien les coeffs normalement, non?
    A savoir que : pour tout i : Xi+Yi+Zi=1.
    PS: j'ai MatLab en anglais et l'aide n'est pas très claire

  5. A voir en vidéo sur Futura
  6. #5
    juan

    Re : Regression sous MatLab

    Citation Envoyé par Marco Apprenti-Ingénieur
    On cherche à faire une régression linéaire par la méthode des moindres carrés avec le polynôme choisi, ici de degré trois.
    NLINFIT me semble fait pour une regression non linéaire
    Tu peux utiliser nlinfit(nlpredci et nlparci donnent les intervalles de confiance des paramètres et des valeurs prédites),ta fonction n'est pas linéaire en X,Y,Z...mais c'est vrai que POLYFIT,la fonction utilisée par matlab pour l'approximation des polynômes au sens des moindres carrés utilise la même algo que REGRESS (regarde dans regress.m et polyfit.m)


    REGRESS donne bien les coeffs normalement, non?
    oui :

    % [B,BINT,R,RINT,STATS] = REGRESS(y,X,alpha) uses the input, ALPHA
    % to calculate 100(1 - ALPHA) confidence intervals for B and the
    % residual vector, R, in BINT and RINT respectively. The vector
    % STATS contains the R-square statistic along with the F and p
    % values for the regression.


    Pour les valeurs aberrantes des paramètres, il peut y avoir plusieurs explications.Il se peut aussi que ta matrice soit singulière.En effet, l'estimateur au sens des moindres carrés du vecteur de tes poids,disons betahat,est :
    betahat= inv(X'X)X'y
    si (X'X) n'est pas inversible,cata.Il faut alors faire le bon compris "erreur commise/nombre de paramètres".

    Il faut aussi prendre en compte le nombre d'observations . Tu as 10 paramètres, si tu as 15 observations,aucun doute que l'erreur sera petite!Alors que ces mêmes Y peuvent très bien être décrits par un modèle à 2/3 paramètres...
    Bon courage.

  7. #6
    invite1264dbec

    Re : Regression sous MatLab

    en fait on veut la fonction :

    az^3+by^3+cx^3+dx+ey+fz+g (7 paramètres)
    et on a 21 mesures/observations.
    il faudrait faire NLINFIT et lui suggerer en parametre de NLINFIT la fonction ci-dessus ?

    ya-til une syntaxe particulière pour ecrire la fonction à suggerer

  8. #7
    juan

    Re : Regression sous MatLab

    Citation Envoyé par Marco Apprenti-Ingénieur
    en fait on veut la fonction :

    az^3+by^3+cx^3+dx+ey+fz+g (7 paramètres)
    il faudrait faire NLINFIT et lui suggerer en parametre de NLINFIT la fonction ci-dessus ?
    Mea culpa,tu as raison,le modèle linéaire fait référence à la linéarité des coefficients,me suis un peu pressé,là.Il est idiot d'utiliser nlinfit en ce cas.

    Quelle "tête" a ta matrice inv(X'X)? Si X'X n'est pas inversible,tes variables ne sont pas linéairement indépendantes,donc il y en a d'inutile(s)...

  9. #8
    invite1264dbec

    Re : Regression sous MatLab

    effectivement la matrice est liée (X+Y+Z=1)
    Il faut donc réecrire la fonction qu'avec des X et Y par exemple (on peut toujours effectuer des tests stats pour vérifier si c'est valable, mais là c'est plutôt évident).

    En ce cas, il nous faut donc travailler plutôt avec une matrice contenant :
    une colonne de 1 (la constante de la fonction)(ça ne sera pas lié du coup)
    et les colonnes des termes X,Y,X^2,Y^2,XY^2,YX^2..Y^3

    ou alors avec le même mais sans les colonnes de 1 (ça sera toujours non-lié)
    Dans tous les cas on peut désormais utiliser REGRESS sans crainte je pense.

  10. #9
    juan

    Re : Regression sous MatLab

    ou alors avec le même mais sans les colonnes de 1 (ça sera toujours non-lié)
    il te faut obligatoirement la colonne de 1 ,REGRESS pré-suppose qu'il y en a une pour faire ses calculs (c'est dans l'explication de regress,dans regress.m)

    Pourquoi introduis-tu des intéractions dans ton modèle?Je croyais que le modèle t'était imposé...je pige pas là.
    C'est quoi tes paramètres?A+

  11. #10
    invite1264dbec

    Arrow Re : Regression sous MatLab

    En fait on ne connait pas le modèle, et on teste différentes combinaisons de degrés trois et leur validité (degré choisi arbitrairement, les combinaisons ont aussi étés prises au hasard car on manque de temps), et dans la limite du délai imposé (jusqu'à ce jeudi soir).

    A terme, je voudrais faire un script matlab pour tester les combinaisons sur des degrés n (n faible),avec n'importe quel tableau de données (mais toujours x+y+z=1)et voir quels sont les termes significatifs. C'est tendu !!!!!

    Autre petite question : comment utilise-t-on Fischer-Snedecor sur MatLab (trouver une valeur pour les degrés n1,n2, à (1-alpha) près ? )

  12. #11
    juan

    Re : Regression sous MatLab

    chi2cdf, mais je ne me souviens plus de la syntaxe.Il existe une interface graphique si je me rappelle bien ou tu peux choisir ta loi ,et soit la distribution ou la fonction de répartition (chi2pdf et chi2cdf par exemple + chi2inv(proba) )
    euh...essaye "disttool" tel quel,je crois que c'est la commande pour l'interface.

    tiens:
    function x = chi2inv(p,v);
    %CHI2INV Inverse of the chi-square cumulative distribution function (cdf).
    % X = CHI2INV(P,V) returns the inverse of the chi-square cdf with V
    % degrees of freedom at the values in P. The chi-square cdf with V
    % degrees of freedom, is the gamma cdf with parameters V/2 and 2.

    donc chi2inv(0.95,11) te donne la valeur critique du chi2 à 11 ddl pour un test au rique alpha=5%.

    Et pour ton script,ça existe dans tous les logiciels stats (matlab je ne sais pas) et on parle de méthode stepwise(pas à pas) ,backward ou forward (soit on part du modèle complet et on test la suppression des variables,ou on part de laconstante et on incrémente le modèle variable par variable en regardant si l'apport vaut le coup).
    Le critère de sélection est effectivement le Fisher bien souvent,mais il en existe d'autres,comme le R²,le critère AIC ,BIC,etc...
    A+

Discussions similaires

  1. regression logistique sous matlab
    Par inviteaba5c429 dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 04/05/2010, 16h32
  2. Régression linéaire Matlab
    Par seb__d dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 20/01/2010, 21h14
  3. sos help matlab regression linéaire
    Par invite4088bfaf dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 15/11/2007, 21h42
  4. Régression sous matlab
    Par stagiaireengalere dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 06/04/2007, 12h41
  5. Régression linéaire Matlab
    Par seb__d dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 20/04/2006, 16h08