Puis-je utiliser une variable qui a une relation non linéaire avec la variable dépendante dans la régression logistique?

9

Disons que je construis un modèle de régression logistique où la variable dépendante est binaire et peut prendre les valeurs 0 ou 1. Soit les variables indépendantesx1,x2,...,xm - il y a mvariables indépendantes. Disons que pour leke variable indépendante, l'analyse bivariée montre une tendance en forme de U - c'est-à-dire si je xk dans 20 bacs contenant chacun un nombre à peu près égal d'observations et calculant le `` mauvais taux '' pour chaque bac - # observations où y = 0 / total des observations dans chaque bac - alors j'obtiens une courbe en U.

Mes questions sont:

  1. Puis-je utiliser directement xkcomme entrée lors de l'estimation des paramètres bêta? Des hypothèses statistiques ont-elles été violées, ce qui pourrait entraîner une erreur significative dans l'estimation des paramètres?
  2. Faut-il «linéariser» cette variable par une transformation (log, carré, produit avec lui-même, etc.)?
Mozan Sykol
la source
3
Est Xkl'un des prédicteurs que vous souhaitez inclure dans le modèle? On dirait que tu dis queP(Y=1) est une fonction en U de Xk. Une courbe en U peut souvent être bien approximée par une fonction quadratique (en particulier près de la vallée) - avez-vous envisagé d'inclure un terme linéaire et quadratique dans cette variable dans le modèle?
Macro
@Macro merci pour votre suggestion. J'ai vu certains modélisateurs adapter une fonction linéaire par morceaux (en supposant une forme en U nette) - où chaque ligne est estimée à partir des données avec les ruptures déterminées visuellement, puis la sortie de l'équation linéaire est fournie comme entrée de la régression logistique. Je ne suis cependant pas un grand fan de l'approche.
Mozan Sykol

Réponses:

12

Vous voudriez utiliser une formulation flexible qui capturerait automatiquement la non-linéarité, par exemple, une version d'un modèle additif généralisé . Le choix d'un pauvre est un polynômexk, xk2, ..., xkpk, mais de tels polynômes produisent de terribles survols aux extrémités de la plage de leurs variables respectives. Une bien meilleure formulation serait d'utiliser des splines B (cubiques) (voir une note d'introduction aléatoire de la première page de Google ici , et un bon livre, ici ). Les B-splines sont une séquence de bosses locales:

http://ars.sciencedirect.com/content/image/1-s2.0-S0169743911002292-gr2.jpg

La hauteur des bosses est déterminée à partir de votre régression (linéaire, logistique, autre GLM), car la fonction que vous ajustez est simplement

θ=β0+k=1KβkB(xxkhk)

pour la forme fonctionnelle spécifiée de votre bosse B(). La version de loin la plus populaire est une cannelure cubique lisse en forme de cloche:

B(z)={14(z+2)3,2z114(3|x|36x2+4),1<x<114(2x)3,1x20,otherwise

Du côté de l'implémentation, tout ce que vous devez faire est de configurer 3-5-10-quel que soit le nombre de nœuds xk serait raisonnable pour votre application et créerait les variables 3-5-10 correspondantes dans le jeu de données avec les valeurs de B(xxkhk). En règle générale, une simple grille de valeurs est choisie, avechk étant deux fois la taille du maillage de la grille, de sorte qu'à chaque point, il y a deux splines B qui se chevauchent, comme dans le tracé ci-dessus.

StasK
la source
2
Comment pouvez-vous dire qu'il a besoin de quelque chose d'aussi compliqué? Il est certain qu'un terme quadratique dans une covariable x qui semble avoir cette forme pourrait être incorporé dans le modèle de régression logistique exactement comme le PO semble le vouloir.
Michael R. Chernick
1
@MichaelChernick Oui, j'ai accepté la réponse car elle m'a appris un nouveau concept, mais je n'aurai probablement pas besoin d'une solution aussi compliquée.
Mozan Sykol
3
@Michael C'est un point important. Je suis cependant encouragé par un commentaire du PO mentionnant une procédure d'ajustement linéaire ad hoc par morceaux. Le splining fonctionne dans le même esprit mais avec plus de souplesse et de rigueur. Les termes quadratiques pourraient fonctionner, mais cela semble beaucoup d'espérer.
whuber
Cela ressemble plus à une constante par morceaux pour moi: la valeur moyenne de la réponse dans un bac est équivalente à la régression sur la variable / indicateur fictif de ce bac, et c'est constant par morceaux ... @ MichaelChernick: il n'y a rien à dire, en général, mais je Je n'ai pas encore vu d'application où les B-splines seraient inférieures à l'ajustement polynomial.
StasK
@StasK Si inférieur signifie qu'il ne correspond pas aussi bien aux données, alors je pense qu'une petite taille d'échantillon favoriserait un polynôme simple.
Michael R. Chernick
5

Tout comme la régression linéaire, la régression logistique et plus généralement les modèles linéaires généralisés doivent être linéaires dans les paramètres mais pas nécessairement dans les covariables. Ainsi, des termes polynomiaux comme un quadratique que Macro suggère peuvent être utilisés. Il s'agit d'une incompréhension courante du terme linéaire dans les modèles linéaires généralisés. Les modèles non linéaires sont des modèles non linéaires dans les paramètres. Si le modèle est linéaire dans les paramètres et contient des termes de bruit additifs qui sont IID, le modèle est linéaire même s'il existe des covariables comme X2log X ou exp (X). Alors que je lis maintenant la question, elle semble être modifiée. Ma réponse spécifique serait oui à 1 et pas nécessaire à 2.

Michael R. Chernick
la source
1

Une autre alternative viable que la boutique de modélisation pour laquelle je travaille régulièrement est de regrouper les variables indépendantes continues et de remplacer le «mauvais taux». Cela force une relation linéaire.

Zelazny7
la source
J'ai aussi vu ça. Comment choisissez-vous les bacs?
Adam Ryczkowski
1
Il existe une variété de méthodes de discrétisation que vous pouvez utiliser. R a le discopaquet. J'ai créé mon propre algorithme qui fractionne récursivement une variable continue en fonction de la valeur de l'information. Je l'ai mis dans un package R ici: github.com/Zelazny7/binnr (travaux en cours!). Je substituerais également le poids de la preuve au lieu de la moyenne. Associé à la régression LASSO, les résultats sont fantastiques!
Zelazny7
Je vous remercie! Pouvez-vous comparer l' binnralgorithme avec les CRAN smbinning?
Adam Ryczkowski
'binnr' est écrit en C et est très rapide. Il prend également en charge les conditions du monde réel comme les valeurs de substitution et la monotonie. Il est possible de dire à «binnr» de ne faire des coupes discrètes que lorsque les mauvais taux sont monotones. 'smbinning' utilise des arbres d'inférence conditionnelle qui, selon mon expérience, prennent beaucoup de temps sur des ensembles de données de taille décente car ils reposent sur des permutations. 'binnr' vous permet également de faire des ajustements interactifs aux bacs avec une interface de ligne de commande
Zelazny7
L'avez-vous utilisé en production? Êtes-vous au courant de bogues cachés ou de cas d'angle non contrôlés? Je pense à l'utiliser pour un gros client et je n'aurai qu'un jour pour le tester avant d'appliquer votre code.
Adam Ryczkowski