lm() 是否使用偏相关 - R 平方变化?

机器算法验证 r 回归 多重回归 线性模型 流明
2022-03-23 06:43:25

我来自 SPSS 背景,并正在尝试转向它,R因为它具有出色的灵活性和数据处理能力。lm()然而,我对是否真的使用偏相关有一些担忧。

我基本上是在尝试运行线性回归,使用类似于 SPSS 中的“输入”设置的东西,它基本上一次构建模型一个变量,报告每个附加变量这使您可以确定每个变量添加到模型中的预测能力。R2

然而,当我运行相同的分析R时,我没有得到任何关于单个变量贡献的的信息,我什至不确定它是否使用偏相关来计算它报告的 p 值!R2

我的代码如下:

summary(m1 <- lm(totalprop ~ cos(Angle) + Alignment + colour + 
  Angle*Alignment, dataset))

我的问题:

  1. R 是否使用偏相关来确定报告的 p 值lm()
  2. 如何使用每个附加变量R中进行报告更改。R2
  3. 我怎样才能R像 SPSS 一样逐个计算模型?如果不运行 lm() 函数的多次迭代,这可能吗?如果不是,如何控制 R 中协变量的影响?
3个回答

您可能会发现另一个有用的函数是 lmSupport 包中的 lm.sumSquares。基本上,如果您有以下型号:

mod1 <- lm(dv ~ iv1 + iv2 + iv3, data = d)

执行以下命令将为您提供 iv1、iv2 和 iv3 的 delta R 平方(半偏相关平方)和 PRE(偏相关平方):

lm.sumSquares(mod1)

lmSupport 还包含函数 lm.deltaR2,它允许您将自定义模型相互比较,以获得 R 平方的变化以及与 R 平方变化相关的 F 统计量。所以,回到上面的例子,如果你也有第二个模型:

mod2 <- lm(dv ~ iv1 + iv2 + iv3 + iv4 + iv5, data = d)

然后您可以执行以下操作以获得添加 iv4 和 iv5 的 R 平方变化以及随附的 F 统计量和 p 值:

lm.deltaR2(mod1, mod2)

希望有帮助!

R 不使用偏相关来确定来自 lm 的报告 p 值。

实际上,您可以检查自己计算 p 值的代码;如果你输入

> summary.lm

您将看到该函数的代码包括以下内容:

    ans$coefficients <- cbind(est, se, tval, 2 * pt(abs(tval), 
    rdf, lower.tail = FALSE))

这表明对于每个变量,p 值是通过查找 t 个尾部区域从 t 值计算得出的

如果需要,计算模型之间 R^2 的变化非常容易,但我希望 CRAN 上的众多软件包之一已经做到了。

我不是 R 专家,但我研究了同样的问题(你的第二个和第三个问题)并发现了以下内容。

  1. 您确实需要首先为每个模型分别运行 lm 命令。
  2. 如果您对与更改相关的F的正式测试感兴趣,您可以使用 anova 正式比较连续模型,例如 anova(MyModel1, MyModel2)。
  3. 仅当每个解决方案都基于相同的案例子集时,此 anova 测试才有效。因此,您可能需要在一开始就运行一个命令,例如 mydata=na.omit(mydata)。

编辑:relaimpo 包的 calc.relimp 命令(“相对重要性”)在最后输入时(其半部分 rsq)和/或第一个输入时(其零阶 rsq)计算每个预测变量的 delta rsq。

install.packages("relaimpo", dep=c("Depends"))  
library(relaimpo)  
calc.relimp( MyRegressionModel, type = c("last", "first") )