Search code examples
rregressiondummy-data

Removing additive effect in Multiple Regression in R


I have this data set that I will used for my model

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)))
    )

I was assigned to create a multiplicative model for them with a based 5 like this equation:

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

but the best that I can do is this one:

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

This model is okay but I do want to remove the additive effect and just get the multiplicative model and I also replace the intercept with 5 and create difference coefficient for the first level of b and c.

Is there a way in R to do this task?


Solution

  • To fit the model without a constant use lm(y~b*c -1,...). Setting a fixed constant can be done by specifying the offset and not fitting the constant or by subtracting the known constant from the dependent variable and fitting a model with no constant.

    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