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)
我正在使用这样一个简单的 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)