回归分析都是统计学的核心。它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。普通最小二乘(OLS)回归 包括简单线性回归、多项式回归和多元线性回归。

OLS回归的数据必须满足以下统计假设:

(1)正态性:对于固定的自变量值,因变量值成正态分布。
(2)独立性: Yi值之间相互独立。
(3)线性:因变量与自变量之间为线性相关。
(4)同方差性:因变量的方差不随自变量的水平不同而变化。

如果违背了以上假设,你的统计显著性检验结果和所得的置信区间很可能就不精确。

1. 模型的拟合

### 1. 模型的拟合
## 简单线性回归
# ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
# trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
# group <- gl(2, 10, 20, labels = c("Ctl","Trt"))
# # gl:Generate Factor Levels
# weight <- c(ctl, trt)
# lm.D9 <- lm(weight ~ group)
# lm.D90 <- lm(weight ~ group - 1) # omitting interceptfit <- lm(weight ~ height,data = women)
# fit <- lm(weight ~ height - 1,data = women) # omitting intercept## 多项式回归
fit2 <- lm(weight ~ height + I(height^2),data = women)## 多元线性回归
fit3 <- lm(mpg ~ hp + wt + cyl, data = mtcars)## 有显著交互项的多元线性回归
fit4 <- lm(mpg ~ hp + wt + hp:wt, data = mtcars)## R表达式中常用的符号
# ~ 分隔符号,左边为响应变量,右边为解释变量。例如,要通过x、z和w预测y,代码为y ~ x + z + w
# + 分隔预测变量
# : 表示预测变量的交互项。例如,要通过x、z及x与z的交互项预测y,代码为y ~ x + z + x:z
# * 表示所有可能交互项的简洁方式。代码y~ x * z * w可展开为y ~ x + z + w + x:z + x:w + z:w +
#   x:z:w
# ^ 表示交互项达到某个次数。代码y ~ (x + z + w)^2可展开为y ~ x + z + w + x:z + x:w + z:w
# . 表示包含除因变量外的所有变量。例如,若一个数据框包含变量x、y、z和w,代码y ~ .可展开为y ~ x +
#   z + w
# - 减号,表示从等式中移除某个变量。例如,y ~ (x + z + w)^2 – x:w可展开为y ~ x + z + w +
#   x:z + z:w
# -1 删除截距项。例如,表达式y ~ x - 1拟合y在x上的回归,并强制直线通过原点
# I() 从算术的角度来解释括号中的元素。例如,y ~ x + (z + w)^2将展开为y ~ x + z + w + z:w。相反, 代码y
# ~ x + I((z + w)^2)将展开为y ~ x + h, h是一个由z和w的平方和创建的新变量
# function 可以在表达式中用的数学函数。例如,log(y) ~ x + z + w表示通过x、z和w来预测log(y)summary(fit) #模型的详细结果
# R平方值,表明模型可以解释响应变量方差的百分比,是实际和预测值之间的相关系数
# 残差标准误(Residual standard error)则可认为是模型用身高预测体重的平均误差。
# F统计量检验所有的预测变量预测响应变量是否都在某个几率水平之上coefficients(fit) #模型参数
confint(fit) # 模型参数的置信区间(95%)
fitted(fit) # 模型预测值,实际值women$weight
residuals(fit) # 残差值,weight-fitted(fit)
predict(fit,women) # 预测,women必需为含有fit中自变量的dataframeanova(fit) #拟合模型的方差分析表
vcov(fit)  # 模型参数的协方差矩阵

2. 模型可视化与模型评价

### 2. 模型可视化与模型评价
plot(women$height,women$weight,xlab="Height (in inches)",ylab="Weight (in pounds)")
# Add Straight Lines to a Plot
abline(fit)
# Add Connected Line Segments to a Plot
lines(women$height,fitted(fit)) par(mfrow = c(2,2))
# 生成评价模型拟合情况的四幅图形
plot(fit)
# 残差图与拟合图(左上):残差值与预测(拟合)值应该没有任何系统关联
# 正态Q-Q图(右上):应该落在呈45度角的直线上
# 位置尺度图(左下):水平线周围的点应该随机分布
# 残差与杠杆图(右下):从图形可以鉴别出离群点、高杠杆值点和强影响点

3. car包评价回归模型

### 3. car包评价回归模型
library(car)
states<- as.data.frame(state.x77[,1:7])
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost,data = states)
## 正态假设检验
qqPlot(fit,lables = rownames(states),id.method = 'identify',simulate = TRUE, main = "Q-Q Plot")residuals(fit)
rstudent(fit)  # 学生化残差(studentized residual)## 误差项独立性检测
durbinWatsonTest(fit)
# p值不显著(p=0.268)说明无自相关性,误差项之间独立## 线性假设检测
crPlots(fit) # 成分残差图
# 如果不是线性,重新建模,加交互项或变量变换## 同方差性检测
ncvTest(fit)
# 若检验不显著,则说明误差同方差性存在,适合线性模型。
spreadLevelPlot(fit)
# 图中点在水平的最佳拟合曲线周围呈水平随机分布,则说明误差同方差性## 预测变量多重共线性检测
# 多重共线性可用统计量VIF(Variance Inflation Factor,方差膨胀因子)进行检测
vif(fit)
sqrt(vif(fit)) > 2  # 为真,则预测变量存在多重共线性问题## 离群点检测
# 离群点是指那些模型预测效果不佳的观测点。
# 标准化残差值大于2或者小于-2的点可能是离群点
outlierTest(fit)

4. 线性模型假设的综合检验

### 4. 线性模型假设的综合检验
library(gvlma)
gvmodel <- gvlma(fit)
# 数据满足OLS回归模型所有的统计假设(p>0.05)## 改进措施
# 删除离群点 需谨慎
# 变量变换
# 增删变量
# 尝试其他方法

5.模型比较

### 5.模型比较
fit1 <- lm(weight ~ height,data = women)
fit2 <- lm(weight ~ height + I(height^2),data = women)
anova(fit1,fit2)
# anova()函数可以比较两个嵌套模型的拟合优度AIC(fit1,fit2)
# AIC(Akaike Information Criterion,赤池信息准则):
# 考虑了模型的统计拟合度以及用来拟合的参数数目
# AIC值越小的模型要优先选择,它说明模型用较少的参数获得了足够的拟合度。

6.变量选择

### 6.变量选择
##逐步回归法(stepwise method)
library(MASS)
fit <- lm(Murder ~ Population + Illiteracy + Income + Frost,data = states)
stepAIC(fit,direcetion = 'backward')
# 选择AIC值小的模型。虽然它可能会找到一个好的模型,
# 但是不能保证模型就是最佳模型,因为不是每一个可能的模型都被评价了。##全子集回归(all-subsets regression)
library(leaps)
leaps <- regsubsets(Murder ~ Population + Illiteracy + Income + Frost,data = states)plot(leaps,scale = 'adjr2')
# 纵坐标为:调整后的R平方,R平方含义是预测变量解释响应变量的程度
# 大部分情况中,全子集回归要优于逐步回归,因为考虑了更多模型。但是,当有大量预测变
# 量时,全子集回归会很慢。

参考:《R语言实战》,人民邮电出版社

R语言普通最小二乘回归分析相关推荐

  1. R语言普通最小二乘(OLS)回归说明、以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性)、Independence(独立性)、Linearity(线性度)、方差齐性)

    R语言普通最小二乘(OLS)回归说明.以及构建普通最小二乘(OLS)回归需要满足的四个假设(Normality(正态性).Independence(独立性).Linearity(线性度).方差齐性) ...

  2. 基于R语言实现LASSO回归分析

    模拟假数据集 set.seed(0820)n <- 50p <- 25beta <- rep(0,p)beta[1:5] <- 1:5/5X <- matrix(rnor ...

  3. R语言与线性回归分析

    文章目录 1. 原始数据的分析 2. 回归模型的拟合(参数估计和检验) 3. 变量选择 4. 回归诊断 5. 改进措施 6. 岭回归 8. 其他 基本假设:正态性.独立性.线性.同方差性 常用R包:c ...

  4. R语言 偏最小二乘回归PLS代码

    导入数据集,标准化变量 library(pls) #读取数据赋值 df = read.csv("soil.csv") y = scale(df$soil.som) #标准化 x = ...

  5. R语言进行Logistic回归分析

    Logistic回归分析常常用来分析某个结局的危险因素或保护因素. 输入数据格式 分析代码 library(finalfit) library(rstan) library(boot) library ...

  6. 随机森林R语言代码实现回归分析

    library(randomForest) library(foreign) 选择树种,避免每次运行不一致,数字可以随便选 set.seed(42) 导入数据("C:\1.csv" ...

  7. R语言分析蛋白质组学数据:飞行时间质谱(MALDI-TOF)法、峰值检测、多光谱比较...

    全文链接:http://tecdat.cn/?p=30051 •研究生物体产生的全部蛋白质. • Foci:鉴定.结构测定.生物标志物.通路.表达(点击文末"阅读原文"获取完整代码 ...

  8. 数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC...

    全文链接:http://tecdat.cn/?p=27384 在本文中,数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息(点击文末"阅读原文"获取完整代 ...

  9. c r语言中rank函数,R语言rank函数详细解析

    R语言rank函数详细解析 发布于 2016-01-04 16:26:04 | 557 次阅读 | 评论: 0 | 来源: PHPERZ R 数据统计分析语言R是用于统计分析.绘图的语言和操作环境.R ...

最新文章

  1. Linux那些事儿 之 戏说USB(32)驱动的生命线(四)
  2. 大牛都会用的 IDEA 调试技巧!!!
  3. 如何给SAP云平台的账号分配Leonardo机器学习服务的实例
  4. Codeforces - 1194C - From S To T - 子序列 - 排序
  5. elasticsearch docker无法挂载_ElasticSearch数据备份与恢复
  6. 关于多表的leftJoin(转)
  7. JS循环延时函数setInterval根据特定情况的中断
  8. 四大基本反应类型的关系_中学化学中的四种基本反应类型,氧化还原反应和物质的变化!...
  9. php表格合并_合并表格怎么合并
  10. 招银网络科技杭州 java_招银网络科技_杭州Java后端_视频一、二面,HR面
  11. 如何有效地学习知识,如何才能全面发展?
  12. 初级模拟电路:2-4 限幅器
  13. macOS 安装 brew步骤
  14. [渝粤教育] 广东-国家-开放大学 21秋期末考试网络金融10248k2
  15. 为什么“时间管理四象限”没有用处?
  16. x3650服务器硬盘指示灯,IBM X3500服务器故障|前面板指示灯解释
  17. 中国网建提供的SMS短信发送
  18. 虚拟机安装Ubuntu16.04.6
  19. IO包中的其他类总结
  20. JAVA学习之前端知识掌握Day002

热门文章

  1. 08Factory Method(工厂方法)模式
  2. C++中的静态绑定与动态绑定
  3. 计算机书籍- 网络爬虫开发实战
  4. 2021,软科中国大学排名新鲜出炉!清华、北大、浙大位居前三!
  5. 计算机视觉基本原理——RANSAC
  6. RDKit | 基于Ward方法对化合物进行分层聚类
  7. 6.2.Scrapy获取图像
  8. 【问题收录】Eclipse Type Access restriction问题解决
  9. drugbank下载XML文件解析
  10. 如何卸载 python setup.py install 安装的包?