Jak ustalić współczynnik w porządkowej regresji logistycznej bez zakładania proporcjonalnych szans w R?

11

Chcę zrobić porządkową regresję logistyczną w R bez założenia prawdopodobieństwa proporcjonalności. Wiem, że można to zrobić bezpośrednio za pomocą vglm()funkcji Rpoprzez ustawienie parallel=FALSE.

Ale moim problemem jest to, jak naprawić konkretny zestaw współczynników w tej konfiguracji regresji? Powiedzmy na przykład, że zmienna zależna jest dyskretna i porządkowa i może przyjmować wartości Y = 1 , 2 lub 3 . Jeśli regresorami są X 1 i X 2 , to równania regresji sąYY=123X1X2

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

Chcę ustawić i β 22 na 1 . Daj mi znać, jak mogę to osiągnąć. A jeśli nie możesz tego zrobić, czy możesz również dać mi znać, czy mogę to osiągnąć w jakimkolwiek innym oprogramowaniu statystycznym?β11β221R

Shanker
źródło
Czy ciągły czy kategoryczny? Jeśli to drugie, możesz uzyskać coś zbliżonego do tego, co chcesz, przeprowadzając analizę warstwową. X1
Peter Flom - Przywróć Monikę
Dzięki za odpowiedź Peter. Zarówno X1, jak i X2 są ciągłe.
Shanker
Czy zatem chodzi o to, że chcesz zoptymalizować dopasowanie tego modelu do wersji alfa?
Gung - Przywróć Monikę
2
1
1
β11β221R

Odpowiedzi:

2

Nie jestem pewien, czy rozumiem, co OP miał na myśli, gdy powiedział: „Nie mogę użyć, offsetponieważ całkowicie usuwa odpowiedni regresor z regresji”. Możesz naprawić parametr za pomocą offset()funkcji w R. Używam lm()poniżej, ale powinien on również działać w twoim modelu.

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

Stały parametr nie pojawia się na wyjściu, ale nadal jest ustawiony na 2. Następnie naprawię xparametr do jego wartości szacunkowej w freemodelu

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

Zauważ, że punkt przecięcia w fixed2jest szacowany z taką samą wartością jak w freemodelu.

ndoogan
źródło