R语言中的多元线性回归:简单回归和逐步回归示例

⚡ 智能摘要

R 语言中的简单线性回归和多元线性回归模型将连续结果变量表示为通过普通最小二乘法拟合的预测变量的加权和。本教程涵盖了 lm() 函数、系数解读、因子预测变量、残差诊断、预测以及自动变量选择。

  • 📐 核心方程式: 简单回归拟合 y = alpha + beta x,多元回归将同一直线扩展到矩阵形式的 k 个预测变量。
  • 🧮 估算方法: 普通最小二乘法旨在最小化观测值与预测值之间垂直距离的平方和。
  • 🛠️ 模型语法: lm(formula, data) 将等号替换为波浪号,-1 则删除截距。
  • 📊 读取输出: summary() 报告系数、p 值和调整后的 R 平方,在 mtcars 示例中达到 0.8199。
  • 🔎 诊断: par(mfrow = c(2, 2)) 然后 plot(fit) 会生成用于检验 OLS 假设的四个残差图。
  • 🔁 变量选择: olsrr 中的逐步回归通过 p 值添加和删除预测变量,最终确定 wt 加 hp。

R 中的多元线性回归

线性回归在机器学习中的作用

线性回归是最古老的监督学习方法之一。 机器学习 算法,而且它仍然是大多数分析师首先考虑的模型。最早的机器学习应用之一是…… 垃圾过滤器.

机器学习的其他常见应用包括:

  • 识别电子邮件中的垃圾邮件
  • 细分客户行为以进行有针对性的广告
  • 减少信用卡欺诈交易
  • 优化住宅和办公楼的能源利用
  • 面部识别

监督学习

In 监督学习,你输入给算法的训练数据包含一个标签。

分类 可能是应用最广泛的监督学习技术。研究人员最早着手解决的分类任务之一就是垃圾邮件过滤。学习的目标是预测一封电子邮件是垃圾邮件还是正常邮件。经过训练后,机器就能识别电子邮件的类型。

回归 回归任务通常用于机器学习领域,以预测连续值。例如,回归任务可以预测一个连续值。 因变量 基于一组 自变量 (也称为预测器或回归器)。例如,线性回归可以预测股票价格、天气预报、销售额等。

一些基本的监督学习算法包括:

  • 线性回归
  • 逻辑回归
  • 最近的邻居
  • 支持向量机(SVM)
  • 决策树和随机森林
  • 神经网络

无监督学习

In 无监督学习,训练数据未标记。系统尝试在没有参考的情况下进行学习。以下是无监督学习算法的列表。

  • K均值
  • 分级 Cluster 信号分析
  • 期望最大化
  • 可视化和降维
  • 主成分分析
  • 内核主成分分析
  • 局部线性嵌入

有了这些背景知识,本教程的其余部分将逐步在 R 中构建回归模型。

R 中的简单线性回归

线性回归回答了一个简单的问题:你能否衡量一个目标变量与一组预测变量之间的确切关系?

最简单的概率模型是直线模型:

R 中的简单线性回归

协调

  • y = 因变量
  • x = 独立变量
  • R 中的简单线性回归 = 随机误差分量
  • R 中的简单线性回归 = 拦截
  • R 中的简单线性回归 = x 的系数

考虑以下情节:

R 中的简单线性回归

等式是 R 中的简单线性回归 在这个方程中,截距是 4.77,所以当 x 等于 0 时,y 的拟合值为 4.77。斜率告诉你当 x 变化时,y 的变化比例是多少。

估计最优值 R 中的简单线性回归R 中的简单线性回归,您可以使用名为 普通最小二乘法(OLS)。该方法试图找到最小化平方误差之和的参数,即预测的 y 值与实际 y 值之间的垂直距离。该差值称为 误差项.

在估计模型之前,您可以通过绘制散点图来确定 y 和 x 之间的线性关系是否合理。

散点图

我们将使用一个非常简单的数据集来解释简单线性回归的概念。我们将导入美国女性的平均身高和体重。该数据集包含 15 个观测值。您想测量身高是否与体重呈正相关。

library(ggplot2)
path <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/women.csv'
df <-read.csv(path)
ggplot(df,aes(x=height, y =  weight))+
geom_point()

