Comment évaluer le pouvoir prédictif d'un ensemble de prédicteurs catégoriels d'un résultat binaire? Calculer les probabilités ou la régression logistique?

10

J'essaie de déterminer si de simples probabilités fonctionneront pour mon problème ou s'il vaudra mieux utiliser (et en savoir plus) des méthodes plus sophistiquées comme la régression logistique.

La variable de réponse dans ce problème est une réponse binaire (0, 1). J'ai un certain nombre de variables prédictives qui sont toutes catégoriques et non ordonnées. J'essaie de déterminer quelles combinaisons des variables prédictives produisent la proportion la plus élevée de 1. Ai-je besoin d'une régression logistique? En quoi serait-il avantageux de simplement calculer les proportions dans mon ensemble d'échantillons pour chaque combinaison des prédicteurs catégoriels?

Rachel
la source
Si vous avez plus d'un prédicteur, il pourrait être difficile de le faire sans une sorte de modèle de régression. Qu'avais tu en tête? Juste une grande table de contiguïté dimensionnelle ( est le nombre de prédicteurs)? kkk
Macro
Les catégories de prédicteurs sont-elles regroupées en plusieurs facteurs, et si oui, sont-elles croisées ou imbriquées? De plus, êtes-vous uniquement intéressé à faire une déclaration descriptive? Si vos données sont complexes, un modèle LR peut être plus pratique, et si vous voulez faire des inférences LR est fortement préférable, je pense.
gung - Rétablir Monica
@Macro - Oui, je pensais que ce serait essentiellement un grand tableau, avec une colonne indiquant le nombre de points d'échantillonnage correspondant au scénario, et une autre colonne indiquant la proportion de 1. J'ai cinq prédicteurs catégoriques, chacun avec 10-30 valeurs possibles, donc je sais que la liste des scénarios serait élevée. Je pensais créer une boucle dans R qui passe par chacun et produire des résultats significatifs (proportion élevée de 1 plus grand nombre de points d'échantillonnage dans le scénario).
Rachel
@gung - Les facteurs ne sont que partiellement croisés. Aucun des facteurs ne serait considéré comme imbriqué. Je suis intéressé à trouver les combinaisons de facteurs (par exemple, État, client, employé) qui auront probablement une forte probabilité que la variable de réponse soit égale à 1.
Rachel
1
@EmreA - Malheureusement, les variables catégorielles ne sont pas entièrement indépendantes. Certaines combinaisons seront plus probables que d'autres ...
Rachel

Réponses:

11

Jusqu'à une imprécision numérique, la régression logistique donnera exactement les mêmes ajustements que les pourcentages tabulés. Par conséquent, si vos variables indépendantes sont des objets facteursfactor1 , etc., et que les résultats dépendants (0 et 1) le sont x, alors vous pouvez obtenir les effets avec une expression comme

aggregate(x, list(factor1, <etc>), FUN=mean)

Comparez cela à

glm(x ~ factor1 * <etc>, family=binomial(link="logit"))

À titre d'exemple, générons des données aléatoires:

set.seed(17)
n <- 1000
x <- sample(c(0,1), n, replace=TRUE)
factor1 <- as.factor(floor(2*runif(n)))
factor2 <- as.factor(floor(3*runif(n)))
factor3 <- as.factor(floor(4*runif(n)))

Le résumé est obtenu avec

aggregate.results <- aggregate(x, list(factor1, factor2, factor3), FUN=mean)
aggregate.results

Sa sortie comprend

   Group.1 Group.2 Group.3         x
1        0       0       0 0.5128205
2        1       0       0 0.4210526
3        0       1       0 0.5454545
4        1       1       0 0.6071429
5        0       2       0 0.4736842
6        1       2       0 0.5000000
...
24       1       2       3 0.5227273

Pour référence future, l'estimation des facteurs aux niveaux (1,2,0) dans la ligne 6 de la sortie est de 0,5.

La régression logistique abandonne ainsi ses coefficients:

model <- glm(x ~ factor1 * factor2 * factor3, family=binomial(link="logit"))
b <- model$coefficients

Pour les utiliser, nous avons besoin de la fonction logistique:

logistic <- function(x) 1 / (1 + exp(-x))

Pour obtenir, par exemple, l'estimation des facteurs aux niveaux (1,2,0), calculer

logistic (b["(Intercept)"] + b["factor11"] + b["factor22"] + b["factor11:factor22"])

(Remarquez comment toutes les interactions doivent être incluses dans le modèle et tous les coefficients associés doivent être appliqués pour obtenir une estimation correcte.) Le résultat est

(Intercept) 
        0.5

d'accord avec les résultats de aggregate. (Le titre "(Intercept)" dans la sortie est un vestige de l'entrée et n'a aucun sens pour ce calcul.)


Les mêmes informations sous une autre forme apparaissent dans la sortie detable . Par exemple, la sortie (longue) de

table(x, factor1, factor2, factor3)

comprend ce panneau:

, , factor2 = 2, factor3 = 0

   factor1
x    0  1
  0 20 21
  1 18 21

La colonne pour factor1= 1 correspond aux trois facteurs aux niveaux (1,2,0) et montre que des valeurs de égal , en accord avec ce que nous lisons à partir de et .121/(21+21)=0.5x1aggregateglm


Enfin, une combinaison de facteurs produisant la proportion la plus élevée dans l'ensemble de données est commodément obtenue à partir des résultats de aggregate:

> aggregate.results[which.max(aggregate.results$x),]
  Group.1 Group.2 Group.3         x
4       1       1       0 0.6071429
whuber
la source
1
C'est beaucoup d'informations et cela me prendra un certain temps à digérer, mais je suis heureux d'entendre que les pourcentages tabulés et les régressions logistiques me donneront essentiellement les mêmes résultats. J'ai exécuté la fonction d'agrégation sur deux des prédicteurs et elle s'est terminée immédiatement ... les résultats de l'ajustement logistique fonctionnent depuis plusieurs minutes et ne sont pas encore terminés. Je vais continuer à peaufiner les choses, mais je peux finir par utiliser les pourcentages tabulés. Je vous remercie!
Rachel
(+1), je me demande si des erreurs standard dans ce contexte de la régression logistique peuvent être incorporées dans les résumés graphiques de mosaïque que j'ai suggérés. Je soupçonne également que cela pourrait être un bon moyen de "filtrer" rapidement les résultats pour des interactions intéressantes (ce ne sont que mes réflexions!)
Andy W
"La régression logistique, jusqu'à l'imprécision numérique, donnera exactement les mêmes ajustements que les pourcentages tabulés": N'est-elle pas en train de tabuler les pourcentages pour chaque configuration de prédicteurs? Dans ce cas, la régression logistique ne peut pas coder toutes les relations possibles.
Neil G
@Neil Bien sûr, il peut encoder toutes les "relations" (combinaisons de facteurs): utilisez toutes les interactions possibles. Voir le code R pour un exemple. Lorsque les facteurs sont nombreux, il y aura en pratique de nombreuses combinaisons vides, mais un logiciel décent n'aura aucun problème à y faire face. Un logiciel encore meilleur gère les combinaisons sans variation des réponses.
whuber
@Andy J'adore votre réponse sur les graphiques - nous devons trouver un moyen de créer un fil de discussion où c'est exactement la bonne réponse! Peut-être que votre réflexion sur l'incorporation d'estimations d'erreur dans les graphiques en mosaïque serait la façon de l'aborder: comment représenteriez-vous simultanément les estimations logistiques, les données réelles et / ou l'erreur?
whuber
6

Pour un aperçu rapide de la proportion de réponses binaires dans chaque catégorie et / ou conditionnelle à plusieurs catégories, les tracés graphiques peuvent être utiles. En particulier, pour visualiser simultanément des proportions conditionnées par de nombreuses variables indépendantes catégoriques, je suggérerais Mosaic Plots .

Voici un exemple tiré d'un article de blog, Comprendre les graphiques basés sur la zone: graphiques en mosaïque à partir des graphiques statistiques et plus de blog. Cet exemple visualise la proportion de survivants sur le Titanic en bleu, en fonction de la classe du passager. On peut évaluer simultanément la proportion de survivants, tout en appréciant le nombre total de passagers dans chacun des sous-groupes (informations utiles à coup sûr, surtout lorsque certains sous-groupes sont rares et que nous nous attendons à des variations plus aléatoires).

Terrain mosaïque du Titanic
(source: theusrus.de )

On peut ensuite conditionner les mosaïques suivantes à plusieurs variables indépendantes catégorielles. L'exemple suivant du même article de blog dans un résumé visuel rapide montre que tous les enfants passagers des première et deuxième classes ont survécu, tandis que dans la troisième classe, les enfants ne s'en sortaient pas aussi bien. Il montre également clairement que les femmes adultes avaient un taux de survie beaucoup plus élevé que les hommes dans chaque classe, bien que la proportion de femmes survivantes entre les classes ait diminué sensiblement de la première à la deuxième à la troisième classe (puis était encore relativement élevée pour l'équipage, bien que encore une fois, il n'y a pas beaucoup de femmes membres d'équipage, étant donné l'étroitesse de la barre).

Mosaïque conditionnelle à la troisième variable
(source: theusrus.de )

Il est étonnant de voir combien d'informations sont affichées, ce sont des proportions en quatre dimensions (classe, adulte / enfant, sexe et proportion de survivants)!

Je suis d'accord si vous êtes intéressé par la prédiction ou une explication plus causale en général, vous voudrez vous tourner vers une modélisation plus formelle. Les graphiques peuvent être des indices visuels très rapides quant à la nature des données et peuvent fournir d'autres informations souvent manquées lors de l'estimation simple des modèles de régression (en particulier lors de l'examen des interactions entre les différentes variables catégorielles).

