Как исправить один коэффициент и подогнать другие, используя регрессию


11

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

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

В качестве альтернативы, как я могу ограничить этот коэффициент конкретным диапазоном, скажем, ?0.5β11.0


Чтобы указать ограничения блока для подогнанных коэффициентов, есть аргументы lower.limits и upper.limits в glmnet, верно?
Том Венселерс

Ответы:


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

Я прочитал документацию по 'offset' в glmnet, и я все еще не уверен, что он делает. Я не смог найти никаких замечательных примеров, но большинство из них ссылались на пуассоновские процессы. Почему используется 1.1 * x1?
raco

β1=1.1

Я достаточно счастлив с этим ответом. Я могу перебирать различные коэффициенты смещения и сравнивать модели. Благодаря!
Рако

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
Да, если он зафиксирован на 0,75, то делать то, что вы говорите, будет работать. Но, как указывает @whuber, это легкая часть этой проблемы
Питер Флом - Восстановить Монику

2
@whuber, в байесовской структуре вы можете добавить шаг Метрополиса, чтобы выбросить любые коэффициенты за пределами вашего диапазона, или, альтернативно, вы можете выбрать из усеченного многомерного нормального распределения.
Джон

3

Что касается ограничения коэффициентов в пределах диапазона, то байесовский подход к оценке является одним из способов достижения этого.

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

Один из способов ограничения диапазона - применить шаг Метрополис-Гастингс. Основная идея состоит в том, чтобы просто выбросить любую смоделированную переменную, которая находится за пределами ваших границ. Затем вы можете продолжать повторную выборку до тех пор, пока она не выйдет за ваши пределы, прежде чем перейти к следующей итерации. Недостатком этого является то, что вы можете застрять в симуляции много раз, что замедляет работу MCMC. Альтернативный подход, первоначально разработанный Джоном Гьюке в нескольких статьях и расширенный в статье Родригеса-Яма, Дэвиса, Шарпа, заключается в моделировании из многомерного нормального распределения с ограничениями. Этот подход может обрабатывать ограничения линейного и нелинейного неравенства для параметров, и я добился определенного успеха с ним.


Чтобы указать ограничения блока для подогнанных коэффициентов, есть аргументы lower.limits и upper.limits в glmnet, верно?
Том Венселерс

@ TomWenseleers Я отвечал более широко. Посмотрите на некоторые другие ответы относительно glmnet.
Джон

2

Я не знаком с LASSO или glmnet, но lavaan(сокращение от «латентный анализ переменных») упрощает модели множественной регрессии с ограничениями равенства и ограничениями неравенства с одной границей (см. Таблицу на стр. 7 этого PDF-документа, «lavaan: пакет R»). для моделирования структурных уравнений " ). Я не знаю, могли ли бы вы иметь верхнюю и нижнюю границы коэффициента, но, возможно, вы могли бы добавить каждую границу отдельными строками, например:

Coefficient>.49999999
Coefficient<1.0000001

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


Чтобы указать ограничения блока для подогнанных коэффициентов, есть аргументы lower.limits и upper.limits в glmnet, верно?
Том Венселерс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.