0

我有这个数据集,我将用于我的模型

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中有没有办法完成这项任务?

4

1 回答 1

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
于 2015-07-23T23:15:18.323 回答