Я использую lm(y~poly(x,2))
, чтобы подогнать полином второго порядка к моим данным. Но я просто не мог найти способ указать известное значение перехвата. Как я могу подогнать полиномиальную модель с известным значением точки пересечения (скажем, «k»), используя lm
?
Подгонка многочлена к известному отрезку
Ответы (1)
lm(y~-1+x+I(x^2)+offset(k))
должен это сделать.
-1
подавляет автоматически добавляемый термин перехватаx
добавляет линейный членI(x^2)
добавляет квадратичный член;I()
требуется, чтобы R интерпретировал^2
как возведение в квадрат, а не взаимодействовал междуx
и самим собой (что по правилам формул было бы эквивалентно одномуx
)offset(k)
добавляет известный постоянный перехватчик
Я не знаю, сработает ли poly(x,2)-1
, чтобы устранить перехват; вы можете попробовать и посмотреть. Вычитание смещения из ваших данных должно работать нормально, но offset(k)
может быть немного более явным. Возможно, вам придется сделать k
вектор (т. Е. Реплицировать его по длине набора данных или, лучше, включить его в качестве столбца в набор данных и передать данные с помощью data=...
person
Ben Bolker
schedule
13.02.2015
offset
выглядит отличной функцией для этого; помощь в этом немного сбивает с толку: смещение - это термин, добавляемый к линейному предиктору, например, в обобщенной линейной модели, с известным коэффициентом 1, а не с оценочным коэффициентом. Известный коэффициент 1? Это должно быть опечатка.
- person kasterma; 13.02.2015
нет, это просто сбивает с толку. Дело в том, что тогда уравнение будет
y=b0+b1*x1+b2*x2+1*offset
, а не y=b0+b1*x1+b2*x2+b3*offset
(где b3
будет оценочным коэффициентом).
- person Ben Bolker; 13.02.2015
Спасибо @BenBolker. Оно работает. Но, честно говоря, я не до конца понимаю эту формулу, и я не могу найти помощи у Р. Не могли бы вы объяснить каждый элемент этой формулы или направить меня туда, где я могу найти объяснение?
- person MaMu; 16.02.2015
Ох ... Я не заметил, что вы редактировали ответ до сих пор. большое спасибо.
- person MaMu; 19.02.2015
Сработал отлично для меня .... за исключением того, что мне нужно было сгенерировать вектор k, как вы предлагаете
- person guero64; 15.04.2020
- 1
в формуле и вычесть известный перехват из ваших данных? - person BrodieG   schedule 13.02.2015offset(k)
будет более явным. - person MaMu   schedule 16.02.2015