Régression logistique pondérée par cas

9

J'examine quelques problèmes de régression logistique. ("régulier" et "conditionnel").

Idéalement, je voudrais pondérer chacun des cas d'entrée afin que le GLM se concentre davantage sur la prédiction correcte des cas à pondération plus élevée au détriment d'une éventuelle mauvaise classification des cas à pondération inférieure.

Cela a sûrement été fait auparavant. Quelqu'un peut-il m'orienter vers des publications pertinentes (ou suggérer éventuellement une fonction de vraisemblance modifiée.)

Merci!

Noé
la source
1
Vous supposez que la classification est l'objectif, par opposition à la prédiction. Pour une estimation optimale des probabilités, vous n'avez pas besoin de repeser quoi que ce soit. Les «faux négatifs» et les «faux positifs» ne se produisent qu'avec des choix forcés, et généralement personne ne force un choix binaire pur.
Frank Harrell
@Frank Vous faites valoir un bon argument. En fin de compte, l'objectif de ce projet est de prédire l'issue d'autres événements. (Donc, je suppose que cela peut être considéré comme un goût d'apprentissage automatique avec des données de formation.) Certains résultats sont plus "importants" que d'autres, alors je cherchais un moyen de les pondérer en conséquence. La suggestion de Nick pour la fonction de vraisemblance est logique et devrait être assez banale à implémenter dans le code.
Noah
1
On dirait que vous avez besoin exactement d'un modèle de probabilité sans avoir besoin de pondérations.
Frank Harrell
1
Droite; branchez la fonction de coût et utilisez la probabilité prédite et vous avez une décision optimale.
Frank Harrell
1
Avec un modèle de probabilité bien calibré, il n'y a pas "d'erreurs", il y a juste un caractère aléatoire qui ne peut pas être prévu. Les décisions optimales sont fonction de la probabilité prédite et de la fonction de coût pour prendre diverses décisions pour agir.
Frank Harrell

Réponses:

3

glmcontient un paramètre weightsexactement à cette fin. Vous lui fournissez un vecteur de nombres à n'importe quelle échelle, qui contient le même nombre de poids que vous avez d'observations.

Je réalise seulement maintenant que vous ne parlez peut-être pas R. Sinon, vous voudrez peut-être.

Nick Sabbe
la source
Je connais très bien R, mais j'aimerais comprendre les mathématiques derrière la fonction de vraisemblance. Je pourrais coder cela en C ++ ou dans un autre langage. (Faire simplement confiance à la "boîte noire" de la fonction glm n'est pas toujours la meilleure solution)
Noah
Ah. Bien sur vous. Pour autant que je sache, les poids sont simplement utilisés pour multiplier la probabilité logarithmique par observation avec. Donc, si vous avez écrit une version non pondérée, l'ajout des poids devrait être un jeu d'enfant. Notez également que vous pouvez toujours regarder le code source pour glmtrouver (probablement) une implémentation C.
Nick Sabbe
2
3,.57,.53,7
3
Voici une discussion de l'argument «poids» sur un babillard électronique: r.789695.n4.nabble.com/Weights-in-binomial-glm-td1991249.html
Macro
@Macro: thx! Très propre. L'une des choses qui auraient pu me frapper dans les dents si je l'avais utilisé avant votre commentaire :-)
Nick Sabbe
1

Si vous avez accès à SAS, cela se fait très facilement en utilisant PROC GENMOD. Tant que chaque observation a une variable de poids, l'utilisation de la déclaration de poids vous permettra d'effectuer le type d'analyse que vous recherchez. Je l'ai principalement utilisé en utilisant des poids de probabilité inverse de traitement, mais je ne vois aucune raison pour laquelle vous ne pouviez pas attribuer de poids à vos données pour mettre l'accent sur certains types de cas, tant que vous vous assurez que votre N reste constant. Vous voudrez également vous assurer d'inclure une sorte de variable ID, car techniquement les cas pondérés sont des observations répétées. Exemple de code, avec un ID d'observation «id» et une variable de pondération «wt»:

proc genmod data=work.dataset descending;
    class id;
    model exposure = outcome covariate / dist=bin link=logit;
    weight wt;
    repeated subject=id/type=ind;
run;
Fomite
la source