algorithme régression logistique
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:
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.