Снятие аддитивного эффекта в множественной регрессии в R

У меня есть этот набор данных, который я буду использовать для моей модели

set.seed(123)
    x <- rnorm(100)
    DF <- data.frame(x = x, 
                     y = 4 + (1.5*x) + rnorm(100, sd = 2),
                     b = as.factor(round(abs(DF$x/3))),
                     c = as.factor(round(abs(DF$y/3)))
    )

Мне было поручено создать мультипликативную модель для них на основе 5, как это уравнение:

y=5*b(i)*c(i)

но лучшее, что я могу сделать, это:

m1 <- lm(y ~ b*c, data = DF)
summary(m1)

Эта модель в порядке, но я хочу убрать аддитивный эффект и просто получить мультипликативную модель, а также я заменяю точку пересечения на 5 и создаю коэффициент разности для первого уровня b и c.

Есть ли способ в R сделать эту задачу?

1 ответ

Решение

Чтобы соответствовать модели без константы, используйте lm(y~b*c -1,...). Установка фиксированной константы может быть выполнена путем указания смещения и без подгонки константы или путем вычитания известной константы из зависимой переменной и подбора модели без константы.

set.seed(123)
x <- rnorm(100)
DF <- as.data.frame(cbind(x))
DF$y =  4 + (1.5*x) + rnorm(100, sd = 2)
DF$b = round(abs(DF$x/3))
DF$c = round(abs(DF$y/3))
DF$bc = DF$b*DF$c

m1 <- lm(y~ b*c, data=DF) # model w/ a constant
m2 <- lm(y~ b*c - 1, data=DF) # model w/o a constant
m3 <- lm(y~ b*c -1 + offset(rep(5,nrow(DF))), data=DF) # model w/ a constant of 5
m4 <- lm(y-5~ b*c -1, data=DF) # subtracting fixed constant from y's
Другие вопросы по тегам