форсировать заданные коэффициенты в лм () - PullRequest
1 голос
/ 01 апреля 2019

В настоящее время я пытаюсь подогнать полиномиальную модель к данным измерений, используя lm().

fit_poly4 <- lm(y ~ poly(x, degree = 4, raw = T), weights = w)

с x в качестве независимой, y в качестве зависимой переменной и w = 1 / дисперсиюизмерений.

Я хочу попробовать многочлен с заданными коэффициентами вместо тех, которые определены R. В частности, я хочу, чтобы мой многочлен был

y = -3,3583*x^4 + 43*x^3 - 191,14*x^2 + 328,2*x - 137,7

Я попытался ввести его как

fit_poly4 <- lm(y ~ 328.2*x-191.14*I(x^2)+43*I(x^3)-3.3583*I(x^4)-137.3, 
                weights = w)

, но это просто возвращает ошибку:

Ошибка в term.formula (формула, данные = данные): неверная формула модели в ExtractVars

Есть ли способ определить коэффициенты в lm() и как это сделать?

1 Ответ

2 голосов
/ 01 апреля 2019

Я не уверен, почему вы хотите это сделать, но вы можете использовать смещение:

set.seed(101)
dd <- data.frame(x=rnorm(1000),y=rnorm(1000), w = rlnorm(1000))

fit_poly4 <- lm(y ~ 
      -1 + offset(328.2*x-191.14*I(x^2)+43*I(x^3)-3.3583*I(x^4)-137.3),
      data=dd,
      weights = w)

-1 подавляет обычный термин перехват.

...