R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用

目录

相关性分析

回归性分析

线性回归模型的介绍

回归系数的求解

R语言中的线性回归

显著性检验

参数的显著性检验——t检验

逐步回归

 验证模型的各类假设前提

多重线性检验

正态性检验

使用PP图或QQ图

shapior检验与k-s检验

数学变换

独立性检验

 方差齐性检验

模型预测


相关性分析

  • 绘制散点图先观察相关性
  • 根据相关系数进行计算 如pearson相关系数
  • 相关关系 的绝对值R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用0.8 则高度相关 0.5到0.8之间则中度相关,0.3-0.5则弱相关,小于0.3则几乎不相关。

回归性分析

  • 当组合中仅包含一个因变量和一个自变量的时候,称为简单线性回归模型,反之是多元线性回归模型。

线性回归模型的介绍

  • R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用

回归系数的求解

  1.  假设误差项服从均值为0,标准值为R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用的正态分布
  2. 构造似然函数
  3. 取对数并整理
  4. 展开并求导
  5. 计算偏回归系数

R语言中的线性回归

lm(formula,data,subset,wrights,na.action)
#formula: 指定函数公示 如y~x1+x2, 若y~.则和所有变量相关
#subset 样本子集
# weights 权重

显著性检验

#F检验,使用anova函数进行方差分析

 使用 qf(0.95,5,34)可以获取该*度下的F分布理论值。

# 建模
model <- lm(Profit ~ ., data = train)
model

# F统计量的计算
result <- anova(model)
result

# F统计量的计算
RSS <- sum(result$`Sum Sq`[1:4])                                                                                       
df_RSS <- sum(result$Df[1:4])
ESS <- result$`Sum Sq`[5]
df_ESS <- sum(result$Df[5])
F <- (RSS/df_RSS)/(ESS/df_ESS)
F

qf(0.975,5,34)

R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用

其中RSS为回归离差平方和(预测值减去平均值),ESS为误差平方和(实际值减去预测值)

参数的显著性检验——t检验

F检验用于对模型的检验,t 检验用于对单个参数的检验。

R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用

使用summary函数可以直接获得t检验的值

# 模型的概览
summary(model)

# 理论t分布的值
n <- nrow(train)
p <- ncol(train)
t <- qt(0.975,n-p-1)
t

逐步回归

  • 前向回归:逐步添加变量,不断调整
  • 后向回归:逐步删除变量
  • 双向逐步回归:删除了的可以添加,添加的可以删除

逐步回归使用step函数

# 逐步回归完成遍历选择
model2 <- step(model)
# 最终模型概览
summary(model2)

 验证模型的各类假设前提

多重线性检验

使用car包的vif函数

VIF简称方差的膨胀因子,0<VIF<10的时候,不存在多重现性,在10到100则存在,大于一百则严重。

library(car)
vif(model2)

正态性检验

#绘制直方图
hist(x = profit$Profit, freq = FALSE, main = '利润的直方图',
     ylab = '核密度值',xlab = NULL, col = 'steelblue')

#添加核密度图
lines(density(profit$Profit), col = 'red', lty = 1, lwd = 2)

#添加正态分布图
x <- profit$Profit[order(profit$Profit)]
lines(x, dnorm(x, mean(x), sd(x)),
      col = 'black', lty = 2, lwd = 2.5)

使用PP图或QQ图

 PP图横坐标是累计概率,纵坐标是实际累计概率;QQ图横坐标为理论分位数,纵坐标为实际分位数。

shapior检验与k-s检验

当样本量低于5000时候,使用shapiro检验法,否则使用k-2检验法。

P值大于置信水平则接受原假设。

# 统计法
shapiro.test(profit$Profit)

数学变换

当变量不服从正态分布就进行数学变换,如开根号、取对数等,还有BOX-COX变换。

# box-cox变换
powerTransform(model2)

 R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用

独立性检验

检验各变量之间是否独立。

# 独立性检验
durbinWatsonTest(model2)

 方差齐性检验

方差齐性要求模型残差项的方差不随自变量的变动而呈现某种趋势。

是否存在线性关系用BP检验,非线性用White检验,若存在则不满足齐性的条件。

# 方差齐性检验
ncvTest(model2)

模型预测

使用predict函数

# 模型预测
pred <- predict(model2, newdata = test[,c('R.D.Spend','Marketing.Spend')])
ggplot(data = NULL, mapping = aes(pred, test$Profit)) + 
  geom_point(color = 'red', shape = 19) + 
  geom_abline(slope = 1, intercept = 0, size = 1) +
  labs(x = '预测值', y = '实际值')

R语言书籍学习02 《R语言数据分析、挖掘建模与可视化》-第七章 线性回归模型的预测应用

 

上一篇:Pytorch框架常见报错--pytorch安装正常,无法调用GPU


下一篇:Java基础02:标识符和关键字