Як зафіксувати один коефіцієнт і підходити до інших за допомогою регресії


11

Я хотів би вручну зафіксувати певний коефіцієнт, скажімо, , а потім підходити коефіцієнти до всіх інших прогнокторів, зберігаючи β 1 = 1,0 у моделі.β1=1.0β1=1.0

Як я можу досягти цього за допомогою R? Я особливо хотів би попрацювати з LASSO ( glmnet), якщо можливо.

Як варіант я можу обмежити цей коефіцієнт певним діапазоном, скажімо, ?0.5β11.0


Щоб вказати обмеження поля на вбудовані коефіцієнти, у glmnet є аргументи Lower.limits та top.limits, правда?
Tom Wenseleers

Відповіді:


4

Вам потрібно використовувати такий offsetаргумент:

library(glmnet)
x=matrix(rnorm(100*20),100,20)
x1=matrix(rnorm(100),100,1)
y=rnorm(100)
fit1=glmnet(x,y,offset=x1)
fit1$offset
print(fit1)

Щодо діапазону ... Я не думаю, що це було реалізовано в Росії glmnet. Якщо вони використовують якийсь числовий метод, ви можете скористатися кодом R і спробувати обмежити його там, але вам знадобиться хороший, міцний фон програмування.


2
Що offsetнасправді робить? Як визначається значення 1.1*x1з питання?
whuber

Я читав документацію для «компенсування» в glmnet, і досі не знаю, що це робить. Я не міг знайти жодних чудових прикладів, але більшість посилальних процесів Пуассона. Чому використовується 1,1 * x1?
raco

β1=1.1

Я досить задоволений цією відповіддю. Я можу повторити різні коефіцієнти зміщення та порівняти моделі. Дякую!
raco

1
offsetglmnetbeta[,ncol(fit1β1=1.0lower.limitsupper limits

9

Ну, давайте подумаємо. Ти маєш:

Y=b0+b1x1+b2x2+e

b1=1

Y=b0+x1+b2x2+e

x1

Ynew=Yx1=b0+b2x2+e

b2


2
Це легка частина (і, як я пам'ятаю, була розглянута в інших темах). А як щодо обмеження коефіцієнта діапазоном? Особливо важкою частиною цієї проблеми є отримання хороших меж довіри, коли оцінка лежить на межі області обмеження.
whuber

2
Це, безумовно, важче. Я пропустив кінець посту. Але я думаю, що я повинен залишити свою відповідь, оскільки це відповідає на частину запитання
Пітер Флом

β11β1=0.75Ynew=Y.75x1=β0+(β10.75)x1+β2x2+ϵβ1

1
Так, якщо він зафіксований у .75, то те, що ви говорите, спрацює. Але як зазначає @whuber, це легка частина цієї проблеми
Пітер Флом

2
@whuber, в байєсівських рамках ви можете кинутись на крок «Метрополіс», щоб викинути будь-які коефіцієнти за межами вашого діапазону або по черзі ви могли взяти вибірку з усіченого багатоваріантного нормального розподілу.
Іван

3

Що стосується обмежувальних коефіцієнтів, що знаходяться в межах діапазону, баєсовський підхід до оцінки є одним із способів цього досягти.

Зокрема, можна покластися на ланцюжок Маркова Монте-Карло. Спочатку розглянемо алгоритм вибірки Гіббса, саме так, як ти впишеш MCMC у байєсівські рамки, відсутнє обмеження. Під час вибірки Гіббса на кожному кроці алгоритму ви вибираєте із заднього розподілу кожного параметра (або групи параметрів), що залежить від даних та всіх інших параметрів. У Вікіпедії є хороший підсумок підходу.

Один із способів обмежити діапазон - застосувати крок «Метрополіс-Гастінгс». Основна ідея - просто викинути будь-яку модельовану змінну, яка знаходиться поза межами вашої межі. Потім ви можете продовжувати повторний відбір проб до тих пір, поки це не вийде, перш ніж перейти до наступної ітерації. Мінус цього полягає в тому, що ви можете застрягти, імітуючи багато разів, що сповільнює MCMC. Альтернативний підхід, спочатку розроблений Джоном Гевке в кількох статтях і розроблений у статті Родрігеса-Яма, Девіса, Шарпа, полягає в імітації обмеженого багатоваріантного нормального розподілу. Цей підхід може вирішити лінійні та нелінійні обмеження нерівності в параметрах, і я мав певний успіх у цьому.


Щоб вказати обмеження поля на вбудовані коефіцієнти, у glmnet є аргументи Lower.limits та top.limits, правда?
Tom Wenseleers

@TomWenseleers Я відповідав більш загально. Подивіться на деякі інші відповіді стосовно glmnet.
Джон

2

Я не знайомий з LASSO або glmnet, але lavaan(скорочено для "прихованого змінного аналізу") полегшує множинні регресійні моделі як з обмеженнями рівності, так і з одномежними обмеженнями нерівності (див. Таблицю на сторінці 7 цього PDF, "lavaan: Пакет R для моделювання структурного рівняння " ). Я не знаю, чи могли ви мати верхній і нижній межі на коефіцієнті, але, можливо, ви можете додати кожне зв'язане окремим рядком, наприклад:

Coefficient>.49999999
Coefficient<1.0000001

Звичайно, якщо ви стандартизуєте все, перш ніж підходити до моделі, вам не доведеться турбуватися про накладення верхньої межі 1 на ваші коефіцієнти регресії. Я б сказав, що вам краще пропустити це в цьому випадку, про всяк випадок, якщо щось піде не так! ( lavaan Це все ще в бета - версії в кінці кінців ... Я бачив трохи рибний результати в моєму власному обмеженому використанні цього до цих пір.)


Щоб вказати обмеження поля на вбудовані коефіцієнти, у glmnet є аргументи Lower.limits та top.limits, правда?
Tom Wenseleers
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.