R - 多元回归
R - 多元线性回归
Section titled “R - 多元线性回归”多元线性回归(Multiple Linear Regression)是简单线性回归的扩展,用于建模单个连续响应变量与两个或多个预测变量之间的关系。它允许我们评估多个预测变量对结果的共同影响。
多元回归的一般数学方程是:
y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ + ε- y 是响应变量。
- β₀ 是截距。
- β₁, β₂, … βₚ 是预测变量的系数。
- x₁, x₂, … xₚ 是预测变量。
- ε 是随机误差项。
在 R 中,我们使用 lm() 函数创建回归模型。该模型从输入数据中估计系数(β 值)。一旦模型建立,我们就可以用它来预测新数据的响应,并评估预测变量的显著性。
The lm() 函数
Section titled “The lm() 函数”此函数根据预测变量与响应变量之间的关系创建线性模型。
lm(formula, data)- formula:一个
"formula"类对象,指定模型。对于多元回归,它看起来像response ~ predictor1 + predictor2 + ...。 - data:一个数据框,包含模型中的变量。
综合示例:预测汽车油耗
Section titled “综合示例:预测汽车油耗”我们将使用内置的 mtcars 数据集,根据汽车的排量(disp)、马力(hp)和重量(wt)来建模其油耗(mpg)。
步骤 1:加载包并准备数据
Section titled “步骤 1:加载包并准备数据”使用 tidyverse 中的 dplyr 包使数据选择变得简洁易读。
# 如果您尚未安装 tidyverse:install.packages("tidyverse")library(dplyr)
# 从 mtcars 数据集中选择相关列input_data <- mtcars %>% select(mpg, disp, hp, wt)
# 显示数据集的前几行print(head(input_data))准备好的数据如下所示:
mpg disp hp wtMazda RX4 21.0 160 110 2.620Mazda RX4 Wag 21.0 160 110 2.875Datsun 710 22.8 108 93 2.320Hornet 4 Drive 21.4 258 110 3.215Hornet Sportabout 18.7 360 175 3.440Valiant 18.1 225 105 3.460步骤 2:创建和评估模型
Section titled “步骤 2:创建和评估模型”我们使用 lm() 构建模型,然后使用 summary() 获取详细分析,这是标准做法。
# 创建关系模型model <- lm(mpg ~ disp + hp + wt, data = input_data)
# 获取模型的综合摘要summary(model)summary() 输出包含丰富的信息:
Call:lm(formula = mpg ~ disp + hp + wt, data = input_data)
Residuals: Min 1Q Median 3Q Max-3.8924 -1.6421 -0.1785 1.0954 5.5494
Coefficients: Estimate Std. Error t value Pr(>|t|)(Intercept) 37.105505 2.110815 17.579 < 2e-16 ***disp -0.000937 0.010350 -0.091 0.92851hp -0.031157 0.011355 -2.744 0.01049 *wt -3.800891 1.066178 -3.565 0.00132 **---Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 2.61 on 28 degrees of freedomMultiple R-squared: 0.8268, Adjusted R-squared: 0.8083F-statistic: 44.57 on 3 and 28 DF, p-value: 8.65e-11摘要解读:
- 系数(
Estimate):这些是 β 值。例如,对于体重(wt)每增加 1 个单位,在其他变量保持不变的情况下,mpg预计会减少 3.8。 Pr(>|t|)(p-值):这告诉我们预测变量是否具有统计显著性。较小的 p-值(例如,< 0.05)表明该预测变量与响应变量之间存在有意义的关系。在这里,hp和wt是显著的,而在其他两个变量存在的情况下,disp则不显著。Adjusted R-squared(调整后的 R 方):这表明我们的模型解释了mpg中大约 80.8% 的方差,这是一个很强的拟合。
步骤 3:使用 broom 包整理模型输出
Section titled “步骤 3:使用 broom 包整理模型输出”broom 包是一个现代工具,用于将模型对象转换为整洁的数据框(tidy data frames),使其更易于绘图和报告。
# 如果您尚未安装 broom:install.packages("broom")library(broom)
# 获取模型系数的整洁数据框tidy_model <- tidy(model)print(tidy_model)# A tibble: 4 × 5 term estimate std.error statistic p.value <chr> <dbl> <dbl> <dbl> <dbl>1 (Intercept) 37.1 2.11 17.6 1.78e-162 disp -0.000937 0.0104 -0.0905 9.29e- 13 hp -0.0312 0.0114 -2.74 1.05e- 24 wt -3.80 1.07 -3.57 1.32e- 3步骤 4:预测新值
Section titled “步骤 4:预测新值”预测的标准和最安全的方法是使用 predict() 函数,它将模型方程应用于新数据。
# 创建一个包含新汽车规格的数据框new_cars <- data.frame( disp = c(221, 250), hp = c(102, 110), wt = c(2.91, 3.20))
# 预测新汽车的 MPGpredicted_mpg <- predict(model, newdata = new_cars)
# 显示预测结果print(predicted_mpg)模型预测了新汽车数据的油耗:
1 222.71021 21.43889