r - 多元线性回归中的交互项
问题描述
我已将 用于lm
我的多元回归分析。然后用于GVLMA
假设检验,结果显示不满足全局统计和异方差检验。
代码形式如下:(所有变量都是连续的)
model_1 <- lm (y ~ x1 + x2, data = abc)
然后我又运行了一个具有相同变量的模型(认为我必须引入交互项来修复 GVLMA 假设)
model_2 <- lm (y ~ x1 + x2, x1 * x2, data = abc)
有了这个model_2
,所有的假设都满足了。但是当我检查时,我意识到引入交互术语的方式并不准确。我看不到变量之间的“逗号”在这里做什么?
我处于困境,因为模型拟合得很好,但我无法解释, x1 * x2
方程/结果中的内容?
请帮我理解。
解决方案
对于线性模型,交互项由 定义:
,项由 a 分隔+
,因此具有单项和交互项的模型是
lm(y ~ x1:x2 + x1 + x2)
但是,您可以编写x1*x2
包含交互和单个效果的内容,因此以下等效于上述内容
lm(y ~ x1*x2)
看看使用内置数据集 iris 时会发生什么,其中固定效果指定为Petal.Width*Sepal.Length
,所有三个术语都在模型摘要中:
Call:
lm(formula = Petal.Length ~ Petal.Width * Sepal.Length, data = iris)
Residuals:
Min 1Q Median 3Q Max
-0.99588 -0.24329 0.00355 0.29735 1.24780
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -3.24804 0.59586 -5.451 2.08e-07 ***
Petal.Width 2.97115 0.35836 8.291 6.74e-14 ***
Sepal.Length 0.87551 0.11667 7.504 5.60e-12 ***
Petal.Width:Sepal.Length -0.22248 0.06384 -3.485 0.00065 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.3888 on 146 degrees of freedom
Multiple R-squared: 0.9525, Adjusted R-squared: 0.9515
F-statistic: 975.4 on 3 and 146 DF, p-value: < 2.2e-16
至于逗号在模型中的作用,它正在创建一个子集。比较以下三个模型的总结:第一个模型有 146 和 147 个自由度——它们有 150 个数据点,分别估计 4 个和 3 个参数。第三个模型,一个模仿你的规范的模型,有 129 个自由度——这就是让我意识到它是子集的原因。检查文档lm()
,有一个子集的参数:lm(formula, data, subset, ...)
。因为data
是明确指定的,所以未指定的参数默认为formula
and subset
。您还可以在模型摘要中看到这一点,它显示了模型调用中的一个子集。
summary(lm(Petal.Length ~ Petal.Width * Sepal.Length, data = iris))
summary(lm(Petal.Length ~ Petal.Width + Sepal.Length, data = iris))
summary(lm(Petal.Length ~ Petal.Width + Sepal.Length, Petal.Width * Sepal.Length, data = iris))
你的结果可以通过传递这个向量来重新创建iris$Petal.Width * iris$Sepal.Length
,作为行号- 所以要小心,这会重复很多行并且也会跳过很多行,所以这个模型的结果与使用所有数据(以及每个数据)的结果不匹配只点一次)。
summary(lm(Petal.Length ~ Petal.Width + Sepal.Length, data = iris[iris$Petal.Width * iris$Sepal.Length, ]))
推荐阅读
- python - 从类的 .kv 文件中定义的 TextInput 获取文本
- gitk - 是否可以将 Gitk 作为一个提交来显示 2 个修订之间的差异?
- google-apps-script - 运行 onEdit(e) 以针对特定工作表范围触发时出错
- docker - qemu:Docker 构建时不支持的系统调用
- html - 使用加性变换对兄弟元素进行样式化
- c - 孩子没有得到系统调用信号
- javascript - 检查窗口调整大小时所有元素的大小是否相同
- sql-server - For Each 循环容器中各种文件的行数
- jquery - 将活动类设置为猫头鹰轮播中心项目
- c# - 如何在table html 5 razor中显示spread Type参数和子参数