Régression non-linéaire et Erreur standard de régression

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
jonses
Membre Relatif
Messages: 496
Enregistré le: 19 Mai 2013, 11:33

Régression non-linéaire et Erreur standard de régression

par jonses » 20 Sep 2019, 14:23

Bonjour à tous,

J'essaye de faire une régression non-linéaire d'une série de valeurs
La forme de la fonction paramétrique est "devinée" par moi-même, et elle n'est pas linéaire. Il me reste "seulement" à approcher les constantes paramétriques à l'aide de méthodes itératives (Gauss-Newton par exemple).

Cependant, j'essayais de savoir s'il existe un équivalent au coefficient de détermination linéaire pour une régression non-linéaire paramétrique.

Après maintes recherches, je tombe sur la recommandation suivante : un équivalent à (coefficient de détermination linéaire) pour une régression non-linéaire est de calculer l'erreur standard de régression .

Le souci c'est que je ne trouve pas de formule pour calculer l'erreur standard de régression. Est-ce que quelqu'un sait comment calculer l'erreur standard de régression ?

Je vous remercie d'avance pour votre aide.

---------------------------------------------------------------------
N.B. : si jamais ça peut servir, la forme de la fonction non-linéaire paramétrique est la suivante :



sont les paramètres que j'approche avec une méthode itérative (Gauss-Newton)

Je n'ai pas trouvé ce que je cherche sur le forum ni sur internet, mais dans le cas où j'ai mal cherché, je m'en excuse d'avance.



GaBuZoMeu
Habitué(e)
Messages: 6016
Enregistré le: 05 Mai 2019, 11:07

Re: Régression non-linéaire et Erreur standard de régression

par GaBuZoMeu » 20 Sep 2019, 14:39


jonses
Membre Relatif
Messages: 496
Enregistré le: 19 Mai 2013, 11:33

Re: Régression non-linéaire et Erreur standard de régression

par jonses » 20 Sep 2019, 15:17

Lors de mes recherches sur le net, je suis jamais tombé sur cela.

ça a l'air d'être bien ce que je cherche. Je te remercie du coup.

J'ai juste une petite question en retour par rapport à la formule de la page wikipédia (je ne suis pas très bon en anglais):

- la matrice d'observation et la matrice des données calculées sont-elles respectivement et la matrice dans mon cas ?

- le degré de liberté est-ce la différence entre le nombre d'élément de et le nombre d'élément de ?
Si c'est le cas, le souci que j'ai est que j'ai autant d'élément dans et dans , et donc dans

GaBuZoMeu
Habitué(e)
Messages: 6016
Enregistré le: 05 Mai 2019, 11:07

Re: Régression non-linéaire et Erreur standard de régression

par GaBuZoMeu » 20 Sep 2019, 15:26

À ce que j'en comprends, la réponse à tes questions est
1) oui
2) non : c'est "the number of observations n" (le nombre d'éléments dans ta série) "minus the number of fitted parameters m" (le nombre de paramètres à ajuster, trois dans ton cas).

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 14:00

Re: Régression non-linéaire et Erreur standard de régression

par fatal_error » 21 Sep 2019, 12:13

bj,

en voulant comparer R2 et S, (code octave)
Code: Tout sélectionner
xs = 0:0.01:1;

function ys=gen(x,m, r)
    ys = m(1)./(1+m(2)*e.^(m(3).*x));
    err = r * ys;

    noise = ((rand(1,length(x))*2-1)).*err;
    ys += noise;
endfunction

function f=fit(xs, ys)
    F = @(m) sum((ys-m(1)./(1+m(2)*e.^(m(3).*xs))).^2);
    [f, p, cvg, iter] = sqp ([1,1,1], F);
endfunction

function [r2,s]=stats(xs,ys,Fxs)
    %https://en.wikipedia.org/wiki/Goodness_of_fit
    ym = sum(ys/length(ys));
    ssres = sum((ys-Fxs).^2);
    sstot = sum((ys-ym).^2);
    r2 = 1-ssres/sstot;

    sigi2 = (ys-ym).^2;
    %t = ((ys-Fxs).^2./sigi2);
    %for i = 1:length(t)
    %    if t(i)>1
    %        ti=t(i)
    %        yi=ys(i)
    %        fxi=Fxs(i)
    %        sigi=sigi2(i)
    %    end
    %end
    %sigi2



    s = sum((ys-Fxs).^2./sigi2)/(length(ys)-3);
endfunction




ys = gen(xs, [1,2,3], 0.2);
m = fit(xs, ys);
Fxs = m(1)./(1+m(2)*e.^(m(3).*xs));
plot(xs, ys,'x','color','blue', xs, Fxs, 'color','red')

[r2,s] = stats(xs,ys,Fxs)

j'ai du mal à constater S comme bon indicateur...
R reste à peu près constant,
S varie, entre 0 et 50...
je constate que S semble augmenter beaucoup, lorsque pour un sigma_i^2 petit, l'écart f(x_i)-y_i est important, et je ne comprends pas trop l'intérêt de pénaliser cette erreur (pourquoi autour de la moyenne, les écarts devraient-ils être plus pénalisants?)
la vie est une fête :)

