我想拟合以下形式的一般线性模型:
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'。
答案 0 :(得分:0)
我不知道GenStat,但您似乎要的是拥有线性预测器
lp = intercept + a1*x + Test*x
采用代数(而非模型)表示法,其中intercept
和a1
适合,但是Test
和x
是固定值或观察值。
如果正确,则R表示法将Test*x
描述为“偏移”,并使用
glm(y ~ x + offset(Test*x))
答案 1 :(得分:0)
我想我已经找到了解决方法。
R中正确的运算符是':'。
所以R中的代码是:
glm(y〜x + Test:x)
然后根据需要为我提供了截距x和Test:x的拟合系数。