《R语言与数据挖掘》⑥-①分类与预测建模【回归分析】

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。
lm()函数说明

lm(formula, data, subset, weights, na.action, method = "qr", model = TRUE, x = FALSE, y = FALSE, qr = TRUE, singular.ok = TRUE, contrasts = NULL, offset, ...)

其中, formula指要拟合的模型形式, data是一个数据框,包含用于拟合模型的数据。
在这里插入图片描述

实际案例1:利用数据集women建立简单线性回归模型

# 线性回归模型
data(women)



lm.model <- lm( weight ~ height - 1, data = women)  # 建立线性回归模型
summary(lm.model)  # 输出模型的统计信息

plot(women) # 画散点图
abline(lm.model) # 画出拟合曲线
points(women[6,],pch=8,col="red") # 标记点

coefficients(lm.model)  # 输出参数估计值
confint(lm.model, parm = "speed", level = 0.95)  # parm缺省则计算所有参数的置信区间
fitted(lm.model)  # 列出拟合模型的预测值
anova(lm.model)  # 生成一个拟合模型的方差分析表
vcov(lm.model)  # 列出模型参数的协方差矩阵
residuals(lm.model)  # 列出模型的残差
AIC(lm.model)  # 输出AIC值
BIC(lm.model) # 输出BIC值
par(mfrow = c(2, 2)) 
plot(lm.model)  # 生成评价拟合模型的诊断图
# 回归模型做预测
x_test = data.frame(height=c(64,65,66)) # 做预测的自变量数据需要存为数据框格式。
predict(lm.model,x_test,interval='prediction',level=0.95)

plot(women)
abline(lm.model)
points(women[6,],pch=8,col="red")

线性拟合常见的参数总结!
在这里插入图片描述

实际案例2:结婚时间、教育、宗教等其它变量对出轨次数的影响

在这里插入图片描述
在这里插入图片描述

# 逻辑回归模型
library(AER)
data(Affairs, package = "AER")
# 由于变量affairs为正整数,为了进行Logistic回归先要将其转化为二元变量。
Affairs$ynaffair[Affairs$affairs > 0] <- 1
Affairs$ynaffair[Affairs$affairs == 0] <- 0
Affairs$ynaffair <- factor(Affairs$ynaffair, levels = c(0, 1), 
                           labels = c("No", "Yes"))
# 建立Logistic回归模型
model.L <- glm(ynaffair ~ age + yearsmarried + religiousness + rating, 
               data = Affairs, family = binomial (link = logit))
summary(model.L)  # 展示拟合模型的详细结果
predictdata <- data.frame(Affairs[, c("age", "yearsmarried", "religiousness", "rating")])
# 由于拟合结果是给每个观测值一个概率值,下面以0.4作为分类界限
predictdata$y <- (predict(model.L, predictdata, type = "response") > 0.4)
predictdata$y[which(predictdata$y == FALSE)] = "No"  # 把预测结果转换成原先的值(Yes或No)
predictdata$y[which(predictdata$y == TRUE)] = "Yes" 
confusion <- table(actual = Affairs$ynaffair, predictedclass = predictdata$y)  # 混淆矩阵
confusion 
(sum(confusion) - sum(diag(confusion))) / sum(confusion)  # 计算错判率

回归诊断

数据的无规律性或者错误设定了预测变量与响应变量的关系,都将致使模型产生巨大的偏差。这样的模型的预测效果可能会很差,并且误差显著。因此,我们需要对回归模型进行诊断。与回归诊断相关的函数有:
在这里插入图片描述
在这里插入图片描述

# 检验误差项的自相关性
durbinWatsonTest(lm.model)

离群点检测

#  Bonferroni离群点检验
library(car)
fit <- lm(weight ~ height, data = women)  # 建立线性模型
outlierTest(fit)   # Bonferroni离群点检验
women[10, ] <- c(70, 200)  # 将第10个观测的数据该成height = 70,weight = 200
fit <- lm(weight ~ height, data = women)
outlierTest(fit)  # Bonferroni离群点检验

变量选择

在实际的问题中,影响因变量的因素很多,可以选择若干个自变量建立回归方程,这便涉及到变量选择的问题。R软件中step()函数可以完成这一过程。

在这里插入图片描述
【模型诊断的结果解释:传送门

# 自变量选择
Data <-  freeny
lm <- lm(y ~ ., data = Data)  # logistic回归模型
summary(lm)
lm.step <- step(lm, direction = "both")  # 一切子集回归
summary(lm.step)
lm.step <- step(lm, direction = "forward")  # 前进法
summary(lm.step)
lm.step <- step(lm, direction = "backward")  # 后退法
summary(lm.step)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wency(王斯-CUEB)

我不是要饭的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值