Extract Equation of Linear Regression Line in R (Example Code)
This tutorial illustrates how to get the equation of a linear regression slope in the R programming language.
Creation of Example Data
data(iris) # Load example data head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # 4 4.6 3.1 1.5 0.2 setosa # 5 5.0 3.6 1.4 0.2 setosa # 6 5.4 3.9 1.7 0.4 setosa |
data(iris) # Load example data head(iris) # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # 4 4.6 3.1 1.5 0.2 setosa # 5 5.0 3.6 1.4 0.2 setosa # 6 5.4 3.9 1.7 0.4 setosa
Example: Returning Equation of Linear Trend Line
mod <- lm(Sepal.Length ~ ., iris) # Estimate regression model using lm() summary(mod) # Print descriptive statistics # Call: # lm(formula = Sepal.Length ~ ., data = iris) # # Residuals: # Min 1Q Median 3Q Max # -0.79424 -0.21874 0.00899 0.20255 0.73103 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 2.17127 0.27979 7.760 1.43e-12 *** # Sepal.Width 0.49589 0.08607 5.761 4.87e-08 *** # Petal.Length 0.82924 0.06853 12.101 < 2e-16 *** # Petal.Width -0.31516 0.15120 -2.084 0.03889 * # Speciesversicolor -0.72356 0.24017 -3.013 0.00306 ** # Speciesvirginica -1.02350 0.33373 -3.067 0.00258 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 0.3068 on 144 degrees of freedom # Multiple R-squared: 0.8673, Adjusted R-squared: 0.8627 # F-statistic: 188.3 on 5 and 144 DF, p-value: < 2.2e-16 |
mod <- lm(Sepal.Length ~ ., iris) # Estimate regression model using lm() summary(mod) # Print descriptive statistics # Call: # lm(formula = Sepal.Length ~ ., data = iris) # # Residuals: # Min 1Q Median 3Q Max # -0.79424 -0.21874 0.00899 0.20255 0.73103 # # Coefficients: # Estimate Std. Error t value Pr(>|t|) # (Intercept) 2.17127 0.27979 7.760 1.43e-12 *** # Sepal.Width 0.49589 0.08607 5.761 4.87e-08 *** # Petal.Length 0.82924 0.06853 12.101 < 2e-16 *** # Petal.Width -0.31516 0.15120 -2.084 0.03889 * # Speciesversicolor -0.72356 0.24017 -3.013 0.00306 ** # Speciesvirginica -1.02350 0.33373 -3.067 0.00258 ** # --- # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 # # Residual standard error: 0.3068 on 144 degrees of freedom # Multiple R-squared: 0.8673, Adjusted R-squared: 0.8627 # F-statistic: 188.3 on 5 and 144 DF, p-value: < 2.2e-16
mod_eq <- paste("Sepal.Length =", # Specify equation of line round(coef(mod)[[1]], 2), "+", paste(round(as.numeric(coef(mod)[2:length(coef(mod))]), 2), "*", names(coef(mod)[2:length(coef(mod))]), "+", collapse = " ")) mod_eq <- substr(mod_eq, 1, nchar(mod_eq) - 2) mod_eq <- gsub("\+ -", "- ", mod_eq) mod_eq # Print equation of line # [1] "Sepal.Length = 2.17 + 0.5 * Sepal.Width + 0.83 * Petal.Length - 0.32 * Petal.Width - 0.72 * Speciesversicolor - 1.02 * Speciesvirginica" |
mod_eq <- paste("Sepal.Length =", # Specify equation of line round(coef(mod)[[1]], 2), "+", paste(round(as.numeric(coef(mod)[2:length(coef(mod))]), 2), "*", names(coef(mod)[2:length(coef(mod))]), "+", collapse = " ")) mod_eq <- substr(mod_eq, 1, nchar(mod_eq) - 2) mod_eq <- gsub("\+ -", "- ", mod_eq) mod_eq # Print equation of line # [1] "Sepal.Length = 2.17 + 0.5 * Sepal.Width + 0.83 * Petal.Length - 0.32 * Petal.Width - 0.72 * Speciesversicolor - 1.02 * Speciesvirginica"