gpt4 book ai didi

r - 如何在 lm 中指定参数估计之间的关系?

转载 作者:行者123 更新时间:2023-12-04 15:34:35 25 4
gpt4 key购买 nike

使用 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 的斜率和变量 1 和 2 之间的交互)

之所以要这样做,是因为在调查x1 & x2之间是否存在显着交互作用时,模型2,y = b0 + b1*x1 + b2*x2 + b1*b2*x1*x2,可以更好null 模型比 y = b0 + b1*x1 + b2*x2。

非常感谢!

玛丽

最佳答案

由于您对系数施加的约束,您指定的模型不是线性模型,因此 lm 不能用于拟合它。您需要使用非线性回归,例如 nls

> summary(nls(y ~ b0 + b1*x1 + b2*x2 + b1*b2*x1*x2, start=list(b0=0, b1=1, b2=1)))

Formula: y ~ b0 + b1 * x1 + b2 * x2 + b1 * b2 * x1 * x2

Parameters:
Estimate Std. Error t value Pr(>|t|)
b0 0.987203 0.049713 19.86 <2e-16 ***
b1 0.494438 0.007803 63.37 <2e-16 ***
b2 0.202396 0.003359 60.25 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1121 on 47 degrees of freedom

Number of iterations to convergence: 5
Achieved convergence tolerance: 2.545e-06

当您将其重写为时,您真的可以看到该模型是非线性的
> summary(nls(y ~ b0+(1+b1*x1)*(1+b2*x2)-1, start=list(b0=0, b1=1, b2=1)))

Formula: y ~ b0 + (1 + b1 * x1) * (1 + b2 * x2) - 1

Parameters:
Estimate Std. Error t value Pr(>|t|)
b0 0.987203 0.049713 19.86 <2e-16 ***
b1 0.494438 0.007803 63.37 <2e-16 ***
b2 0.202396 0.003359 60.25 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1121 on 47 degrees of freedom

Number of iterations to convergence: 5
Achieved convergence tolerance: 2.25e-06

关于r - 如何在 lm 中指定参数估计之间的关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19316979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com