R数据分析|可视化|dplyr|Kaggle奥运会数据集(二)

由于这个数据集较为庞大,想深入探究点东西,所以想缩小数据范围。那么我们就仅关注“男子球类运动”。这里用到的是grepl函数,其实筛选的是参与项目名里含“ball”的,所以可能有所错漏。这篇文章里的分析方法比较偏统计学,有涉及p值、假设检验、回归分析等等。

中美男子球类运动员历届平均身高分别为 194.7 米、191.1 米;历届平均年 龄都为 24.7 岁。为比较两国该类项目男运动员历届身高、年龄的差异,引入 t 检验。计算得关于身高的 p 值为 0.3129,大于 0.05;关于身高的 p 值为 0.9831, 大于 0.05,所以认为两国身高、年龄指标的数据有显著差异。再比较中美俄这两项指标,引入 ANOVA 检验,计算得关于身高的 p 值为 0.382,大于 0.05;关于身高的 p 值为 0.0591,大于 0.05,所以认为这三个国家身高、年龄指标的数据有显著差异。

male_ball = athlete %>% filter(Sex == "M") %>% filter(grepl("ball",Sport)) %>% group_by(NOC) #各国男子球类项目usa_chn_height = athlete %>% filter(Sex == "M") %>% filter(grepl("ball",Sport)) %>% filter(NOC %in% c("USA","CHN")) %>% filter (Height != "NA") %>% group_by(Year,NOC) %>% summarise(height = mean(Height)) #中美国男子球类项目历届平均身高
usa_chn_age = athlete %>% filter(Sex == "M") %>% filter(grepl("ball",Sport)) %>% filter(NOC %in% c("USA","CHN")) %>% filter (Age != "NA") %>% group_by(Year,NOC) %>% summarise(age = mean(Age))
#中美国男子球类项目历届平均年龄
usa_chn_rus_height = athlete %>% filter(Sex == "M") %>% filter(grepl("ball",Sport)) %>% filter(NOC %in% c("USA","RUS","CHN")) %>% filter (Height != "NA") %>% group_by(Year,NOC) %>% summarise(height = mean(Height))
#中美俄国男子球类项目历届平均身高
usa_chn_rus_age = athlete %>% filter(Sex == "M") %>% filter(grepl("ball",Sport)) %>% filter(NOC %in% c("USA","RUS","CHN")) %>% filter (Age != "NA") %>% group_by(Year,NOC) %>% summarise(age = mean(Age))
#中美俄国男子球类项目历届平均年龄
t.test(usa_chn_height$height ~ usa_chn_height$NOC)
t.test(usa_chn_age$age ~ usa_chn_age$NOC)
aov(usa_chn_rus_height$height ~ usa_chn_rus_height$NOC)
summary(aov(usa_chn_rus_height$height ~ usa_chn_rus_height$NOC))
aov(usa_chn_rus_age$age ~ usa_chn_rus_age$NOC)
summary(aov(usa_chn_rus_age$age ~ usa_chn_rus_age$NOC))
#为比较是否获奖牌数有显著差异,引入t检验。p值若小于0.05。则拒绝原假设,认为有显著差异。

为了解男子球类运动员获得奖牌数与身高、体重、年龄、参与人数的关系, 计算各国该项目运动员历届平均身高、体重、年龄、参与人数,先对每个单变量关于平均奖牌数运用 lm 函数,得到身高的 p 值为 0.0001542、体重的 p 值为 5.865e-05、年龄的 p 值为 0.01279、参与人数的 p 值为 6.477e-16。因为这四个指标可能会相互影响,所以将这四个指标按照 p 值由小到大的顺序,关于奖牌数用 lm 函数作多变量影响分析,可消除导致差异较大的因素对影响导致较小的因素的影响,得到的结论是只有参与人数有影响显著,线性回归模型为
M=0.4478∗nM= 0.4478*n M=0.4478∗n
其中MMM为奖牌数,nnn为运动员人数。
而年龄关于奖牌数有可能不是线性的关系,尝试作曲线拟合回归,可以看到纵轴截距为 24 左右,且曲线非常平缓,所以认为男子球类项目在 24 岁左右获得奖牌数优势较大。

