Simple régression logistique binaire à l'aide de MATLAB

Je suis en train de travailler sur une régression logistique à l'aide de MATLAB pour un simple problème de classement. Mon co-variable est une variable continue comprise entre 0 et 1, tandis que ma réponse catégorique est une variable binaire de 0 (faux) ou 1 (correct).

Je suis à la recherche d'exécuter une régression logistique pour établir un prédicteur qui serait sortie de la probabilité de certains d'observation (par exemple, la variable continue comme décrit ci-dessus) est correcte ou incorrecte. Bien que ce soit assez simple scénario, j'ai un peu de difficulté de l'exécution de cette dans MATLAB.

Mon approche est la suivante: j'ai un vecteur colonne X qui contient les valeurs de la variable continue, et un autre de même taille vecteur colonne Y qui contient le connu classement de chaque valeur de X (par exemple 0 ou 1). Je suis en utilisant le code suivant:

[b,dev,stats] = glmfit(X,Y,'binomial','link','logit');

Cependant, cela me donne des résultats insensés avec un p = 1.000, les coefficients (b) qui sont extrêmement élevés (-650.5, 1320.1), et l'erreur-type des valeurs de l'ordre de 1e6.

J'ai ensuite essayé en utilisant un paramètre supplémentaire pour spécifier la taille de mon binôme de l'échantillon:

glm = GeneralizedLinearModel.fit(X,Y,'distr','binomial','BinomialSize',size(Y,1));

Cela m'a donné des résultats qui n'étaient plus en adéquation avec ce que j'attendais. J'ai extrait les coefficients utilisés glmval pour créer des estimations (Y_fit = glmval(b,[0:0.01:1],'logit');), et créé un tableau pour le montage (X_fit = linspace(0,1)). Quand j'ai superposé les parcelles de l'origine des données et le modèle à l'aide de figure, plot(X,Y,'o',X_fit,Y_fit'-'), la parcelle du modèle essentiellement regardé comme le plus faible 1/4ème de la " S " en forme de la parcelle qui est typique avec de la régression logistique parcelles.

Mes questions sont les suivantes:

1) Pourquoi mon utilisation de glmfit donner des résultats étranges?
2) Comment dois-je aller à répondre à ma question de départ: compte tenu de certains de la valeur d'entrée, quelle est la probabilité que sa classification est correcte?
3) Comment puis-je obtenir des intervalles de confiance pour mon paramètres du modèle? glmval devrait être en mesure de saisir le stats sortie de glmfit, mais mon utilisation de glmfit n'est pas de donner des résultats corrects.

Tous les commentaires et l'entrée serait très utile, merci!

Mise à JOUR (3/18/14)

J'ai trouvé que mnrval semble donner des résultats raisonnables. Je peux utiliser [b_fit,dev,stats] = mnrfit(X,Y+1);Y+1 simplement fait mon classificateur binaire dans un nominal.

Je peux faire une boucle par [pihat,lower,upper] = mnrval(b_fit,loopVal(ii),stats); pour obtenir diverses pihat valeurs de probabilité, où loopVal = linspace(0,1) ou certains approprié d'entrée de gamme et `ii = 1:length(loopVal)'.

La stats paramètre a un grand coefficient de corrélation (0.9973), mais les valeurs de p pour b_fit sont 0.0847 et 0.0845, dont je ne suis pas tout à fait sûr de savoir comment les interpréter. Toutes les pensées? Aussi, pourquoi mrnfit travail sur glmfit dans mon exemple? Je dois dire que les p-valeurs pour les coefficients lors de l'utilisation de GeneralizedLinearModel.fit étaient à la fois p<<0.001, et les estimations des coefficients ont été très différents.

Enfin, comment interpréter le dev sortie de la mnrfit fonction? Le MATLAB document stipule qu'il est "la déviance de l'ajustement à la solution de vecteur. La déviance est une généralisation de la somme résiduelle des carrés". Est-ce utile comme un stand-alone de la valeur, ou est-ce seulement par rapport à dev valeurs à partir d'autres modèles?

OriginalL'auteur chex | 2014-03-19