[英]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.