ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-24 11:00:08  阅读:104  来源: 互联网

标签:02 语言 model2 模型 检验 可视化 逐步回归 线性 回归


目录

相关性分析

回归性分析

线性回归模型的介绍

回归系数的求解

R语言中的线性回归

显著性检验

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

逐步回归

 验证模型的各类假设前提

多重线性检验

正态性检验

使用PP图或QQ图

shapior检验与k-s检验

数学变换

独立性检验

 方差齐性检验

模型预测


相关性分析

  • 绘制散点图先观察相关性
  • 根据相关系数进行计算 如pearson相关系数
  • 相关关系 的绝对值\geqslant0.8 则高度相关 0.5到0.8之间则中度相关,0.3-0.5则弱相关,小于0.3则几乎不相关。

回归性分析

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

线性回归模型的介绍

  • y=X\beta +\varepsilon

回归系数的求解

  1.  假设误差项服从均值为0,标准值为\sigma的正态分布
  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)

F=\frac{RSS/p}{ESS/(n-p-1))}\sim F(p,n-p-1)

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

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

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

t=\frac{\hat{\beta_j}-\beta_j}{se(\hat{\beta_j})}\sim t(n-p-1))

使用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)

 

独立性检验

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

# 独立性检验
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 = '实际值')

 

标签:02,语言,model2,模型,检验,可视化,逐步回归,线性,回归
来源: https://blog.csdn.net/qq_41520353/article/details/122659966

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有