Andy W
la source
+1, c'est le point que j'essayais de faire valoir dans mon commentaire ci-dessus pour savoir si l'objectif était une simple description ou une inférence. Nb, que le point est plus clair et mieux fait avec des chiffres!
gung - Rétablir Monica
@gung merci, qu'est-ce que cela signifie Nb? Je dis toujours mieux avec les chiffres aussi!
Andy W
2
N'ayant rien à voir avec les statistiques, "nb" signifie nota bene , qui est à son tour latin pour "notez bien" (littéralement), ou "notez cela" / "notez" (plus familièrement).
gung - Rétablir Monica
3

Selon vos besoins, vous pouvez constater que le partitionnement récursif fournit une méthode facile à interpréter pour prédire une variable de résultat. Pour une introduction R à ces méthodes, consultez la page Modèle basé sur l' arborescence de Quick-R . Je préfère généralement l' ctree()implémentation dans le package de partie de R car on n'a pas à se soucier de l'élagage, et il produit de jolis graphiques par défaut.

Cela tomberait dans la catégorie des algorithmes de sélection des caractéristiques suggérée dans une réponse précédente, et donne généralement des prévisions aussi bonnes sinon meilleures que la régression logistique.

fmark
la source
2

205

Si vous avez moins de données, vous voulez apprendre moins de paramètres. Vous pouvez réduire le nombre de paramètres en supposant, par exemple, que les configurations de prédicteurs individuels ont des effets cohérents sur la variable de réponse.

