R语言模型分析(一)
文章目录
- 模型解析
- 模型公式含义:
- 为什么要用`factor(cyl)`?
- 模型结果解析
- 1. 残差统计(Residuals)
- 2. 系数估计(Coefficients)
- 3. 模型拟合度
- 深入分析和可视化
- 检查模型假设
- 模型预测
- 模型比较
- 效应可视化
- 业务洞见
- 注意事项
模型解析
model <- lm(mpg ~ hp + wt + factor(cyl), data = mtcars)
模型公式含义:
- 因变量:
mpg- 每加仑英里数(油耗效率) - 自变量:
hp- 马力(连续变量)wt- 重量(连续变量)factor(cyl)- 气缸数(分类变量,转换为因子)
为什么要用factor(cyl)?
# 查看cyl的数据类型
class(mtcars$cyl) # "numeric"# 转换为因子后,R会创建虚拟变量
table(mtcars$cyl)
# 4 6 8
# 11 7 14# 默认以第一个水平(4缸)作为参考组
levels(factor(mtcars$cyl)) # "4" "6" "8"
模型结果解析
summary(model)
预期输出包含以下重要部分:
1. 残差统计(Residuals)
Residuals:Min 1Q Median 3Q Max
-3.9387 -1.2560 -0.4015 1.1253 5.0513
- 显示预测值与实际值的差异分布
- 理想情况:中位数接近0,四分位数大致对称
2. 系数估计(Coefficients)
Coefficients:Estimate Std. Error t value Pr(>|t|)
(Intercept) 33.86077 2.57034 13.174 1.06e-12 ***
hp -0.03211 0.01369 -2.345 0.0269 *
wt -2.97583 0.82055 -3.626 0.0012 **
factor(cyl)6 -2.06302 1.55159 -1.329 0.1955
factor(cyl)8 -4.72363 1.65754 -2.850 0.0085 **
系数解释:
- 截距(33.86):当hp=0, wt=0, 且为4缸车时的基准mpg(理论值)
- hp(-0.032):马力每增加1单位,mpg平均减少0.032(控制其他变量)
- wt(-2.976):重量每增加1单位(千磅),mpg平均减少2.976
- factor(cyl)6(-2.063):6缸车比4缸车mpg平均低2.063
- factor(cyl)8(-4.724):8缸车比4缸车mpg平均低4.724
显著性:
***:p < 0.001,高度显著**:p < 0.01,很显著*:p < 0.05,显著- 无星号:不显著(如6缸vs4缸)
3. 模型拟合度
Multiple R-squared: 0.843, Adjusted R-squared: 0.8189
F-statistic: 34.74 on 4 and 27 DF, p-value: 2.799e-10
- R² = 0.843:模型解释了84.3%的mpg变异
- 调整R² = 0.819:考虑了自变量个数后的修正R²
- F检验p值:模型整体显著(p < 0.001)
深入分析和可视化
检查模型假设
# 诊断图
par(mfrow = c(2, 2))
plot(model)
par(mfrow = c(1, 1))# 多重共线性检验
car::vif(model)
# 通常VIF > 10表示严重共线性
模型预测
# 对新数据进行预测
new_data <- data.frame(hp = c(150, 200, 250),wt = c(2.5, 3.5, 4.5),cyl = c(4, 6, 8)
)
predict(model, newdata = new_data)# 置信区间
predict(model, newdata = new_data, interval = "confidence")
模型比较
# 简化模型(去掉不显著的cyl6效应)
model_simple <- lm(mpg ~ hp + wt + I(cyl == 8), data = mtcars)
summary(model_simple)# 嵌套模型比较
anova(model_simple, model)
R语言模型分析(一)(1)
效应可视化
library(ggplot2)# 按气缸数分组的预测值与实际值
mtcars$predicted <- predict(model)
mtcars$cyl_factor <- factor(mtcars$cyl)ggplot(mtcars, aes(x = predicted, y = mpg, color = cyl_factor)) +geom_point(size = 3) +geom_abline(intercept = 0, slope = 1, linetype = "dashed") +labs(title = "实际MPG vs 预测MPG", x = "预测值", y = "实际值",color = "气缸数") +theme_minimal()
业务洞见
从这个模型我们可以得出:
- 重量是影响油耗的最强因素(系数绝对值最大)
- 8缸车比4缸车油耗显著更差(平均低4.7 mpg)
- 6缸与4缸车差异不显著(可能样本量不足)
- 马力对油耗有负面影响,但效应相对较小
注意事项
- 样本量较小(n=32),结果需要谨慎解释
- 变量可能相关(如大马力车通常更重)
- 可能存在交互作用(如马力对油耗的影响可能因车重而异)
这个线性模型为我们理解影响汽车油耗的因素提供了很好的量化依据。