输出:

散点图

散点图显示,体重总体上随身高增加而增加。下一步,您将测量身高每增加一个单位,体重会增加多少。

最小二乘估计

在简单的 OLS 回归中,计算 最小二乘估计最小二乘估计 很简单。本教程不推导公式,只列出公式。

您想要估计: 最小二乘估计

OLS 回归的目标是最小化以下方程:

最小二乘估计

协调

最小二乘估计 是实际值并且 最小二乘估计 是预测值。

解决方案 最小二乘估计 is 最小二乘估计

需要注意的是 最小二乘估计 表示 x 的平均值

解决方案 最小二乘估计 is 最小二乘估计

在 R 语言中,可以使用 cov() 和 var() 函数来估计值 最小二乘估计 你可以使用mean()函数来估计 最小二乘估计

beta <- cov(df$height, df$weight) / var (df$height)
beta

输出:

##[1] 3.45
alpha <- mean(df$weight) - beta * mean(df$height)
alpha

输出:

## [1] -87.51667

β系数表明,身高每增加一英寸,平均体重就会增加3.45磅。

手动估算线性方程组虽然很有启发性,但并不实用。 R 它提供了 lm() 函数来帮你完成这项工作,你将在下一节中使用它。在实际项目中,你几乎不会拟合单预测变量模型;回归任务通常涉及多个估计器同时工作。

R 中的多元线性回归

回归分析的实际应用中会使用比简单的直线模型更复杂的模型。包含多个自变量的概率模型被称为概率模型。 多元回归模型该模型的一般形式为:

R 中的多元线性回归

用矩阵符号重写该模型:

  • R 中的多元线性回归

因变量 y 现在是 k 个独立变量的函数。系数的值 R 中的多元线性回归 确定独立变量的贡献 R 中的多元线性回归R 中的多元线性回归.

我们简单介绍一下我们对随机误差的假设 R 中的多元线性回归 OLS 的:

  • 均值等于 0
  • 方差等于 R 中的多元线性回归
  • 正态分布
  • 随机误差是独立的(从概率意义上来说)

你需要解决 R 中的多元线性回归,回归系数向量,最小化预测值和实际 y 值之间的平方误差之和。

闭式解为:

R 中的多元线性回归

使用:

  • 表示 矩阵 X
  • R 中的多元线性回归 表示 可逆矩阵

以下示例使用内置的 mtcars 数据集。目标是根据一组特征预测每加仑行驶里程 (mpg)。

R 中的连续变量

目前,您将只使用连续变量,而将分类特征放在一边。变量 am 是一个二元变量,如果变速器是手动的,则取值为 1,如果是自动的,则取值为 0;vs 也是一个二元变量。

library(dplyr)
df <- mtcars %>%
select(-c(am, vs, cyl, gear, carb))
glimpse(df)

输出:

## Observations: 32
## Variables: 6
## $ mpg  <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19....
## $ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 1...
## $ hp   <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, ...
## $ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.9...
## $ wt   <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3...
## $ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 2...

您可以使用 lm() 函数来计算参数。此函数的基本语法是:

lm(formula, data, subset)
Arguments:
	-formula: The equation you want to estimate	
	-data: The dataset used
	-subset: Estimate the model on a subset of the dataset

记住方程的形式如下

R 中的连续变量

在R中

  • 符号 = 被 ~ 取代
  • 每个 x 都替换为变量名
  • 如果要删除常数,请在公式末尾添加 -1

计费示例:

您想根据个人的身高和收入来估算他们的体重。公式为

R 中的连续变量

R 中的方程式如下:

y ~ X1+ X2+…+Xn # 带截距

对于我们的例子来说:

  • 体重~身高+收入

您的目标是根据一组变量估算每加仑英里数。估算公式为:

R 中的连续变量

您将估计您的第一个线性回归并将结果存储在拟合对象中。

model <- mpg ~ disp + hp + drat + wt + qsec
fit <- lm(model, df)
fit

Code 说明

  • model <- mpg ~ disp + hp + drat + wt + qsec: 存储模型以进行估计
  • lm(model, df): 使用数据框 df 估计模型
