【问题标题】:How to fit a slope modifier in glm (R)如何在 glm (R) 中拟合斜率修改器
【发布时间】:2019-05-02 15:55:33
【问题描述】:

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

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

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

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

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

在 R 中,我尝试了以下方法:

glm(y ~ x + Test*x)

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

我认为“测试”系数是截距的修饰符(我不想拟合),而 x:Test 是我实际想要的 x 系数(即 a2)的修饰符。

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

编辑:我也试过了:

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

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

【问题讨论】:

  • 我编辑了我的问题,因为我认为我的问题表达得不够清楚 - 有人对我编辑的问题有答案吗?

标签: r glm


【解决方案1】:

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

lp = intercept + a1*x + Test*x

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

如果这是正确的,那么 R 表示法就是将 Test*x 描述为“偏移量”,并使用以下方法拟合模型

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

【讨论】:

  • 非常感谢您的回复。我把我的因素变成了一个虚拟的“0”/“1”变量,这样我就可以尝试“偏移”,但据我所见,它只是添加了“测试乘以 x”的值,这不是我想要的在这种情况下要做。我正在尝试拟合模型:'lp = intercept + (a1+Test.a2).x',其中 Test 是我的因子水平的“0”或“1”虚拟变量。我应该在我原来的问题中把测试放在我的等式中 - 我会编辑它!
【解决方案2】:

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

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

所以R中的代码是:

glm(y~x+Test:x)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-30
    • 2017-10-10
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多