如何在 glm (R) 中拟合斜率修改器

How to fit a slope modifier in glm (R)

我想拟合以下形式的一般线性模型:

lp = c + (a1+a2*Test)*x

其中 c 是截距(待拟合),a1 是 x 的系数,a2 是 2 级因子的第二级 x 系数的修饰符 'Test'(此处编码为虚拟变量值“1”)。

所以对于因子'Test'的第一水平,虚拟变量的值为0,斜率为a1。对于'Test'的第二级,斜率为(a1+a2).

在 GenStat 中,我可以将其作为 'x+Test.x' 放入“广义线性模型”菜单中,这将为我提供我想要的系数 c、a1 和 a2 的估计值。

在 R 中,我尝试了以下操作:

glm(y ~ x + Test*x)

这给了我以下系数:截距 (c)、x、测试和 x:Test。

我认为 'Test' 系数是截距的修饰符(我不想拟合),而 x:Test 是 x 系数的修饰符(即 a2)我真正想要的。

如何避免在 R 中拟合 'Test' 的系数?是否有与我使用“.”具有相同效果的运算符?在 GenStat 中?

编辑:我也尝试过:

glm(y ~ x + offset(Test*x))

但这只是给了我值 'Test*x' 的固定偏移量,它不适合系数 'a2'。

我不知道 GenStat,但看来您要求的是线性预测器

lp = intercept + a1*x + Test*x

代数(非模型)表示法,其中 intercepta1 是适合的,但 Testx 是固定值或观察值。

如果那是正确的,那么 R 表示法就是将 Test*x 描述为 "offset",并使用

拟合模型
glm(y ~ x + offset(Test*x))

我想我已经找到了解决方案。

R 中正确的运算符是“:”。

所以R中的代码是:

glm(y~x+Test:x)

这给了我截距的拟合系数,x 和 Test:x,根据需要。