如何在glm(R)中拟合坡度修改器

时间:2019-05-02 15:55:34

标签: r glm

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

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

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

因此对于因子“ Test”的第一级(虚拟变量的值0),斜率是a1。对于第二级“测试”,斜率是(a1 + a2)。

在GenStat中,我可以在“广义线性模型”菜单中将其设置为“ x + Test.x”,这将为我提供所需的系数c,a1和a2的估计值。

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

glm(y ~ x + Test*x)

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

我认为'Test'系数是截距的修改器(我不想拟合),而x:Test是我实际想要的x系数(即a2)的修改器。 / p>

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

编辑:我也尝试过:

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

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

2 个答案:

答案 0 :(得分:0)

我不知道GenStat,但您似乎要的是拥有线性预测器

lp = intercept + a1*x + Test*x

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

如果正确,则R表示法将Test*x描述为“偏移”,并使用

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

答案 1 :(得分:0)

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

R中正确的运算符是':'。

所以R中的代码是:

glm(y〜x + Test:x)

然后根据需要为我提供了截距x和Test:x的拟合系数。