jonses
Membre Relatif
Messages: 496
Enregistré le: 19 Mai 2013, 11:33

Re: Régression non-linéaire et Erreur standard de régression

par jonses » 24 Sep 2019, 01:33

J'étais tombé sur ce site

https://statisticsbyjim.com/glossary/standard-error-regression/#targetText=The%20standard%20error%20of%20the,units%20of%20the%20response%20variable.

La personne parle de "standard error of the regression" comme étant plus approprié et mieux applicable à une régression non linéaire. Le souci c'est que c'est écrit en Anglais, et peut-être que j'ai mal compris ce qu'il a dit. De plus j'ai fait une traduction littérale de "standard error of the regression" par "erreur standard de régression". De mes souvenirs de mes cours d'Anglais, il faut se méfier des traductions littérales, car ça peut ne pas marcher.

Est-ce qu'en fait "standard error of the regression" désigne autre chose que l'indicateur de la page wikipédia (https://en.wikipedia.org/wiki/Reduced_chi-squared_statistic) sur le "Reduced chi-squared" ?

Skullkid
Habitué(e)
Messages: 3075
Enregistré le: 08 Aoû 2007, 21:08

Re: Régression non-linéaire et Erreur standard de régression

par Skullkid » 24 Sep 2019, 15:13

Bonjour,

fatal_error, il y a un souci dans ton code, S n'est pas calculé correctement. Le qui apparaît dans la formule donnée par la page Wikipedia n'est pas l'écart quadratique entre et la moyenne de tous les , c'est (ton estimation a priori de) la variance du bruit qui affecte . En d'autres termes, est la taille de la barre d'erreur sur ta i-ème mesure, ça quantifie la précision/confiance que tu accordes à cette mesure-là en particulier.

Dans le contexte de ton code, tu as fabriqué toi-même le bruit donc tu connais sa variance : (écart-type de la loi uniforme sur un intervalle de longueur ). Dans des cas pratiques, peut par exemple venir de ce que tu sais sur la précision de tes instruments de mesure, et/ou s'estimer à partir de tes données si tu as plusieurs mesures de y pour le même .

Pour jonses, ce que ton blog appelle "standard error of the regression" c'est simplement la moyenne quadratique des résidus, c'est-à-dire . Ce truc-là quantifie purement géométriquement l'écart entre ta régression et le nuage de points formé par tes données, alors que le réduit dont parle Wikipédia ajoute deux corrections : une en normalisant chaque résidu par une variance a priori (les fameux ), et une autre en remplaçant le nombre d'observations par le nombre de degrés de liberté au dénominateur. La première correction permet de donner des poids différents à chaque mesure, la deuxième prend en compte le fait que c'est de plus en plus facile de minimiser les résidus si tu augmentes le nombre de paramètres.

Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 14:00

Re: Régression non-linéaire et Erreur standard de régression

par fatal_error » 24 Sep 2019, 16:05

top Skullkid!
Code: Tout sélectionner
%https://www.maths-forum.com/superieur/regression-non-lineaire-erreur-standard-regression-t210267.html#p1377555
xs = 0:0.01:1;

function [ys,sig2] =gen(x,m, r)
    ys = m(1)./(1+m(2)*e.^(m(3).*x));
    err = r * ys;

    sig2 = r*r/3*ys.^2;

    noise = ((rand(1,length(x))*2-1)).*err;
    ys += noise;

endfunction

function f=fit(xs, ys)
    F = @(m) sum((ys-m(1)./(1+m(2)*e.^(m(3).*xs))).^2);
    [f, p, cvg, iter] = sqp ([1,1,1], F);
endfunction

function [r2,s]=stats(xs,ys,Fxs,sig2)
    %https://en.wikipedia.org/wiki/Goodness_of_fit
    ym = sum(ys/length(ys));
    ssres = sum((ys-Fxs).^2);
    sstot = sum((ys-ym).^2);
    r2 = 1-ssres/sstot;

    s = sum((ys-Fxs).^2./sig2)/(length(ys)-3);
endfunction



[ys,sig2] = gen(xs, [1,2,3], 0.2);
m = fit(xs, ys);
Fxs = m(1)./(1+m(2)*e.^(m(3).*xs));
plot(xs, ys,'x','color','blue', xs, Fxs, 'color','red')

[r2,s] = stats(xs,ys,Fxs,sig2)

on retrouve bien un s aux alentours de 1
la vie est une fête :)

jonses
Membre Relatif
Messages: 496
Enregistré le: 19 Mai 2013, 11:33

Re: Régression non-linéaire et Erreur standard de régression

par jonses » 25 Sep 2019, 00:58

Je vous remercie beaucoup pour tous ces éclaircissements. Maintenant ça devient beaucoup plus clair.

Les stats n'ont jamais été mon point fort (heureusement en prépa c'était pas trop présent, malheureusement en école d'ingé c'était très présent)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 37 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite