Як зафіксувати коефіцієнт у порядковій логістичній регресії без припущення пропорційних шансів у R?


11

Я хочу зробити порядкову логістичну регресію в R без припущення про пропорційність. Я знаю, що це можна зробити безпосередньо за допомогою vglm()функції в Rналаштуваннях parallel=FALSE.

Але моя проблема полягає в тому, як виправити певний набір коефіцієнтів у цій регресійній установці? Наприклад, скажімо, що залежна змінна дискретна і порядкова і може приймати значення , 2 або 3 . Якщо регресорами є X_ {1} і X_ {2} , то рівняння регресії єYY=123X1X2

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

Я хочу встановити β11 і β22 на 1 . Будь ласка, дайте мені знати, як я можу цього досягти. Крім того, якщо Rви не можете цього зробити, чи можете ви, будь ласка, повідомити мені, чи можу я досягти цього в будь-якому іншому статистичному програмному забезпеченні?


Є безперервним або категоричним? Якщо остання, то ви можете отримати щось близьке до того, що хочете, запустивши стратифікований аналіз. X1
Пітер Флом

Дякую за відповідь Петро. І X1, і X2 є безперервними.
Шенкер

Тож сенс у тому, що ви просто хочете оптимізувати розміщення цієї моделі над альфа?
gung - Відновіть Моніку

2
@Shanker, якщо ви хочете зафіксувати коефіцієнт у , то ви не хочете його в моделі - ви просто хочете додати відповідну змінну до правої частини рівняння, що і робить зміщення. 1
Макрос

1
@Shanker, вибачте - я неправильно прочитав ваші цитати "Я хочу встановити та на "β11β221 - я вважав, що вони відповідають одній і тій же змінній в обох рівняннях, але я можу бачити, що це не так. Хтось може мати правильний Rкод, щоб допомогти вам тут, але я підозрюю, що такого коду не існує, і відповідь на питання (яке ви, можливо, не хочете почути), полягає в тому, щоб написати власний код, щоб відповідати цій моделі. Це не було б дуже складно, і якщо вам потрібна допомога щодо отримання рівнянь ймовірності тощо, ви можете розглянути питання про опублікування як окремий питання.
Макрос

Відповіді:


2

Я не впевнений, що розумію, що мала на увазі ОП, коли він / вона каже: "Я не можу використовувати, offsetоскільки це повністю видаляє відповідного регресора з регресії". Ви можете виправити параметр за допомогою offset()функції в Р. Я використовую lm()нижче, але він повинен працювати і у вашій моделі.

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

Фіксований параметр не відображається у виході, але він все ще фіксується на рівні 2. Далі я зафіксую xпараметр до його оціночного значення в freeмоделі

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

Зауважте, що перехоплення в fixed2оцінюється з тим же значенням, що і в freeмоделі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.