fit1 = lm(b6$medal ~ b6$height) #单变量线性回归
summary(fit1)
fit2 = lm(b6$medal ~ b6$weight)
summary(fit2)
fit3 = lm(b6$medal ~ b6$age)
summary(fit3)
fit4 = lm(b6$medal ~ b6$ath_m)
summary(fit4)
fit5 = lm(b6$medal ~ b6$ath_m + b6$weight + b6$height +b6$age)   #多变量
summary(fit5)     #发现只有ath_m因子显著
coef(fit4)#估计值
b6library(ggplot2)
fit.lowess=lowess(b6$medal, b6$age)    #年龄关于奖牌数的多项式回归
fit.loess=loess(b6$age~b6$medal, data=b6)
fit.spline=smooth.spline(b6$medal, b6$age)
u = b6$medal
v = b6$age
plot(u, v ,xlab = "average medals of each year",ylab = "average age" )
lines(u,fitted(lm(v~u)) , lty = 2)
lines(lowess(u,v) ,col = "blue" )
lines(u,predict(loess(v~u)),col = "red")
lines(fit.spline ,col = "green")
legend("bottomright", legend=c("lm","lowess","loess","smooth.spline"), col=c("black","blue","red","green"), lty=c(2,1,1,1),lwd = 1)
title("Medal vs Sex")

另外还想对曾经获得过男子球类项目奖牌的国家获的金/银/铜牌进行层次聚类分析,但是奖牌数不太好分类,我就自己定了个标准——获得金/银/铜牌数小于等于25,记作1;在26至50之间(包含50),记作2;大于50的记作3(因为获得金/银/铜牌数的中位数分别为25、25、19)。由此得到30个国家的指标数据的层次聚类分析图

#获得过男子球类项目奖牌的30国金银铜牌聚类分析
male_ball = athlete %>% filter(Sex == "M") %>% filter(grepl("ball",Sport)) %>% group_by(NOC) #各国男子球类项目
gmed = male_ball %>% filter(Medal == "Gold") %>% summarise(sum = n())   #各国金银铜的中位数
median(gmed$sum)
smed = male_ball %>% filter(Medal == "Silver") %>% summarise(sum = n())
median(smed$sum)
bmed = male_ball %>% filter(Medal == "Bronze") %>% summarise(sum = n())
median(bmed$sum)
gold = male_ball %>% filter(Medal == "Gold") %>% summarise(gold = ifelse(n()>25,ifelse(n()>50,3,2),1)) #>50,记作3;26-50,记作2;1-25,记作1
silver = male_ball %>% filter(Medal == "Silver") %>% summarise(silver = ifelse(n()>25,ifelse(n()>50,3,2),1))
bronze = male_ball %>% filter(Medal == "Bronze") %>% summarise(bronze = ifelse(n()>25,ifelse(n()>50,3,2),1))
medal3 =gold %>% left_join(silver) %>% left_join(bronze)
medal3[is.na(medal3)] = 1
medaldf = data.frame(row.names = medal3$NOC , gold=medal3$gold,silver=medal3$silver,bronze=medal3$bronze)
medaldf    #获得过男子球类项目奖牌的30国金银铜牌数表dd=dist(medaldf)
hc=hclust(dd)
plot(hc,hang=-1,cex=.8 )

