Bonjour, j'essai de programmer l'algorithme de newton-raphson dans le cadre des régressions logistiques.

Mais voilà je n'obtiens pas les même résultats que SAS avec mon petit algorithme. Si quelqu'un peut jeter un coup d'oeil et me donner son avis...

On entre la variable binaire et la matrice de données X sous forme disjonctif complète à laquelle on à supprimer la colonne modalité à laquelle on se réfère.


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 [beta] = regression_logistique_penalisee(Y,X,it)
 
% Etape d'initialisation
beta = zeros(6,1);
p = beta;
W = ones(10,10);
for i = 1:10
    W(i,i) = 0;
end
 
beta = inv(X'*W*X)*X'*Y;
 
% Algorithme de Newton-Raphson
 
for k = 2:it
 
    % Calcul des p(xi1, ..., xin)
    for i = 1:10;
        E(i) = (exp(beta(1) + X(i,1)*beta(2) + X(i,2)*beta(3) + X(i,3)*beta(4) + X(i,4)*beta(5) + X(i,5)*beta(6)))/(1 + exp(beta(1) + X(i,1)*beta(2) + X(i,2)*beta(3) + X(i,3)*beta(4) + X(i,4)*beta(5) + X(i,5)*beta(6)));
    end 
 
    p = E';
    for i = 1:10
        W(i,i) = E(i)*(1 - E(i));
    end
 
    beta = beta + inv(X'*W*X)*X'*(Y - p);
 
end
Voici un warning que je retrouve pas sous SAS en fait... ou alors SAS le résout en mettant l'estimateur de ma variable X3 à 0, en effet c'est un retour que j'ai sous SAS qui me dit que X3 est combinaison linéaire des autre colonnes.

Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.778135e-018.

Merci d'avance.