## 
## Call:
## lm(formula = model, data = df)
## 
## Coefficients:
## (Intercept)         disp           hp         drat           wt  
##    16.53357      0.00872     -0.02060      2.01577     -4.38546  
##        qsec  
##     0.64015	

输出没有提供足够的有关拟合质量的信息。您可以使用 summary() 函数访问更多详细信息,例如系数的重要性、自由度和残差的形状。

summary(fit)

输出:

## return the p-value and coefficient
## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5404 -1.6701 -0.4264  1.1320  5.4996 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) 16.53357   10.96423   1.508  0.14362   
## disp         0.00872    0.01119   0.779  0.44281   
## hp          -0.02060    0.01528  -1.348  0.18936   
## drat         2.01578    1.30946   1.539  0.13579   
## wt          -4.38546    1.24343  -3.527  0.00158 **
## qsec         0.64015    0.45934   1.394  0.17523   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.558 on 26 degrees of freedom
## Multiple R-squared:  0.8489, Adjusted R-squared:  0.8199 
## F-statistic: 29.22 on 5 and 26 DF, p-value: 6.892e-10

从上表输出推断

  • 表格显示重量与每加仑行驶里程之间存在很强的负相关关系,而排水量系数为正。
  • 只有变量 wt 对 mpg 有统计影响。请记住,为了检验统计中的假设,我们使用:
    • H0:无统计学影响
    • H1:预测变量对 y 有显著影响
    • 如果 p 值低于 0.05,则表明该变量具有统计显著性
  • 调整后的R平方值:模型解释y方差的比例,已根据预测变量的数量进行校正。此处为0.8199,因此该模型解释了mpg方差的约82%。R平方值始终介于0和1之间,数值越高越好。

你可以运行 方差分析 测试使用 anova() 函数估计每个特征对方差的影响。

anova(fit)

输出:

## Analysis of Variance Table
## 
## Response: mpg
##           Df Sum Sq Mean Sq  F value   Pr(>F)    
## disp       1 808.89  808.89 123.6185 2.23e-11 ***
## hp         1  33.67   33.67   5.1449 0.031854 *  
## drat       1  30.15   30.15   4.6073 0.041340 *  
## wt         1  70.51   70.51  10.7754 0.002933 ** 
## qsec       1  12.71   12.71   1.9422 0.175233    
## Residuals 26 170.13    6.54                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1	

估计模型性能的更传统的方法是显示针对不同度量的残差。

您可以使用 plot() 函数显示四个图表:

– 残差与拟合值

– 正态 QQ 图:理论四分位数与标准化残差

– 尺度-位置:拟合值与标准化残差的平方根

– 残差与杠杆:杠杆与标准化残差

在调用 `plot(fit)` 之前,需要添加代码 `par(mfrow = c(2, 2))`。如果不添加这行代码,R 会提示您按回车键显示下一个图形。

par(mfrow = c(2, 2))

Code 说明

  • (mfrow=c(2,2)):返回一个并排有四个图形的窗口。
  • 前 2 个添加行数
  • 第二个 2 增加了列数。
  • 如果你写 (mfrow=c(3,2)): 你将创建一个 3 行 2 列的窗口
plot(fit)

输出:

R 中的连续变量

lm() 公式返回一个包含大量有用信息的列表。您可以使用创建的 fit 对象,后跟 $ 符号和要显示的信息来访问这些信息。tract.

– 系数:`fit$coefficients`

– 残差:`fit$residuals`

– 拟合值:`fit$fitted.values`

R 中的因子回归

在最后一个模型估计中,您仅对连续变量进行 mpg 回归。将因子变量添加到模型中很简单。您将变量 am 添加到模型中。确保变量是因子级别而不是连续变量很重要。

df <- mtcars %>%
    mutate(cyl = factor(cyl),
        vs = factor(vs),
        am = factor(am),
        gear = factor(gear),
        carb = factor(carb))
model <- mpg ~ .
summary(lm(model, df))

输出:

