【发布时间】:2020-03-22 18:47:08
【问题描述】:
我有以下没有限制的拟合模型:
reg <- lm(y ~ indi_x + x + inter)
其中indi_x = x > 14 的指示变量,inter = indi_x 和 x 的交互变量。
我想施加限制 indi_x + (inter * 14) = 0 以适应 x = 14 处的两个段。我一直在 lm 中使用 I() 函数,但没有得到输出 I想。
谢谢!
【问题讨论】:
我有以下没有限制的拟合模型:
reg <- lm(y ~ indi_x + x + inter)
其中indi_x = x > 14 的指示变量,inter = indi_x 和 x 的交互变量。
我想施加限制 indi_x + (inter * 14) = 0 以适应 x = 14 处的两个段。我一直在 lm 中使用 I() 函数,但没有得到输出 I想。
谢谢!
【问题讨论】:
如果我理解正确,您有两个在 x = 14 处连接的斜率,并且您想推断各个斜率(可能还有公共截距?)
这样就可以了:
reg <- lm(y ~ 1 + x + x : I(x > 14))
注意x * I(x > 14) 现在是斜率的变化。所以第二段的绝对斜率是slope_2 - slope_1。
【讨论】:
lm 函数中的 1 表示什么?
x : I(x > 14) 而不是x * I(x > 14)。这“迫使”仅在x = 14 处改变斜率。 1 是截距。所以y ~ 0 + x + x : I(x > 14) 被“强制”从原点(x = 0, y = 0) 开始,而上面的模型可以从x = 0 的任何y 开始