R数据分析|可视化|dplyr|Kaggle奥运会数据集(二)相关推荐

  1. R数据分析|可视化|dplyr|Kaggle奥运会数据集(一)

    R数据分析|可视化|dplyr|Kaggle奥运会数据集(一) 研究1896年至2016年奥运会运动员的数据集,主要指标有身高.体重.年龄.国籍.参与项目.是否获得金/银/铜牌.通过运用R软件对数据作 ...

  2. 鸢尾花数据集、月亮数据集二分类可视化分析

    鸢尾花数据集.月亮数据集二分类可视化分析 目录 鸢尾花数据集.月亮数据集二分类可视化分析 一.线性LDA算法 1.LDA算法 2.鸢尾花数据集 2.月亮数据集 二.K-Means算法 1.K-Mean ...

  3. 数据集收集-包含《COVID-19》,《英国在线零售业务》,《电商行业用户行为分析数据集》,《电商婴儿用户》,《亚马逊手机》等17个数据集,用于数据分析挖掘,kaggle比赛练习

    COVID-19数据集 本数据集记录了2019年12月01日至2020年7月24日,每日精确到国家.省.市的确诊.疑似.治愈.死亡人数.2020年02月07后数据从今日头条接口采集,每小时57分自动更 ...

  4. 基于Kaggle心脏病数据集的数据分析和分类预测-StatisticalLearning统计学习实验报告

    基于Kaggle心脏病数据集的数据分析和分类预测-StatisticalLearning统计学习实验报告 一.实验准备 本数据来源于kaggle,包含14个维度,303个样本,具体的变量说明如下表所示 ...

  5. R语言使用dplyr包基于因子变量(factor)将原dataframe拆分为每一个因子对应的单独数据集dataframe实战

    R语言使用dplyr包基于因子变量(factor)将原dataframe拆分为每一个因子对应的单独数据集dataframe实战 目录

  6. ML之FE:利用FE特征工程(单个特征及其与标签关系的可视化)对RentListingInquries(Kaggle竞赛)数据集实现房屋感兴趣程度的多分类预测

    ML之FE:利用FE特征工程(单个特征及其与标签关系的可视化)对RentListingInquries(Kaggle竞赛)数据集实现房屋感兴趣程度的多分类预测 目录 输出结果 设计思路 核心代码 输出 ...

  7. 2020东京奥运会数据集echarts可视化分析

    1.数据集的下载 2021 Olympics in Tokyo | Kaggle 部分数据集的内容如下 2.金牌榜前10名 <!DOCTYPE html> <html> < ...

  8. (!详解 Pytorch实战:①)kaggle猫狗数据集二分类:加载(集成/自定义)数据集

    这系列的文章是我对Pytorch入门之后的一个总结,特别是对数据集生成加载这一块加强学习 另外,这里有一些比较常用的数据集,大家可以进行下载: 需要注意的是,本篇文章使用的PyTorch的版本是v0. ...

  9. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

最新文章

  1. 前沿速递:因果涌现在多种因果衡量标准下普遍存在
  2. python多线程和多进程的区别_python中多线程与多进程的区别
  3. 顺序表的基本操作实验报告_INDIRECT函数从入门到进阶之相同顺序跨表引用
  4. ASP.Net 获取服务器信息
  5. Provisioning Services 7.8 入门系列教程之四 目标设备安装
  6. 在MVC中使用泛型仓储模式和依赖注入实现增删查改
  7. 元素周期表排列的规律_化学元素周期表为什么这样排列,是按照什么规律
  8. 什么是云计算,云计算的基本原理是什么?
  9. 全新体验的飞冰 2.0 正式发布
  10. Flash在线编程构件的使用
  11. Mendix开发不卡壳之 Scheduler Event定时任务使用
  12. pr2020lut导入_pr lut预设怎么安装-PR下导入lut预设的方法 - 河东软件园
  13. SQL之ignore关键字
  14. 关于程序员学习的一些想法
  15. java sql 工资管理,企业工资管理系统(Java+MySQL)Word版
  16. 各种加工方法下的粗糙度范围
  17. 自定义excel表格(生成报价单,含多种excel样式调整)
  18. 建立高效的测试团队 (转自关河)
  19. Torchlight(火炬之光)特效实现
  20. java libvirt,libvirt介绍和使用

热门文章

  1. 终于把鸿蒙说明白了,关于安卓系统、AOSP(安卓开源项目)和鸿蒙系统比较
  2. MySQL分组统计及占比分析的方法实现
  3. 数字之暖:鹅厂云原生的“新路”与“历承”
  4. OP320A 文本显器生产方案 另有源码原理图 兼容OP320A MD204L
  5. 关于C++课设————物流信息管理系统的源码
  6. ubuntu22下,笔记本电脑自带的鼠标滚轮不能使用的解决方法
  7. 十分钟智商运动 李永乐 有趣的数学 待补充
  8. LIP解决轨迹相似度问题(java解决,附代码)
  9. 尚硅谷 张天禹老师vue2笔记(方便自己查阅)
  10. echart 扇形图,玫瑰图配置说明