我想在 R 中的散点图上获取线性模型的梯度/斜率值
例如,如果我有一个情节:
x <- 1:10
y <- c(0, 0, 1, 0, 1, 1, 0, 1, 1, 1)
plot(x, y)
abline(lm(y ~ x))
散点图现在有一条线,我需要知道它的梯度。理想情况下,我想要的是一个可以计算出各种 x/y 组合的梯度的函数,而无需每次都绘制图形。我可以自己创建函数,但我被困在如何获得渐变上。
使用您的数据和示例
x <- 1:10
y <- c(0, 0, 1, 0, 1, 1, 0, 1, 1, 1)
plot(x, y)
保存你传递给 abline 的线性模型,这可以在线完成
abline(mod <- lm(y ~ x))
mod
然后使用coef()
函数检查模型的系数
coef(mod)
R> coef(mod)
(Intercept) x
0.06667 0.09697
“斜率”是第二个系数。如果您只想提取那一个,则将由 返回的向量子集coef()
,如
coef(mod)[2]
R> coef(mod)[2]
x
0.09697
请注意,我不建议像上面那样将对象作为参数的一部分分配给另一个函数。如果您的代码或脚本变得很大,那么这些东西可能更难以追踪或发现。我通常更喜欢在自己的行上创建对象。对于上面的例子,这意味着做
mod <- lm(y ~ x)
abline(mod)
这不是主要区别,但更容易发现mod
创建的位置和方式。
一个简单的线性回归模型有两个系数,您可以使用 coef 函数提取它们。斜率是第二个系数。
x <- 1:10
y <- c(0, 0, 1, 0, 1, 1, 0, 1, 1, 1)
fit.lm <-lm(y ~ x)
slope <- coef(fit.lm)[2]