【发布时间】:2023-03-22 09:25:02
【问题描述】:
使用 lm,我想拟合模型: y = b0 + b1*x1 + b2*x2 + b1*b2*x1*x2
我的问题是: 如何指定交互作用的系数应等于主效应系数的乘积?
我已经看到将系数设置为特定值,您可以使用 offset() 和 I() 但我不知道如何指定系数之间的关系。
这是一个简单的模拟数据集:
n <- 50 # Sample size
x1 <- rnorm(n, 1:n, 0.5) # Independent variable 1
x2 <- rnorm(n, 1:n, 0.5) # Independent variable 2
b0 <- 1
b1 <- 0.5
b2 <- 0.2
y <- b0 + b1*x1 + b2*x2 + b1*b2*x1*x2 + rnorm(n,0,0.1)
为了拟合模型 1:y = b0 + b1*x1 + b2*x2 + b3*x1*x2,我会使用:
summary(lm(y~ x1 + x2 + x1:x2))
但是如何拟合模型 2:y = b0 + b1*x1 + b2*x2 + b1*b2*x1*x2?
两个模型之间的主要区别之一是要估计的参数数量。在模型 1 中,我们估计 4 个参数:b0(截距)、b1(变量 1 的斜率)、b2(变量 2 的斜率)和 b3(变量 1 和 2 之间相互作用的斜率)。在模型 2 中,我们估计了 3 个参数:b0(截距)、b1(变量 1 的斜率和变量 1 和 2 之间相互作用的部分斜率)和 b2(变量 2 的斜率和部分斜率) vars. 1 和 2 之间的交互)
之所以要这样做,是因为在调查x1&x2之间是否存在显着交互作用时,模型2,y=b0+b1*x1+b2*x2+b1*b2*x1*x2,可以成为比 y = b0 + b1*x1 + b2*x2 更好的空模型。
非常感谢!
玛丽
【问题讨论】:
-
搜索带约束的线性回归。您会在 R 中找到许多参考资料。
-
Ramnath,这是一个非线性等式约束——线性不等式和等式约束很容易,但我觉得这不属于这一类吗?
-
我认为这里的答案很好。我唯一要补充的是,如果您想使用
nls()(因为置信区间/p 值的估计比 delta 方法方法稍微准确一些)但是很难找到合适的起始值(因为@987654324 @可以挑剔),您可以使用lm估计参数并将它们放入nls()作为起始值。 (我在回答另一个我现在似乎找不到的 SO 问题时提出了这个建议。) -
你是对的,本。约束是非线性的。使用
lm参数作为nls的起点是一个很好的策略,我过去曾成功使用过。 -
您是否真的希望 b1 和 b2 同时最适合整个模型,或者您只是希望 b1 和 b2 的线性效应最适合但计算整个模型的拟合用于模型比较的数据?