Comment fixer un coefficient dans une régression logistique ordinale sans hypothèse de cotes proportionnelles dans R?

11

Je veux faire une régression logistique ordinale dans R sans l'hypothèse de cotes de proportionnalité. Je sais que cela peut être fait directement en utilisant la vglm()fonction en Rdéfinissant parallel=FALSE.

Mais mon problème est de savoir comment corriger un ensemble particulier de coefficients dans cette configuration de régression? Par exemple, supposons que la variable dépendante soit discrète et ordinale et puisse prendre des valeurs , ou . Si les régresseurs sont et , alors les équations de régression sontY = 1 2 3 X 1 X 2YY=123X1X2

logit(P(Y1))=α1+β11X1+β12X2logit(P(Y2))=α2+β21X1+β22X2

Je souhaite définir et sur . Veuillez me faire savoir comment y parvenir. De plus, si vous ne pouvez pas le faire, pourriez-vous également me faire savoir si je peux y parvenir dans un autre logiciel statistique? β 22 1β11β221R

Shanker
la source
est-il continu ou catégorique? Dans ce dernier cas, vous pouvez obtenir quelque chose de proche de ce que vous voulez en exécutant une analyse stratifiée. X1
Peter Flom - Réintègre Monica
Merci pour la réponse Peter. X1 et X2 sont continus.
Shanker
Alors, est-ce que le point est que vous voulez juste optimiser l'ajustement de ce modèle sur alpha?
gung - Réintégrer Monica
2
@Shanker, si vous voulez fixer le coefficient à , alors vous ne le voulez pas dans le modèle - vous voulez simplement ajouter la variable correspondante à droite de l'équation, ce que fait le décalage. 1
Macro
1
@Shanker, désolé - J'ai mal lu votre citation "Je veux mettre et à " β 22 1β11β221 - Je pensais que cela correspondait à la même variable dans les deux équations mais je peux voir que ce n'est pas le cas. Quelqu'un peut avoir le bon Rcode pour vous aider ici, mais je soupçonne qu'il n'existe pas de tel code et la réponse à la question (que vous ne voudrez peut-être pas entendre), est d'écrire votre propre code pour s'adapter à ce modèle. Ce ne serait pas terriblement compliqué et si vous avez besoin d'aide pour calculer les équations de vraisemblance, etc., vous pouvez envisager de poster cela comme une question distincte.
Macro

Réponses:

2

Je ne suis pas sûr de comprendre ce que l'OP signifiait quand il / elle dit "Je ne peux pas l'utiliser offsetparce qu'il supprime complètement le régresseur correspondant de la régression." Vous pouvez corriger un paramètre en utilisant la offset()fonction dans R. J'utilise lm()ci-dessous, mais cela devrait également fonctionner dans votre modèle.

dat  <- data.frame(x=rnorm(30))
dat$y <- dat$x * 2 + rnorm(30) 
free <- lm(y ~ x,dat)
fixed1<- lm(y ~ offset(2 * x),dat)

summary(free)
#Coefficients:
#            Estimate Std. Error t value Pr(>|t|)    
#(Intercept)  0.03899    0.17345   0.225    0.824    
#x            2.17532    0.18492  11.764 2.38e-12 ***

summary(fixed1)
#Coefficients:
#            Estimate Std. Error t value Pr(>|t|)
#(Intercept)  0.05043    0.17273   0.292    0.772

Le paramètre fixe n'apparaît pas dans la sortie, mais il est toujours fixé à 2. Ensuite, je fixerai le xparamètre à sa valeur estimée dans le freemodèle

fixed2<- lm(y ~ offset(2.17532 * x),dat)
summary(fixed2)
#Coefficients:
#            Estimate Std. Error t value Pr(>|t|)
#(Intercept)  0.03899    0.17002   0.229     0.82

Notez que l'ordonnée à l'origine fixed2est estimée avec la même valeur que dans le freemodèle.

ndoogan
la source