next up previous contents index
suivant: Graphe de la régression monter: Les fonctions statistiques à précédent: Graphe de la régression   Table des matières   Index


Régression logistique : logistic_regression

Les courbes logistiques sont des courbes dont léquation y = y(x) sont solutions d'une équation différentielle de la forme :
y'/y = a*y + b et y0 = y(x0) avec a < 0 et b > 0.
Les solutions sont de la forme : y(x) = C/(1 + exp(- $ \alpha$(x - x0 - k) avec C = - b/a, $ \alpha$ = - b et y0 = (- b/a)/(1 + exp(- b*k) soit
k = - 1/b*(ln(- ((a*y0 + b)/(a*y0)))) Pour vérifier, on peut taper :
normal(desolve(y'/y=a*y+b)
On obtient :
(-b*exp(-(b*c_0-b*x)))/(a*exp(-(b*c_0-b*x))-1)
Puis on peut taper :
normal(desolve([y'/y=a*y+b,y(x0)=y0],y)
On obtient :
[(-b*exp(b*x-b*x0+ln(y0/(a*y0+b))))/(a*exp(b*x-b*x0+ln(y0/(a*y0+b)))-1)]
On a donc : c0 = x0 - ln(y0/(a*y0 + b))/b Donc, en multipliant le numérateur et dénominateur de y(x) par exp(b*c$ \_$0 - b*x) on a :
y(x) = (- b/(exp(b*c$ \_$0 - b*x)*a*exp(- (b*c$ \_$0 - b*x)) - 1) soit y(x) = - b/(a - exp(b*(x - c0))) = (- b/(a*(1 - exp(b*(x - c0))/a))
On a 1/a = - exp(- ln(- a)) car a < 0 donc y(x) = (- b/a)*(1/(1 + exp(b*(x - c0) - ln(- a))) qui est bien la forme annoncée.

Lorsque on connait les valeurs de f' en x = x0, x0 +1....x0 + n, on cherche une fonction logistique y(x) tel que y'(x) approche au mieux les différentes valeurs de f'(x).

logistic_regression a comme paramètres :

logistic_regression(L,x0,y0 renvoie les fonctions y(x) et y'(x), la constante C, y1M et xM avec y1M est la valeur y'(xM) qui est le maximum de y' obtenu en x = xM, et enfin le coefficient de correlation linéaire R de Y = y'/y en fonction de y avec la droite Y = a*y + b.
À partir de la liste L, Xcas calcule la liste Ly en utilisant la formule y(t + 1) - y(t) = y'(t), donc, on a Ly=[y0,y0+y0',y0+y0'+y1',....]. Puis Xcas fait une régression linéaire de L/Ly en fonction de Ly pour avoir les valeurs de a et b ( y'/y = a*y + b et y0 = y(x0)) puis touve la solution de cette équation différentielle On tape :
logistic_regression([0.0,1.0,2.0,3.0,4.0],0,1)

On obtient avec écrit en bleu la signification des valeurs renvoyées :

[(-17.77)/(1+exp(-0.496893925384*x+2.82232341488+3.14159265359*i)), (-2.48542227469)/(1+cosh(-0.496893925384*x+2.82232341488+3.14159265359*i)), -17.77,-1.24271113735,5.67993141131+6.32246138079*i, 0.307024935856]

On tape :

evalf(logistic_regression([1,2,4,6,8,7,5],0,2))
Ou on tape :
logistic_regression(evalf([1,2,4,6,8,7,5]),0,2.0))
On obtient :
[64.8358166583/(1.0+exp(-0.551746244591*x+2.95837880348)), 14.4915280084/(1.0+cosh(-0.551746244591*x+2.95837880348)), 64.8358166583,7.24576400418,5.36184674112,-0.81176431297]

Pour retouver la valeur -0.81176431297 du coefficient de corrélation, on tape :
L:=[1,2,4,6,8,7,5];
y0:=2.0;
Ly:=makelist(y0,1,size(L))+cumSum(L)
On obtient : [3,5,9,15,23,30,35]
puis
correlation(L/Ly,Ly) qui renvoie
-0.81176431297


next up previous contents index
suivant: Graphe de la régression monter: Les fonctions statistiques à précédent: Graphe de la régression   Table des matières   Index
Documentation de giac écrite par Renée De Graeve