R 再也不用愁变量太多跑回归太麻烦!R语言循环常用方法总结
在高维数据分析过程中,为了筛选出与目标结局相关的变量,通常会用到回归分析,但是因为自变量较多,往往要进行多次回归。这就是统计编程语言发挥作用的时候了
有些大神们认为超过3次的复制粘贴就可以考虑使用循环了,当然个人“承受能力较强”,在分析过程中还是经常会用复制粘贴来解决相当一部分的问题。但是当变量太多需要多次复制粘贴,并且还要对不同的过程设置不同的编号真的太麻烦了。比如有100个X,就要命名100个模型,从fit1到fit100,显然可操作性太差了。
所以循环必须派上用场,接下来将总结一下在R中使用循环来进行回归分析的几个常用方法。
我们以R自带的state.x77数据集为例进行介绍。 由于原始数据集是矩阵,先转变成数据框,再以一个简单的名字命名。数据结构如下:
行代表50个不同的州,列是8个不同的变量:Population:人口数;Income:收入;Illiteracy:文盲率(百分比);Life Exp:期望寿命;Murder:凶杀案发生率(每10万人);HS Grad:高中毕业率;Frost:气温低于冰冻的天数;Area:每平方英里的陆地面积。
我们以凶杀案发生率(Murder)为因变量,看哪些因素跟案件发生率有关。
1.根据变量所在的列号进行循环
开始循环之前先建立一个空的向量result1用以在循环过程中储存提取的结果。
模型中states[,i]表示逐个选择states数据框的第1-4个变量,进行线性回归分析。
coef(summary(fit))[2,c(1,2,4)]用以提取目标变量回归分析结果的beta,SE,和p值。提取之后通过colnames(states)[i]加上相应变量的变量名。最后在循环过程中通过rbind将结果合并在一个数据框result1中,结果如下:
可以通过write.csv()等函数将结果输出到本地文件夹中。
这种循环方法适用于变量在数据框中是连续排列的。
2.根据变量名进行循环
如果目标变量在数据框中不是连续的,可以使用这个方法,先建立一个目标变量名的向量,然后在回归方程中加上substitute函数,分别将提前建立的变量名替换到方程中,建立变量名的循环。
这里注意了:一定要使用substitute函数,不能直接将states[,as.name(vars[i])]放入方程中,有兴趣的读者可以查一下substitute函数的用法。
结果如下:
3.使用apply函数进行循环
先自定义一个线性回归函数,可以直接提取出回归结果中的beta,SE,和P值。然后用apply函数(也可以使用sapply等函数)将此自定义的函数分别使用于数据集选定的列。再通过转置函数t( )使结果更具有可读性。
结果如下:
该方法既适用于目标变量在数据框中是连续排列的,也适用于不连续排列的情况。
4.使用purrr包的map函数进行循环
该方法与apply族函数的思路相似,不同的是purrr包是Hardley大神tidyverse的核心包之一,速度非常快,特别适用于数据较大,变量较多的数据集。
同样需要先自定义一个线性回归函数,然后通过map函数适用于数据集选定的列。
得到结果如下:
发现不太适合直接导出,没关系,加上as.data.frame和转置函数t()就可以了,结果如下:
以上是在R语言中用循环做回归分析的常用方法,其中有些细节可以根据自己的需要进行调整,比如提取结果中的其他变量。
这些循环方法也适用于其他回归模型,比如常用的logistic回归。另外我在自己的数据集中测试了不同方法的耗时情况,几次测试map函数都是最省时的,for循环和apply函数在我的数据上表现相差不大。
R 再也不用愁变量太多跑回归太麻烦!R语言循环常用方法总结的更多相关文章
- python的环境,你再也不用愁-conda
Conda Guide Conda简介 conda是一个包,依赖和环境管理工具,适用于多种语言,如: Python, R, Scala, Java, Javascript, C/ C++, FORTR ...
- 有了这个BI工具,财务分析再也不用愁
财务软件的发展已基本上将财会工作者从登记凭证.记账.编制会计报表等繁重和重复性的工作中解放出来.但是,当前大多数管理软件或财务软件的财务分析功能还停留在会计信息或财务指标的数据处理.图表展现层面,支持 ...
- 简单两行,实现无线WiFi共享上网,手机抓包再也不用愁了
你是否为WiFi共享而发愁,各个无线共享软件,某某共享精灵,某某免费WiFi,某某共享大师,某某随身WiFi,一个比一个难用,一个比一个私货多,一个比一个广告多,如果装上了它们,你的电脑就基本沦陷了, ...
- 学会这个删库再也不用跑路了~ --技术流ken
前言 相信每一个学IT的人或多或少都听说过从删库到跑路这个梗~下图也是在各种交流群屡禁不止,新人听着也是瑟瑟发抖. 人们茶余饭后,街头巷角难免要问... 下面技术流ken就教给各位新手们一招删库再也不 ...
- 教会舍友玩 Git (再也不用担心他的学习)
舍友长大想当程序员,我和他爷爷奶奶都可高兴了,写他最喜欢的喜之郎牌Git文章,学完以后,再也不用担心舍友的学习了(狗头)哪里不会写哪里 ~~~ 一 先来聊一聊 太多东西属于,总在用,但是一直都没整理的 ...
- 【阿里云产品公测】离线归档OAS,再也不用担心备份空间了
[阿里云产品公测]离线归档OAS,再也不用担心备份空间了 作者:阿里云用户莫须有3i 1 起步 1.1 初识OAS 啥是OAS,请看官方说明: 引用: 开放归档服务(Open Archive Se ...
- 有了 tldr,妈妈再也不用担心我记不住命令了
引言 有一次我在培训时说「程序员要善于使用 Terminal 以提高开发效率」,一位程序员反驳道:「这是 21 世纪,我们为什么要用落后的命令行,而不是先进的 GUI?」 是的,在一些人眼里,这个黑黑 ...
- 妈妈再也不用担心我使用git了
妈妈再也不用担心我使用git了 Dec 29, 2014 git git由于其灵活,速度快,离线工作等特点而倍受青睐,下面一步步来总结下git的基本命令和常用操作. 安装msysgit 下载地址:ms ...
- python爬虫07 | 有了 BeautifulSoup ,妈妈再也不用担心我的正则表达式了
我们上次做了 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍 有些朋友觉得 利用正则表达式去提取信息 太特么麻烦了 有没有什么别的方式 更方便过滤我们想要的内容啊 emmmm 你还别说 还 ...
随机推荐
- 使用KVO键值监听
本文章从五个方面介绍KVO(Key-Value-Observer)键值观察者: (1)功能介绍 (2)使用步骤 (3)应用场景 (4)原理理解 (5)相关的面试题 一 功能介绍 KVO是OC语言对「观 ...
- CentOS7配置python3教程
环境准备: 1.python3.7.1 下载地址:https://www.python.org/ 注意:CentOS7默认就有python2的 2.虚拟机CentOS 7 64位,下载地址:ht ...
- mongodb插入性能
转自 https://blog.csdn.net/asdfsadfasdfsa/article/details/60872180 MongoDB与MySQL的插入.查询性能测试 7.1 平均 ...
- Linux操作系统服务器学习笔记一
初识Linux: Linux 是什么? Linux是一套免费使用和自由传播的类Unix操作系统,是一个多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件.应用程序和网络协议 ...
- 16 JavaScript计时事件&显示时钟
计时事件:JavaScript设定一定的时间间隔之后来执行代码 window.setInterval("JavaScript function",millisecons):间隔指定 ...
- SZWI3800
xml <mapper namespace="jp.co.alsok.g6.zwi.dao.mapper.g6.custom.SZWI3800Mapper"> < ...
- Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)
文章目录 摘要 Nacos简介 使用Nacos作为注册中心 安装并运行Nacos 创建应用注册到Nacos 负载均衡功能 使用Nacos作为配置中心 创建nacos-config-client模块 在 ...
- JSON传输图片帮助类
JSON传输图片帮助类 2014-05-27 16:11:22| 分类: Java | 标签:解决方案 java json |举报|字号 订阅 原理:将图片转换为字节流,再将字节流用 ...
- jforum发表文章和回复文章显示中文乱码问题
jforum安装时,在数据库创建jforum数据库的时候,设置了字符集(CREATE DATABASE jforum DEFAULT CHARACTER SET utf8 COLLATE utf8_g ...
- C# Connection:连接数据库---转载
C# 语言中 Connection 类是 ADO.NET 组件连接数据库时第一个要使用的类,也是通过编程访问数据库的第一步. 接下来我们来了解一下 Connection 类中的常用属性和方法,以及如何 ...