簡體   English   中英

R 中的截距和斜率函數

[英]Intercept and slope functions in R

R 中是否有截距和斜率 function 就像 excel 中一樣? 我知道您可以使用 function “lm” 來運行線性回歸,但就我的目的而言,將 output 簡單地作為一個數字來獲得更實際,就像在 ZBF57C906FA7D2BB656D07372E4 中使用截距和斜率一樣。

創建 model 后,您可以從 model 內的coefficients矩陣中提取截距和斜率值。 這可以使用coefficients() / coef() function (這些是同一函數的別名)或直接使用$coefficient提取系數來提取。 最好使用coefficients() function 因為這也可以用於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"]

如果您正在做多變量,那么建議使用名稱,因為 output 的順序可能出乎意料(同樣,這是一個養成的好習慣)

假設問題是要求具有一個自變量和截距的線性 model 的截距和斜率函數:

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) coef(lm.fit(cbind(1, x), y))[[2]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM