R中具有一些强制/预设系数的线性模型

Linear model with some forced / preset coefficients in R

我正在使用这样一个简单的 3 变量模型:

0 = b0 + b1x + b2y + b3z + b4xy + b5xz + b6yz + b7xyz

这用于描述 synergism/antagonism 化学品之间的关系。 b0代表整体效果,b1-b3为药剂的个别活性效果,b4-b7为交互效果。

我可以使用一些预先构造的数据获得准确的系数:

x1 <- c(0,1,2,3,4,1,2,3,4,1,2,3,4,5,6,7,8)
y1 <- c(0,2,1,5,4,3,7,5,8,6,2,1,5,5,3,5,7)
z1 <- c(0,1,-0.66667,-6,-7.25,-0.66667,-5.55556,-6,-6.125,-4,-2.5,-6,-6.8,-7.3913,-11.1429,-8.2069,-6.83333)

q <- c(-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

model <- lm(q ~ x1*y1*z1)

但是,使用其他一些测试(例如,包括噪声),结果并不像我想要的那样准确。好处是,对于此应用程序,很容易获得 b1、b2 和 b3 的值(并将 b0 设置为 -1)。

在 R 中有没有办法 运行 这个线性模型,强制 b0-b3 的值,并且只求解 b4-b7?

谢谢!

通过减去不需要的列并使用 + 0- 1 删除截距。然后使用offset设置固定值。

lm(q ~ x1 * y1 * z1 - x1 - y1 - z1 + offset(- x1 - y1 - z1 - 1) + 0)

也可以这样表示:

DF <- data.frame(x1, y1, z1)
lm(q ~ .^3 - . + offset(- rowSums(DF) - 1) + 0, DF)