R语言学习:plotly包,相关性分析,Hadley Wickham大神6本PDF电子书派送,方差分析
2021年第44周。
这一周R语言学习,记录如下。
01
R语言学习系列文章(一)
R语言学习,每周一篇,已经更新10周了,记录着R语言知识和技能。
我创建了R语言群,备注:姓名-入群,扫描下方二维码,添加我微信,邀请你进群,大家一起学习和讨论R语言。
我每天的工作都会用R语言,我主要用R语言做什么事情呢?
-
数据的准备工作
-
探索性数据分析工作
-
数据分析和模型建构工作
-
数据结果呈现和沟通工作
实际工作中,我会常用到的R语言包。
-
tidyverse包,用于数据科学的任务
-
data.table包,数据框结构的强化版,常用rbindlist函数
-
xlsx包,xlsx数据的读写操作
-
scorecard包,评分模型的标准化设计和实现
-
RODBC包,关系型数据库和Hive数据库的 访问和获取
-
caret包,有监督模型的设计和实现
顺便说一下,我目前使用R语言解决金融科技领域里面所遇到的一些问题,包括外部数据测评和应用、营销类模型建构、风控类模型建构等,业务目的就是增收、提效、控险。
同时,我也用R语言做一些有趣的科研工作,目前聚焦于医学领域的数据分析、特征选择和模型构建的问题。
02
Hadley Wickham大神的系列书籍
Hadley Wickham是R语言大神,为R语言的发展和壮大做出了重大贡献。
Hadley Wickham写的6本书,送给需要你。
1 Hands-On Programming with R Write Your Own Functions and Simulations
2 Advanced R
3 ggplot2_ Elegant Graphics for Data Analysis
4 R Packages_ Organize, Test, Document, and Share Your Code
5 R for Data Science Import, Tidy, Transform, Visualize, and Model Data
6 Mastering Shiny Build Interactive Apps, Reports, and Dashboards Powered by R
需要书籍的伙伴,请扫描上面的二维码,备注:姓名-进群,添加我微信,进入R语言群公告查看下载链接。
03
从ggplot2到plotly
让我们把一个ggplot转换一个plotly,可使用plotly包的ggplotly函数。
library(tidyverse)
library(plotly)
p <- mpg %>%
ggplot(aes(hwy, cty, fill = class)) +
geom_jitter(shape = 21, size = 2, alpha = 0.5)
p
plotly_p <- ggplotly(p)
plotly_p
结果图
plotly图,可以做更多事情了。
-
光标悬挂在一个点上,可以获得更多信息
-
通过单击相应的图例项可以进行类别筛选
-
图形上面点击并绘制一个矩形框,可以进行缩放操作
你可以亲自测试上这个代码片段,然后对比分析下这两个图形。你会感受到plotly图有着动态化的效果了。
04
计算两个变量的相关性
相关性是用来度量两个定量变量之间或者多个定量变量之间相关的一种统计方法,它有着广泛地用途。在我的实际工作,经常会用到相关性技术来选择对目标有用的变量。
相关系数测量两个定量变量之间(线性)关系的强度和方向,它的范围从-1(完全负相关)到+1(完全正相关)。
相关系数r取正值,表示正相关,反之亦然。r的绝对值越大,相关性越强。如果r的值为0,表示两个变量之间没有关系。
相关系数的解释,可以参照下表。
我们常用的皮尔逊相关系数
计算公式
# 相关系数
library(tidyverse)
df <- read.csv("https://reneshbedre.github.io/assets/posts/reg/height.csv")
df
# 变量正态性分布检验
shapiro.test(df$Height)$p
shapiro.test(df$Weight)$p
# 变量间的相关系数计算
cor.test(df$Height, df$Weight, method = "pearson")
# 数据可视化操作
library(ggstatsplot)
ggscatterstats(data = df, x = Height, y = Weight)
运行结果
学习资料:
https://www.reneshbedre.com/blog/correlation-analysis-r.html
05
分组操作
我们可以灵活地利用group_by函数进行分组操作。
举例说明
library(tidyverse)
data <- read.csv("https://raw.githubusercontent.com/finnstats/finnstats/main/Airlinedata.csv",1)
head(data)
# 了解每个航班在每周几的平均延误情况
delay <- data %>%
group_by(Reporting_Airline, DayOfWeek) %>%
summarize(avg_delay=mean(ArrDelayMinutes))
delay
# 根据平均延误做个热图
# 可视化
delay %>%
ggplot(aes(x = Reporting_Airline, y = DayOfWeek, fill = avg_delay)) +
geom_tile(color = "white", size = 0.3) +
scale_fill_gradient(low = "blue", high = "red")
热图
06
方差分析
延续05的数据集,我们想对比分析航班AA和AS在航班延迟上面是否有显著性差异,这个时候我们可以进行方差分析。
# 方差分析
data1 <- data %>%
select(ArrDelay, Reporting_Airline) %>%
filter(Reporting_Airline == 'AA' | Reporting_Airline == 'AS')
AOV <- aov(ArrDelay ~ Reporting_Airline, data = data1)
summary(AOV)
结果
F的值小于,P值为0.718,表示AA和AS在航班延迟上面没有显著差异性。
07
可重复性代码构建指南
创建项目工程,做项目管理
项目的层级架构,参考下图:
各个文件夹和文件的用途
请注意
1 永远不要修改原始数据,或者说,一定要备份好原始数据
2 对于任何项目,创建一个文件,记录你的所思和所做,便于复盘和迭代
3 脚本的命名,请知名晓意,赋予含义,具有条理性和逻辑性,重视代码的可读性,代码是让电脑来运行的,更重要的是,让人来看的。
4 对于一个复杂的项目,编写代码之前,先写伪代码或者画流程图
08
tidyverse技能增进
tidyverse是数据科学套件包,也是我常用的R包,可以完成数据导入、探索性数据分析、数据处理和整理、统计分析等数据工作。
如何提升tidyverse技能?
多学它和多用它。
一本tidyverse技能的线上书籍,送给大家。
访问网址:
https://jhudatascience.org/tidyversecourse/
本书在开篇,就谈到了数据科学生命周期,一起学习下,关键的地方我做了标注。
如果你想了解数据科学与人工智能,请关注下方公众号~
如果你想找数据工作,请关注下方公众号~
觉得本文不错,就顺手帮我转发到朋友圈和微信群哦,谢谢。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!