## 
## Call:
## lm(formula = model, data = df)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -3.5087 -1.3584 -0.0948  0.7745  4.6251 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept) 23.87913   20.06582   1.190   0.2525  
## cyl6        -2.64870    3.04089  -0.871   0.3975  
## cyl8        -0.33616    7.15954  -0.047   0.9632  
## disp         0.03555    0.03190   1.114   0.2827  
## hp          -0.07051    0.03943  -1.788   0.0939 .
## drat         1.18283    2.48348   0.476   0.6407  
## wt          -4.52978    2.53875  -1.784   0.0946 .
## qsec         0.36784    0.93540   0.393   0.6997  
## vs1          1.93085    2.87126   0.672   0.5115  
## am1          1.21212    3.21355   0.377   0.7113  
## gear4        1.11435    3.79952   0.293   0.7733  
## gear5        2.52840    3.73636   0.677   0.5089  
## carb2       -0.97935    2.31797  -0.423   0.6787  
## carb3        2.99964    4.29355   0.699   0.4955  
## carb4        1.09142    4.44962   0.245   0.8096  
## carb6        4.47757    6.38406   0.701   0.4938  
## carb8        7.25041    8.36057   0.867   0.3995  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.833 on 15 degrees of freedom
## Multiple R-squared:  0.8931, Adjusted R-squared:  0.779 
## F-statistic:  7.83 on 16 and 15 DF,  p-value: 0.000124

R 使用第一个因子水平作为基组。您需要将另一组的系数与基组进行比较。

R语言中线性回归的假设

只有满足五个条件,普通最小二乘法才能得出可靠的系数和p值。plot(fit) 函数生成的四个诊断图正是为了检验这些条件而存在的。

  • 线性度: 每个预测变量与 y 之间的关系都是线性的。请检查 残差与拟合值 绘制曲线;可见的曲线意味着你需要进行变换或引入多项式项。
  • 独立: 误差项不相关。时间顺序数据通常会违反这一规律,您可以使用 car 包中的 durbinWatsonTest() 函数进行测试。
  • 均方根: 误差方差在拟合值之间保持不变。漏斗形状 尺度位置 情节表明存在违规行为。
  • 残差正态性: 误差服从正态分布。点应该位于对角线上。 普通 QQ 情节。
  • 无多重共线性: 预测变量之间并非近似重复。方差膨胀因子高于 5 通常是警示线。
library(car)
vif(fit)           # variance inflation factors
shapiro.test(residuals(fit))   # normality of residuals

违规行为并不总是会使模型无效,但它们会改变你对 p 值的信心,因此在报告任何系数之前,请检查它们。

如何在 R 语言中使用线性回归模型进行预测

拟合模型只是工作的一半。predict() 函数会将拟合系数应用于新的观测值。

predict(object, newdata, interval = "none", level = 0.95)
arguments:
-object: The model returned by lm()
-newdata: A data frame whose columns match the predictors used in the formula
-interval: "none", "confidence" for the mean response, or "prediction" for a single new case
-level: The confidence level, 0.95 by default

请按照以下三个步骤操作。

  1. 构建包含新增病例的数据框。 列名必须与公式中的预测变量名称完全匹配,因子水平必须与训练数据匹配。
  2. 调用 predict() 函数。 传递拟合对象和新的数据框。
  3. 添加一个间隔。 当您想要了解平均响应的不确定性时,请选择“置信度”;当您想要了解单个车辆的范围时,请选择“预测”。
new_cars <- data.frame(wt = c(2.5, 3.2), hp = c(110, 175))
fit_final <- lm(mpg ~ wt + hp, data = mtcars)

predict(fit_final, newdata = new_cars)
predict(fit_final, newdata = new_cars, interval = "prediction")

读取结果。 一辆重2.5磅、马力为110的汽车,预计油耗约为24.1英里/加仑。预测区间总是比置信区间宽,因为它包含了单个观测值的不确定性以及拟合线的不确定性。

两条规则确保预测结果的准确性。首先,永远不要将预测结果外推到训练预测器范围之外,因为直线预测在实际应用中并无证据支持。其次,始终使用模型未曾见过的数据进行评估,否则报告的误差会过于乐观。

R语言中的线性回归与逻辑回归

当结果变量不连续时,分析师通常会使用 lm() 函数。下表显示了边界情况。

