Je voudrais fixer manuellement un certain coefficient, par exemple , puis ajuster les coefficients à tous les autres prédicteurs, tout en conservant dans le modèle.β 1 = 1,0
Comment puis-je y parvenir en utilisant R? J'aimerais particulièrement travailler avec LASSO ( glmnet
) si possible.
Sinon, comment puis-je limiter ce coefficient à une plage spécifique, disons ?
Réponses:
Vous devez utiliser l'
offset
argument comme ceci:À propos de la gamme ... Je ne pense pas que cela ait été implémenté en
glmnet
. S'ils utilisent une méthode numérique, vous voudrez peut-être creuser dans le code R et essayer de le restreindre là-bas, mais vous aurez besoin d'un bon fond de programmation solide.la source
offset
fait- on réellement? Comment la valeur de est-elle1.1*x1
déterminée à partir de la question?offset
leglmnet
paquet, la réponse fournie par Stat n'a pas de sens pour moi. Lorsque j'exécute fit1 beta)] je ne vois aucun . Pourriez-vous clarifier le fonctionnement de l'offset dans votre exemple? Pour la plage des bêtas, vous pouvez utiliser les arguments et . β 1 = 1,0lower.limits
upper limits
Eh bien, réfléchissons. Vous avez:
(pour faire simple) Vous voulez forcer donc vous voulezb1= 1
vous pouvez donc simplement soustraire de chaque côté en laissant:X1
qui peut alors estimer .b2
la source
En ce qui concerne les coefficients contraignants à se situer dans une fourchette, une approche bayésienne de l'estimation est un moyen d'y parvenir.
En particulier, on s'appuierait sur une chaîne Markov Monte Carlo. Tout d'abord, considérons un algorithme d'échantillonnage de Gibbs, qui est de savoir comment vous adapteriez le MCMC dans un cadre bayésien sans la restriction. Dans l'échantillonnage de Gibbs, à chaque étape de l'algorithme, vous échantillonnez à partir de la distribution postérieure de chaque paramètre (ou groupe de paramètres) en fonction des données et de tous les autres paramètres. Wikipedia fournit un bon résumé de l'approche.
Une façon de contraindre la plage consiste à appliquer une étape Metropolis-Hastings. L'idée de base est de simplement jeter toute variable simulée qui est en dehors de vos limites. Vous pouvez ensuite continuer à rééchantillonner jusqu'à ce que ce soit dans vos limites avant de passer à l'itération suivante. L'inconvénient de ceci est que vous pourriez vous retrouver bloqué en simulant beaucoup de fois, ce qui ralentit le MCMC. Une approche alternative, développée à l'origine par John Geweke dans quelques articles et développée dans un article de Rodriguez-Yam, Davis, Sharpe consiste à simuler à partir d'une distribution normale multivariée contrainte. Cette approche peut gérer les contraintes d'inégalité linéaires et non linéaires sur les paramètres et j'ai eu un certain succès avec elle.
la source
glmnet
.Je ne connais pas LASSO ou
glmnet
, maislavaan
(abréviation de "latent variable analysis") facilite plusieurs modèles de régression avec à la fois des contraintes d'égalité et des contraintes d'inégalité à borne unique (voir le tableau à la page 7 de ce PDF, "lavaan: An R package pour la modélisation des équations structurelles " ). Je ne sais pas si vous pourriez avoir des limites supérieures et inférieures sur le coefficient, mais vous pourriez peut-être ajouter chaque limite avec des lignes distinctes, par exemple:Bien sûr, si vous standardisez tout avant d'ajuster le modèle, vous ne devriez pas avoir à vous soucier d'imposer une limite supérieure de 1 à vos coefficients de régression de toute façon. Je dirais qu'il vaut mieux l'omettre dans ce cas, juste au cas où quelque chose se passe mal! (
lavaan
est toujours en version bêta après tout ... J'ai vu des résultats légèrement louche dans ma propre utilisation limitée jusqu'à présent.)la source