【问题标题】:how to get gradient of abline in R如何在R中获得abline的梯度
【发布时间】:2013-10-29 14:58:48
【问题描述】:

我想在 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 组合的梯度的函数,而无需每次都绘制图形。我可以自己创建函数,但我一直在纠结如何获得渐变。

【问题讨论】:

  • lm(y ~ x)$coefficients[2] 在这个例子中给出了直线的斜率。这就是你要找的全部吗?
  • @JakeBurkhead Minor nitpick:一般首选coef(lm(y~x))[2]

标签: r plot line gradient


【解决方案1】:

使用您的数据和示例

x <- 1:10
y <- c(0, 0, 1, 0, 1, 1, 0, 1, 1, 1)
plot(x, y)

保存你传递给 abline 的线性模型,这可以在线完成

abline(mod <- lm(y ~ x))

然后使用coef()函数检查模型mod的系数

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 的创建位置以及创建方式。

【讨论】:

    【解决方案2】:

    一个简单的线性回归模型有两个系数,您可以使用 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]
    

    【讨论】:

      猜你喜欢
      • 2020-04-04
      • 2021-03-22
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多