标准 线性回归 Logistic回归
响应变量 持续 二元或分类
预测输出 任意实数 概率介于 0 和 1 之间
估计 普通最小二乘 最大似然
合身度 R平方值,均方根误差 AIC、偏差、准确率
R 函数 lm(公式,数据) glm(公式, 数据, 分布族 = “二项分布”)

如果结果是“是”或“否”,则进入下一阶段。 广义线性模型 而不是强行画一条穿过 0 和 1 的直线。

R 中的逐步线性回归

本教程的最后一部分涉及 逐步回归 算法。该算法的目的是在模型中添加和删除潜在候选变量,并保留对因变量有重大影响的候选变量。当数据集包含大量预测变量时,此算法很有意义。您无需手动添加和删除独立变量。逐步回归旨在选择最适合模型的候选变量。

让我们实际看看它是如何工作的。这里我们使用仅包含连续变量的 mtcars 数据集进行教学演示。在开始分析之前,最好先使用相关矩阵检查数据之间的关系。GGally 库是 ggplot2 的扩展。

该库包含不同的函数来显示汇总统计数据,例如矩阵中所有变量的相关性和分布。我们将使用 ggscatmat 函数,但您可以参考 小插图 有关 GGally 库的更多信息。

ggscatmat() 的基本语法是:

ggscatmat(df, columns = 1:ncol(df), corMethod = "pearson")
arguments:
-df:  A matrix of continuous variables
-columns: Pick up the columns to use in the function. By default, all columns are used
-corMethod: Define the function to compute the correlation between variable. By default, the algorithm uses the Pearson formula

您需要显示所有变量的相关性,并确定哪些变量最适合作为逐步回归的第一步。您的变量与因变量(mpg)之间存在一些强相关性。

library(GGally)
df <- mtcars %>%
	select(-c(am, vs, cyl, gear, carb))
ggscatmat(df, columns = 1: ncol(df))

输出:

R 中的逐步线性回归

逐步回归分步示例

变量选择是模型拟合的重要组成部分,逐步回归会自动执行此搜索。为了估计数据集中可能的选择数量,需要计算 逐步回归分步示例 其中 k 是预测因子的数量。独立变量的数量越多,可能性就越大。这就是为什么你需要自动搜索。

您需要从 CRAN 安装 olsrr 包。该包在 Anaconda 中尚不可用。因此,您可以直接从命令行安装它:

install.packages("olsrr")

您可以绘制符合拟合标准(即 R 平方、调整后的 R 平方、贝叶斯标准)的所有可能性子集。具有最低 AIC 标准的模型将成为最终模型。

library(olsrr)
model <- mpg~.
fit <- lm(model, df)
test <- ols_all_subset(fit)
plot(test)

Code 说明

  • MPG ~.: 构建模型来估计
  • lm(模型,数据自由度):运行 OLS 模型
  • ols_all_子集(拟合):利用相关的统计信息构建图表
  • 图(测试): 绘制图表

输出:

逐步回归分步示例

线性回归模型使用 t检验 用于评估自变量对因变量的统计影响。研究人员通常将最大阈值设定为 10%,p 值越低表示统计关联越强。逐步回归正是基于此检验,用于添加和移除候选预测变量。该算法的工作原理如下:

R 中的逐步线性回归
R 中的逐步线性回归
  • 第四步:分别对 y 上的每个预测变量进行回归。即,对 y 上的 x_1、y 上的 x_2 进行回归,直至 x_n。存储 p-值 并保留 p 值低于定义阈值(默认为 0.1)的回归变量。显著性低于阈值的预测变量将被添加到最终模型中。如果没有变量的 p 值低于进入阈值,则算法停止,最终模型只有一个常数。
  • 第四步:使用具有最低 p 值的预测因子并分别添加一个变量。您回归一个常数、第一步的最佳预测因子和第三个变量。您将值低于进入阈值的新预测因子添加到逐步模型中。如果没有变量的 p 值低于 0.1,则算法停止,并且您最终的模型只有一个预测因子。您回归逐步模型以检查第 1 步最佳预测因子的重要性。如果它高于移除阈值,则将其保留在逐步模型中。否则,您将其排除。
  • 第四步:在新的最佳分步模型上重复步骤 2。该算法根据输入值将预测变量添加到分步模型中,如果预测变量不满足排除阈值,则将其从分步模型中排除。
  • 该算法一直进行,直到没有变量可以添加或排除。