Si vous pensez que vos prédicteurs sont indépendants les uns des autres, la régression logistique est l'algorithme unique qui fait ce qu'il faut. (Même s'ils ne sont pas indépendants, cela peut quand même assez bien fonctionner.)

En résumé, la régression logistique fait une hypothèse sur l'influence indépendante des prédicteurs, ce qui réduit le nombre de paramètres du modèle et produit un modèle facile à apprendre.

Neil G
la source
1

Vous devriez regarder les algorithmes de sélection des fonctionnalités. Une méthode qui convient à votre cas (classification binaire, variables catégorielles) est la méthode de la «pertinence minimale de redondance maximale» (mRMR). Vous pouvez l'essayer rapidement en ligne à http://penglab.janelia.org/proj/mRMR/

emrea
la source
Est-il possible d'exécuter ce programme avec plus d'un prédicteur catégorique? Sur la page de téléchargement, il semble que seule la première colonne puisse être la "classe" de données ... Peut-être que je ne comprends pas comment les données sont censées être formatées.
Rachel
Ou la "classe" est-elle censée être la variable de sortie, dans ce cas un 0 ou 1? Dans l'affirmative, est-il important de transformer les variables catégorielles en variables fictives pour afficher des indicateurs pour chacune?
Rachel
Vous pouvez avoir autant de prédicteurs que vous le souhaitez. La première ligne de votre fichier de données doit être le nom des entités et la première colonne doit être les classes (variable de réponse) des échantillons. Ainsi, un exemple est: response,predictor1,predictor2,predictor3 <line break here> 1,5,4,3 <line break here> 0,5,3,-1 <line break here> 1,1,2,3
emrea
1

Je travaille dans le domaine de la notation de crédit, où ce qui est présenté ici comme un cas étrange est la norme.

Nous utilisons la régression logistique et convertissons les variables catégorielles et continues en poids de preuve (WOE), qui sont ensuite utilisés comme prédicteurs dans la régression. Beaucoup de temps est consacré au regroupement des variables catégorielles et à la discrétisation (regroupement / classement) des variables continues.

Le poids de la preuve est un simple calcul. C'est le journal des cotes pour la classe, moins le journal des cotes pour la population:
WOE = ln (Bon (Classe) / Mauvais (Classe)) - ln (Bon (TOUS) / Mauvais (TOUS)) méthodologie de transformation standard pour presque tous les modèles de notation de crédit construits en utilisant la régression logistique. Vous pouvez utiliser les mêmes nombres dans une approche par morceaux.

La beauté de celui-ci est que vous saurez toujours si les coefficients attribués à chaque WOE ont du sens. Les coefficients négatifs sont contraires aux schémas contenus dans les données et résultent généralement de la multicolinéarité; et des coefficients supérieurs à 1,0 indiquent une surcompensation. La plupart des coefficients sortiront quelque part entre zéro et un.

Raymond Anderson
la source
Merci pour un article intéressant et informatif. Je ne peux pas comprendre comment cela répond à la question dans ce fil, cependant. Quel est le "cas étrange" auquel vous faites référence? Aviez-vous peut-être l'intention de l'utiliser pour répondre à une autre question ailleurs?
whuber