我有这个数据集,我将用于我的模型
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有办法完成这项任务吗?
答案 0 :(得分: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