您可以使用 olsrr 包中的函数 ols_stepwise() 执行该算法。

ols_stepwise(fit, pent = 0.1, prem = 0.3, details = FALSE)

arguments:
-fit:  Model to fit. Need to use `lm()`before to run `ols_stepwise()
-pent: Threshold of the p-value used to enter a variable into the stepwise model. By default, 0.1
-prem: Threshold of the p-value used to exclude a variable into the stepwise model. By default, 0.3
-details: Print the details of each step

⚠️包裹说明: olsrr 的最新版本重命名了这些函数。使用 ols_step_all_possible() 代替 ols_all_subset() 和 ols_step_both_p() 代替 ols_stepwise() 函数。参数和输出保持不变。

在此之前,我们先向您展示算法的步骤。下面是包含因变量和自变量的表格:

因变量 独立变量
MPG 显示
hp
德拉特
wt

开始

首先,算法首先对每个独立变量分别运行模型。表格显示了每个模型的 p 值。

## [[1]]
##  (Intercept)         disp 
## 3.576586e-21 9.380327e-10 
## 
## [[2]]
##  (Intercept)           hp 
## 6.642736e-18 1.787835e-07 
## 
## [[3]]
##  (Intercept)         drat 
## 0.1796390847 0.0000177624 
## 
## [[4]]
##  (Intercept)           wt 
## 8.241799e-19 1.293959e-10 
## 
## [[5]
## (Intercept)        qsec 
##  0.61385436  0.01708199

为了进入模型,算法保留 p 值最低的变量。从上面的输出来看,它是 wt

第四步

第一步,算法在 wt 和其他变量上独立运行 mpg。

## [[1]]
##  (Intercept)           wt         disp
## 4.910746e-16 7.430725e-03 6.361981e-02 
## 
## [[2]]
##  (Intercept)           wt           hp 
## 2.565459e-20 1.119647e-06 1.451229e-03 
## 
## [[3]]
##  (Intercept)           wt         drat 
## 2.737824e-04 1.589075e-06 3.308544e-01 
## 
## [[4]]
##  (Intercept)           wt         qsec 
## 7.650466e-04 2.518948e-11 1.499883e-03

每个变量都有可能进入最终模型。然而,算法只保留p值最低的变量。结果发现hp的p值略低于qsec,因此hp进入了最终模型。

第四步

该算法重复第一步,但这次在最终模型中使用两个独立变量。

## [[1]]
##  (Intercept)           wt           hp         disp 
## 1.161936e-16 1.330991e-03 1.097103e-02 9.285070e-01 
## 
## [[2]]
##  (Intercept)           wt           hp         drat 
## 5.133678e-05 3.642961e-04 1.178415e-03 1.987554e-01 
## 
## [[3]]
##  (Intercept)           wt           hp         qsec 
## 2.784556e-03 3.217222e-06 2.441762e-01 2.546284e-01

剩余候选模型中没有一个的 p 值低于进入阈值。算法到此停止,最终模型如下:

## 
## Call:
## lm(formula = mpg ~ wt + hp, data = df)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -3.941 -1.600 -0.182  1.050  5.854 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 37.22727    1.59879  23.285  < 2e-16 ***
## wt          -3.87783    0.63273  -6.129 1.12e-06 ***
## hp          -0.03177    0.00903  -3.519  0.00145 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 2.593 on 29 degrees of freedom
## Multiple R-squared:  0.8268, Adjusted R-squared:  0.8148 
## F-statistic: 69.21 on 2 and 29 DF,  p-value: 9.109e-12

您可以使用函数 ols_stepwise() 来比较结果。

stp_s <-ols_stepwise(fit, details=TRUE)

输出:

该算法经过两步即可找到解决方案,并返回与上述手动演练相同的输出。

因此,最终模型由两个预测因子和一个截距项解释:每加仑行驶里程与总马力和重量均呈负相关。

## You are selecting variables based on p value...
## 1 variable(s) added....
## Variable Selection Procedure
##  Dependent Variable: mpg 
## 
##  Stepwise Selection: Step 1 
## 
##  Variable wt Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.868       RMSE                3.046 
## R-Squared               0.753       Coef. Var          15.161 
## Adj. R-Squared          0.745       MSE                 9.277 
## Pred R-Squared          0.709       MAE                 2.341 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##		ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     847.725         1        847.725    91.375    0.0000 
## Residual       278.322        30          9.277                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.285         1.878                 19.858    0.000    33.450    41.120 
##          wt    -5.344         0.559       -0.868    -9.559    0.000    -6.486    -4.203 
## ----------------------------------------------------------------------------------------
## 1 variable(s) added...
## Stepwise Selection: Step 2 
## 
##  Variable hp Entered 
## 
##                         Model Summary                          
## --------------------------------------------------------------
## R                       0.909       RMSE                2.593 
## R-Squared               0.827       Coef. Var          12.909 
## Adj. R-Squared          0.815       MSE                 6.726 
## Pred R-Squared          0.781       MAE                 1.901 
## --------------------------------------------------------------
##  RMSE: Root Mean Square Error 
##  MSE: Mean Square Error 
##  MAE: Mean Absolute Error 
##			ANOVA                                 
## --------------------------------------------------------------------
##                 Sum of                                              
##                Squares        DF    Mean Square      F         Sig. 
## --------------------------------------------------------------------
## Regression     930.999         2        465.500    69.211    0.0000 
## Residual       195.048        29          6.726                     
## Total         1126.047        31                                    
## --------------------------------------------------------------------
## 
##                                   Parameter Estimates                                    
## ----------------------------------------------------------------------------------------
##       model      Beta    Std. Error    Std. Beta      t        Sig      lower     upper 
## ----------------------------------------------------------------------------------------
## (Intercept)    37.227         1.599                 23.285    0.000    33.957    40.497 
##          wt    -3.878         0.633       -0.630    -6.129    0.000    -5.172    -2.584 
##          hp    -0.032         0.009       -0.361    -3.519    0.001    -0.050    -0.013 
## ----------------------------------------------------------------------------------------
## No more variables to be added or removed.

R 语言中的线性回归:要点总结和函数参考

  • 线性回归回答了一个简单的问题:你能否衡量一个目标变量与一组预测变量之间的确切关系?
  • 普通最小二乘法寻找使平方误差之和最小的参数,即预测 y 值与实际 y 值之间的垂直距离最小的参数。
  • 包含多个独立变量的概率模型称为多元回归模型。
  • 逐步线性回归算法的目的是添加和删除模型中的潜在候选者,并保留那些对因变量有显著影响的候选者。
  • 变量选择是拟合模型的重要环节,而逐步回归会自动执行这一搜索过程。

本教程中使用的所有函数如下所示:

图书馆 目的 功能 参数
基地 计算线性回归 LM() 公式、数据
基地 总结模型 概括() 适合
基地 Extract系数 lm()$系数
基地 Extract残差 lm()$残差
基地 Extract 拟合值 lm()$fitted.值
奥尔斯 运行逐步回归 ols_stepwise() 适合,pent = 0.1,prem = 0.3,详细信息 = FALSE

注意::请记住在拟合模型之前将分类变量转换为因子。

常见问题

添加预测变量时,R 平方值总是会上升,即使是无用的变量也不例外。调整后的 R 平方值会对每个额外项进行惩罚,因此它可能会下降。在比较具有不同数量预测变量的模型时,应使用调整后的 R 平方值。

残差与杠杆率图通过库克距离标记出具有影响力的点。在删除任何数据之前,请务必先进行调查:异常值可能是数据录入错误,也可能是样本中最具信息量的观测值。

不。R 会在列成为因子后自动创建虚拟变量。第一级成为参考组,其他所有系数都被视为与该基准组的差异。

线性回归速度快、完全可审计且不易过拟合,因此是任何人工智能团队在采用梯度提升或神经网络之前进行基准测试的标准方法。受监管行业通常要求这种透明度。

是的。人工智能助手可以提出候选模型规范,解释逐步输出结果,并警告多重共线性问题。请将这些建议视为假设,并使用您自己的诊断和领域知识来验证每一个假设。

总结一下这篇文章: