R语言回归分析

2023-11-19

R语言回归分析

回归分析可以说是统计学的核心,它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。通常,回归分析可以用来挑选与响应变量相关的解释变量,可以描述两者的关系,也可以生成一个等式,通过解释变量来预测响应变量。下面将通过几篇博客介绍回归分析,这是第一篇:拟合最小二乘法回归模型。

最小二乘法回归是通过预测变量的加权和来预测量化的因变量,其中权重是通过数据估计而得的参
数,目标是通过减少响应变量的真实值与预测值的差值来获得模型参数(截距项和斜率),具体而言,即使得残差平方和最小。

1、使用lm()拟合线性回归模型

在R语言中,lm()函数是拟合线性模型经常使用的函数,格式为:lm.fit <- lm(formula, data)

  • formula:要拟合的模型形式,用~隔离预测变量和响应变量,左侧为响应变量,右侧为预测变量,各个变量之间用+隔离。
  • data:数据框。

下面的表格显示了不同符号修改表达式:

符号 用途
~ 分隔符号,左边为响应变量,右边为解释变量。例如,要通过 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)

除了 lm() ,下表还列出了其他一些对做简单或多元回归分析有用的函数。拟合模型后,将
这些函数应用于 lm() 返回的对象,可以得到更多额外的模型信息:

函数 用途
summary() 展示拟合模型的详细结果
coefficients() 列出拟合模型的模型参数(截距项和斜率)
confint() 提供模型参数的置信区间(默认 95%)
fitted() 列出拟合模型的预测值
residuals() 列出拟合模型的残差值
anova() 生成一个拟合模型的方差分析表,或者比较两个或更多拟合模型的方差分析表
vcov() 列出模型参数的协方差矩阵
AIC() 输出赤池信息统计量
plot() 生成评价拟合模型的诊断图
predict() 用拟合模型对新的数据集预测响应变量值

当回归模型包含一个因变量和一个自变量时,我们称为简单线性回归。当只有一个预测变量,
但同时包含变量的幂(比如,X、X 2 、X 3 )时,我们称为多项式回归。当有不止一个预测变量时,则称为多元线性回归

2、简单线性回归

## 线性回归模型
#加载包
library(psych)
# 数据统计前的准备
head(women) # 首先观察数据集变量信息
dim(women) #显示数据集的大小
summary(women) # 显示数据集基本信息,可以看到最大最小值以及分位点
describe(women) #显示更为详细的信息,还可以看到方差,标准差更多信息
plot(women) #观察到二者之间存在正相关性
# 建立模型
lm.model1 <- lm(weight~height -1 ,data = women) #建立的是一个通过原点的模型
# 模型分析
summary(lm.model1) # 输出统计信息,重点可以看coefficient里面的第一项参数
                   #以及后面有几个星星,下面有解释
                   # R方和调整R方代表的是模型的解释程度,1代表100%
                   # 其中R方会随着变量的增加而增大,但是调整R方不一定
                   # 最后一行的F统计量越大越好,P值越小越好,整体检验
coefficients(lm.model1) # 输出参数,但是已经包含在summary中
confint(lm.model1,level = 0.95) # 输出置信区间,即95%成立的可能性
fitted(lm.model1) # 输出预测值,可以用于和真实值对比
plot(women$weight,fitted(lm.model1)) #作图比较比较真实值和预测值
abline(0,1) # 结合散点图是否在该条直线附近,说明拟合效果
anova(lm.model1) # 方差
vcov(lm.model1) # 协方差
residuals(lm.model1) # 残差
AIC(lm.model1) # AIC准则,越小越好
BIC(lm.model1) #BIC准则,越小越好
par(mfrow = c(2,2)) #将绘图区分割成四个部分
plot(lm.model1) # 左上角是残差和拟合值,若该模型能够很好地拟合真实数据,
                # 则应该是杂乱无章,若有规律,可以通过观察加入其他项
                # 右上角残差QQ图,判断残差是否服从正态分布,服从则一条直线附近45°
                # 左下是标准化残差拟合,若满足不变方差假设,则点在水平线上下随机分布
               # 右下是残差与杠杆值,鉴别离群点、高杠杆指以及强影响点


3、多项式回归

#多项式回归
lm.fit1 <- lm(weight~height+I(height^2),data = women)
summary(lm.fit1)
plot(women$height,women$weight)
lines(women$height,fitted(lm.fit1))
lm.fit2 <- lm(weight~height+I(height^2)+I(height^3),data = women)
summary(lm.fit2)

car包中的 scatterplot() 函数,它可以很容易、方便地绘制二元关系图。这个功能加强的图形,既提供了自变量与因变量的散点图、线性拟合曲线和平滑拟合(loess)曲线,还在相应边界展示了每个变量的箱线图。 spread=FALSE 选项删除了残差正负均方根在平滑曲线上的展开和非对称信息。 smoother.args=list(lty=2) 选项设置loess拟合曲线为虚线。pch=19 选项设置点为实心圆(默认为空心圆)。

library(car)
scatterplot(weight ~ height, data=women,
spread=FALSE, smoother.args=list(lty=2), pch=19,
main="Women Age 30-39",
xlab="Height (inches)",
ylab="Weight (lbs.)")

4、多元线性回归

当预测变量不止一个时,简单线性回归就变成了多元线性回归,从技术上来说,多项式回归可以算是多元线性回归的特例。

#多元线性回归
states <- as.data.frame(state.x77[,c("Murder", "Population",
                                     "Illiteracy", "Income", "Frost")])
head(states)
cor(states) #两两计算变量间的相关系数
scatterplotMatrix(states) #绘制散点图矩阵,可以简单的看出变量之间的关系
pairs(states) #绘制散点图矩阵
lm.fit3 <- lm(Murder ~ Population + Illiteracy + Income + Frost,
          data=states)
summary(lm.fit3)

5、有交互项的多元线性回归

#交互项的多元线性回归
head(mtcars)
lm.fit4 <- lm(mpg~hp+wt+hp:wt,data = mtcars)
summary(lm.fit4)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言回归分析 的相关文章

  • 测试自动化面试题

    Python python有哪些数据类型 Python支持多种数据类型 包括以下常见的数据类型 数字类型 整数 int 浮点数 float 和复数 complex 字符串类型 由字符组成的不可变序列 使用引号 单引号或双引号 括起来 列表
  • 机器学习(三)K-means聚类(手肘法、轮廓系数、可视化代码)

    K means聚类 聚类是无监督学习当中非常重要的一部分 能够在没有标签的情况下将数据分类 说到聚类 最常用也是最重要的一个算法就是K means算法 算法介绍 K means是一种非常简单快速高效的算法 只需要迭代几次即可 其原理用一句话
  • linux---"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message

    2020年3月14日服务器异常重启 查看 var log message日志 如下 Mar 14 15 04 59 localhost kernel azx single send cmd 11 callbacks suppressed M
  • GLES3.0中文API-glGetProgramResource

    名称 glGetProgramResource 检索程序对象中单个活动资源的多个属性的值 C 规范 void glGetProgramResourceiv GLuint program GLenum programInterface GLu
  • flask模块mock接口(一)

    目录 一 安装第三方模块 二 flask模块的使用 三 动态路由 四 返回json格式数据 有时候测试需要调用第三方接口进行测试 但是第三方接口没有提供时 我们可以通过mock接口模拟第三方接口 一 安装第三方
  • UNITY3D 实现暂停(Coroutine)

    前断时间在做一个游戏项目 为了实现暂停还有游戏逻辑中用yield 自己写了一个类 代码如下 using UnityEngine using System Collections if want gameobject pause Updata
  • 嵌入式基础常识

    一 基本概念 linux ubuntu 用户名 类型 普通用户 系统名称 家目录 root 管理员用户 pwd 显示当前工作路径 绝对路径 home linux 家目录 根目录下 代表根目录 ls 列出文件状态 选项 l i h 1 rwx
  • BUUCTF-千层套路(python脚本)

    zip层层压缩 写脚本爆破 import zipfile import os current path r C Users SoberJoker Downloads attachment if name main pwd ls os lis
  • 【经典】IDEA+DevTools热部署

    IDEA DevTools实现热部署功能 热部署 大家都知道在项目开发过程中 常常会改动页面数据或者修改数据结构 为了显示改动效果 往往需要重启应用查看改变效果 其实就是重新编译生成了新的Class文件 这个文件里记录着和代码等对应的各种信
  • 电脑浏览器换IP怎么换?四种浏览器教程一起看看吧。【芝麻http】

    浏览器设置代理IP上网是代理IP最基础的使用方法 不同的浏览器设置代理IP的方法略有不同 下面就几种常用的浏览器如何设置代理IP进行说明 一 IE浏览器设置代理IP IE浏览器无疑是最常用的浏览器 而像360浏览器 搜狗浏览器 QQ浏览器这
  • C++中的.和->

    C 中的 和 gt 1 C 中的点 的应用 如果是一个对象或者引用去调用成员变量或者成员函数函数的话 会使用到点 include
  • vue-cli webpack配置cdn路径 以及 上线之后的字体文件跨域处理

    昨天搞了一下vue项目打包之后静态资源走阿里云cdn 配置了半天 终于找到了设置的地方 config index js 里面设置build 下的 assetsPublicPath 打包的时候便可以添加公共前缀路径 assetsSubDire
  • c++ 封装

    目录 封装的意义一 封装的意义二 struct和class区别 成员属性设置为私有 封装的意义一 封装是c 面向对象的三大特征之一 1 将属性和行为作为一个整体 表现生活中的事物
  • 阿里云在线扩展云盘记录-ubuntu系统

    fdisk l 查看真实磁盘大小 apt get update 更新库 apt get install y cloud guest utils 安装命令 growpart dev vda 1 扩容命令在线扩展磁盘 若报错 执行以下操作 LA
  • C语言动态内存开辟,malloc,calloc,free,realloc函数使用

    目录 一 内存的动态分配 1 函数malloc 2 函数calloc 3 函数realloc 4 函数free 关于动态内存错误的操作案例 一 内存的动态分配 1 函数malloc 函数原型 void malloc size t size
  • 为什么抖音总显示连不上服务器,抖音登录不上怎么回事

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 以抖音v12 5 0为例 抖音登录不上 一般来说都是由于网速过慢 无法连接抖音的服务器 网速过慢一般都是由于手机的信号过低 或者是处于在人群较多的地方 造成了手机的网速变慢
  • Euromap 63协议认识

    Euromap 63协议认识 一 用途 Euromap 63是欧洲塑料和橡胶机械制造商协会颁布的专用于注塑机和上位计算机进行数据交互的协议 全称 Euromap 63 SPI SPI 塑料工业协会 Euromap 63的目标是为不同制造商的
  • Arduino String.h库函数详解

    此库中包含 1 charAT 2 compareTo 3 concat 4 endsWith 5 equals 6 equalslgnoreCase 7 getBytes 8 indexOf 9 lastlndexOf 10 length
  • 控制理论个人学习笔记-非线性系统理论

    文章目录 非线性系统理论 非线性系统的一般概念 相平面基础 非线性系统的相平面分析 描述函数法基础 非线性系统的描述函数法分析 非线性系统理论 非线性系统的一般概念 典型非线性 死区 饱和 间隙 摩擦 继电特性 继电特性使得系统产生振荡 死
  • 利用Java访问WEB Service

    最近在学习Web Service 发现了一个国内的Web Service提供站点 其中最简单的是查询QQ在线状态服务 我通过Java直接发送SOAP请求文件访问Web Service成功 这种方式实现比较简单 不需要第三方的软件包 impo

随机推荐

  • STEP_7计数器相关

    计数器的使用
  • 阿里云服务器租用费用清单表(CPU内存带宽磁盘)

    阿里云服务器租用费用包括CPU内存 公网带宽和系统盘三部分 云服务器购买可以选择活动机型也可以选择自定义购买 活动机型配置固定选择不自由 自定义购买配置自由选择但是费用贵的一批 阿里云百科来详细说下云服务器1核2G 2核4G 4核8G 8核
  • VMware vSphere 6.7先睹为快

    vSphere是老朋友了 还用再多介绍吗 最新的好消息是 VMware vSphere推出了最新版本6 7 相较两年前推出的VMware vSphere 6 5版本 新增了很多强大的功能 作为业内领先的虚拟化和云平台 vSphere的一举一
  • nginx root&alias文件路径配置

    nginx指定文件路径有两种方式root和alias 这两者的用法区别 使用方法总结了下 方便大家在应用过程中 快速响应 root与alias主要区别在于nginx如何解释location后面的uri 这会使两者分别以不同的方式将请求映射到
  • 第4章 用GPT-2生成文本

    BERT 是基于双向 Transformer 结构构建 而 GPT 2 是基于单向 Transformer 这里的双向与单向 是指在进行注意力计算时 BERT会同时考虑被遮蔽词左右的词对其的影响 融合了双向上下文信息 它比较适合于文本生成类
  • IO流介绍和异常处理

    IO流 1 1IO的分类 根据数据的流向分为 输入流和输出流 输入流 把数据从其他设备上读取到内存中的流 输出流 把数据从内存中写到其他设备上的流 根据功能类型分为 字节流和字符流 字节流 以字节为单位 读写数据的流 字符流 以字符为单位
  • tomcat无法启动,也没找到错误日志

    最近做项目的时候 遇到一个问题 项目启动不了 并且没有任何错误日志 1 bug描述 在做项目的时候 启动Tomcat时报错 2 bug信息 Connected to server 2017 11 16 09 28 36 551 Artifa
  • Python:用tkinter制做一个音乐下载小软件

    人生苦短 我用Python 平常我们下载的歌曲 都是各种妖魔鬼怪的格式横行 想下载下来用一下都不行 还只能在它的播放器内听 这谁受得了 学Python是用来干嘛的 当然是解决问题咯 于是我直接写了一手音乐下载软件 强制全部保存mp3 这样就
  • netty服务端的代码

    client code 客户端的ChannelHandler集合 由子类实现 这样做的好处 继承这个接口的所有子类可以很方便地获取ChannelPipeline中的Handlers 获取到handlers之后方便ChannelPipelin
  • Android应用开发(35)SufaceView基本用法

    Android应用开发学习笔记 目录索引 参考Android官网 https developer android com reference android view SurfaceView 一 SurfaceView简介 SurfaceV
  • c语言答案计算鸡兔同笼,鸡兔同笼-题解(C语言代码,思路清晰,简单易懂)

    解题思路 设鸡和兔子的数量为x y 则有x y n 2x 4y m 即可得x 4n m 2 y m 2n 2 只有x y为分数 或者为负数时 即为无解情况 详细代码如下 include int main double n m chicken
  • solc安装指定版本

    1 系统linux ubuntu20 04 2 solc安装指定版本 在编译的时候报错 Error Data location must be storage or memory for constructor parameter but
  • 残差神经网络(ResNet)

    残差神经网络的主要贡献是发现了退化现象 并针对退化现象发明了快捷连接 shortcut connection 极大的消除了深度过大的神经网络训练困难问题 1 神经网络越深准确率越高 假设一个层数较少的神经网络已经达到了较高准确率 可以在这个
  • TB-RK3399pro(Fedora28)图形界面与字符界面的切换

    TB RK3399pro Fedora28 使用的是LXDE图形界面 使用时默认打开7个屏幕 分别是tty1到tty6 加上一个没名字的tty7 LXDE为tty1号屏幕 若要切换至字符界面 使用快捷键 Ctrl Alt F2 F2也可以为
  • Wps ppt中无法打开超链接外部文件的解决办法。

    今天突然发现 在原来的Wps ppt中的所有超链接视频或照片都无法打开了 以下是解决办法 供参考 主要原因是Windows10系统升级出现的冲突问题 请卸载这两个补丁 KB5015807和KB5016066 或者卸载其中之一即可打开
  • Oracle 设定允许访问的IP地址

    开启按ip地址访问 修改 oracle10 app db network admin sqlnet ora 在文件最后加下列2行 vim sqlnet ora tcp validnode checking yes tcp invited n
  • 滑雪(记忆化搜索)

    题目 题解 记忆化搜索模板题 记忆化搜索的核心 本质是带剪枝的深搜 当某点的dp已赋值时 返回该值 其他情况进行深度搜索 模板 dfs u点 if u点的 dp 已经有值了 return u点的 dp 值 else 说明第一次到达u 则为u
  • Flume之:二、企业开发案例

    Flume之 二 企业开发案例 文章目录 Flume之 二 企业开发案例 三 企业开发案例 1 监控端口数据官方案例 2 实时读取本地文件到HDFS案例 3 实时读取目录文件到HDFS案例 4 flume监控Kafka gt Spark知识
  • QCC300x笔记(3) -- QCC3007开发调试经验

    哈喽大家好 这是该系列博文的第三篇 篇 lt lt 系列博文索引 快速通道 gt gt 写在前面 这篇博客主要记录 在使用QCC300x平台中所遇到的问题以及解决方法 会不定时更新 1 使用的堆栈空间大小超出或者全局变量超出 会报以下错误
  • R语言回归分析

    R语言回归分析 回归分析可以说是统计学的核心 它其实是一个广义的概念 通指那些用一个或多个预测变量 也称自变量或解释变量 来预测响应变量 也称因变量 效标变量或结果变量 的方法 通常 回归分析可以用来挑选与响应变量相关的解释变量 可以描述两