如何解决R中的截距和斜率函数
R 中是否有像 excel 中那样的截距和斜率函数?我知道您可以使用函数“lm”来运行线性回归,但就我而言,将输出简单地作为一个数字来获取会更实用,就像在 excel 中使用截距和斜率一样。
解决方法
创建模型后,您可以从模型内的 coefficients
矩阵中提取截距和斜率值。这可以使用 coefficients()
/coef()
函数(这些是同一函数的别名)或直接使用 $coefficient
提取系数来提取。最好使用coefficients()
函数,因为它也可以用于lm
以外的模型,所以这是一个好习惯。
x <- rnorm(100)
y <- 0.5*x + rnorm(100)
mod <- lm(y ~ x)
cf <- coef(mod)
cf
现在将包含一个带有 (Intercept)
和 x
(也就是斜率)的向量。然后,您可以使用任一数字提取这些:
Intercept <- cf[1]
Slope <- cf[2]
或按他们的名字:
Intercept <- cf["(Intercept)"]
Slope <- cf["x"]
如果你在做多变量,那么建议使用名称,因为输出的顺序可能出乎意料(再次,这是一个好习惯)
,假设问题是要求具有一个自变量和截距的线性模型的截距和斜率函数:
1) mean/cov/var 如果问题的想法是不使用 lm
那么试试这些函数:
slope <- function(x,y) cov(x,y) / var(x)
intercept <- function(x,y) mean(y) - slope(x,y) * mean(x)
要对此进行测试,请使用内置的 CO2 数据:
coef(lm(uptake ~ conc,CO2))
## (Intercept) conc
## 19.50028981 0.01773059
with(CO2,intercept(conc,uptake))
## [1] 19.50029
with(CO2,slope(conc,uptake))
## [1] 0.01773059
2) lm 如果可以使用 lm
那么:
intercept <- function(x,y) coef(lm(y ~ x))[[1]]
slope <- function(x,y) coef(lm(y ~ x))[[2]]
3) lm.fit 另一种可能性是像这样使用 lm.fit
:
intercept <- function(x,y) coef(lm.fit(cbind(1,x),y))[[1]]
slope <- function(x,y))[[2]]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。