用R语言分析《我是歌手》出场顺序与名次的关系

上周《我是歌手》吵吵闹闹地落幕了,这一季是我最关注的一季,很认真的从头看到尾。网上各种讨论,特别反感那些说看到谁谁谁就不想看了的说法,其实单纯地去听他们的歌声,会觉得即使是之前不看好的那些歌手都能给你很多惊喜和感动。以前对清华哥哥的印象是歌都很好听,但是自己唱不红,翻唱都会变红啊,现在喜欢上他的声音了啊!不管这个节目有没有什么内部操作黑幕,单纯听他们的歌还是挺好的。当然,这篇文章的主旨不在此,我们要看的如题《我是歌手》节目中,出场顺序和名词的关系。关系肯定是有的,节目里自己都说到了,出场顺序很重要,这里我想用R来尝试分析这其中的细节关系。

数据是三季我是歌手除去突围赛半决赛总决赛的其余场次歌手们的出场顺序和名次,以及得票率(部分场次没有具体的得票率记为NA),一共31场,31*7=217行数据。基本数据结构如下:

数据可以查看到基本内容如下:

singerData <-read.table("clipboard",header=T)
head(singerData,n=5)

1.       出场顺序与名次的数量关系

先把所有三季数据按出场顺序及排名做一个简单的统计:

table(data.frame(order=singerData$order,rank=singerData$rank))

都是数字,看起来很无感,试试用气泡图来看这个结果呢?

order.rank <-data.frame(a=c(rep(1,7),rep(2,7),rep(3,7),rep(4,7),rep(5,7),rep(6,7),rep(7,7)),b=c(rep(1:7,7)))
for(i in 1:7){
         for (j in 1:7) {
                   order.rank$c[(i-1)*7+j] <-table(data.frame(order=singerData$order,rank=singerData$rank))[i,j]
         }
}

symbols(order.rank$a,order.rank$b,order.rank$c,inches=0.40,bg="lavender",xlab="Singers'Order",ylab="Singers' Rank")

这个图好像也没有太多的很直观的信息,但是大概能看出来数据比较集中在从点(1,7)到点(7,1)这条线的周边。

2.       每一出场顺序下的平均名次

这里把算出每个出场次序的平均名次算出后,用折线图展示出来。

order.avgRank <- data.frame(order=1:7)
for(i in1:7){
order.avgRank$avgRank[i] <-mean(singerData$rank[singerData$order==i])
}
plot(order.avgRank$order,order.avgRank$avgRank,type="l",xlab="Singer'Order",ylab="Average Rank")

这个图就能很明显的看出来歌手最终的名次与其出场顺序存在近似负相关的关系。看看每一季的结果是不是都类似呢?

season.order.avgRank<- data.frame(s1=numeric(0),s2=numeric(0),s3=numeric(0))
for(i in1:3){
         for(j in 1:7){
                   season.order.avgRank[j,i]<-mean(singerData$rank[singerData$season==i&singerData$order==j],na.rm=TRUE)
         }
}

season.order.avgRank
matplot(season.order.avgRank,type="o",col=1:3,lty=1:3)
legend(5.5,5.5,c("第一季","第二季","第三季"),col=1:3,lty=1:3)

三季我是歌手,出场次序跟名次的关系,第一季第二季其实不是很明显,第三季有一个很明显的近似负相关的关系。

换个方式,查看得票率和出场次序的关系。

season.order.avgRate <-data.frame(s1=numeric(0),s2=numeric(0),s3=numeric(0))
for(i in 1:3){
         for(j in 1:7){
                   season.order.avgRate[j,i]<-mean(singerData$percentage[singerData$season==i&singerData$order==j],na.rm=TRUE)
         }
}
season.order.avgRate
matplot(season.order.avgRate,type="o",col=1:3,lty=1:3)
legend(1,19,c("第一季","第二季","第三季"),col=1:3,lty=1:3)

其实不用看就可以想象,跟名次与出场顺序的关系类似,肯定是第三季的特征会比较明显。这说明什么?第三季的观众比较不理智?第三季的歌手水平比较接近,所以观众才会屈从最直接的感受?请自行想象猜测!

3.       线性回归方式尝试找出其中关系

在第一部分气泡图的基础上做。

symbols(order.rank$a,order.rank$b,order.rank$c,inches=0.40,bg="lavender",xlab="Singers'Order",ylab="Singers' Rank")

model=lm(rank~order,data=singerData)
abline(model,lty=1,col=2)
summary(model)

得到的回归方程式:rank = 4.74194-0.18799*order

Residuals:残差,上面给出了残差的最大值、最小值、中位数、上四分位数、下四分位数,可以看出符合正态分布。

Coefficients:系数,Estimate是预测的系数上面是截距,下面是斜率。

Residual standarderror:标准残差

Multiple R-squared :R^2值

Adjusted R-squared:调整R^2值,跟R^2值一样都是在0-1的范围内,越接近1表明这个模型可参考价值越大,越接近0表示可参考价值越小。

F-statistic:F统计量

p-value:p值

从模型的统计量能够看出,这个方程参考价值很低,不是一个很显著的线性模型。

4.       歌手的平均得票率

这里是把歌手的平均得票率计算出来,求其平均得票率,可以看出哪个歌手的整体表现比较好。与主题无关,只是一个小的统计。结果可以看到,林志炫稳居榜首,所以?你自己领会就好!

singers <-unique(singerData$singer)
avgRate <- numeric(0)
for(i in 1:length(singers)){
    avgRate[i] <-mean(singerData$percentage[singerData$singer==singers[i]],na.rm=TRUE)
}
singersAvgRate <-data.frame(singers=singers,avgRate=avgRate)
singersAvgRate <- singersAvgRate[order(-singersAvgRate[,2]),]
fix(singersAvgRate)

有任何问题和建议欢迎指出,转载请注明出处,谢谢!

时间: 2024-10-08 11:41:07

用R语言分析《我是歌手》出场顺序与名次的关系的相关文章

用R语言分析詹姆斯的客场得分

篮球小皇帝--勒布朗·詹姆斯(LeBron James), 1984年12月30日出生在美国·俄亥俄州·阿克伦,美国男子职业篮球运动员,司职小前锋,现效力于克利夫兰骑士队. 勒布朗·詹姆斯在2003年的NBA选秀大会中,首轮第一顺位被克利夫兰骑士队选中.2003-2010年,詹姆斯在骑士队效力7年,期间获得两届NBA最有价值球员(MVP).2010年转会至迈阿密热火队,与德怀恩·韦德.克里斯·波什组成"三巨头"阵容. 现在,用R语言来分析詹姆斯(LBJ)与哪个球队相遇时,表现得最好.先

R语言分析(一)-----基本语法

  一, R语言所处理的工作层: 解释一下: 最下面的一层为数据源,往上是数据仓库层,往上是数据探索层,包括统计分析,统计查询,还有就是报告 再往上的三层,分别是数据挖掘,数据展现和数据决策. 由上图可知,R语言是可以用于数据挖掘,数据展现,而后领导根据展现的数据来决策,R语言在数据展现的方面,拥有很强大的功能. 二,R语言的数据结构: 包括如下的几项:包括向量,矩阵,数组,数据框,列表和因子 1,向量: 创建向量的方法一共有三种,分别如下: 第一种,使用c()的这个方法: 由于博客中木有R语言

用R语言分析我的fitbit计步数据

目标:把fitbit的每日运动记录导入到R语言中进行分析,画出统计图表来 已有原始数据:fitbit2014年每日的记录电子表格文件,示例如下: 日期 消耗卡路里数 步 距离 攀爬楼层数 久坐不动的分钟数 不太活跃分钟数 中度活跃分钟数 非常活跃分钟数 2014年4月27日 2736 16581 11.84 7 1111 131 117 81 2014年4月28日 2514 12622 9.01 6 910 136 59 76 2014年4月29日 2231 8357 5.97 9 1208 1

R语言分析nginx日志

nginx日志举例 172.16.1.1 - - [04/Feb/2015:23:40:01 +0800] "POST /api/message/query HTTP/1.1" 200 52 "-" "Apache-HttpClient/4.2 (java 1.5)" "-" "message.test.com" "172.16.3.159" "-" "0.

[R语言]关联规则1---不考虑items之间的时序关系

本文介绍的是关联规则,分为两部分:第一部分是---不考虑用户购买的items之间严格的时序关系,每个用户有一个“购物篮”,查找其中的关联规则.第二部分--- 考虑items之间的严格的时序关系来分析用户道具购买路径以及关联规则挖掘.此文为第一部分的讲解.(本文所需的代码和数据集可以在这里下载.) 关联规则最常听说的例子是“啤酒与尿布”:购买啤酒的用户通常也会购买尿布.在日常浏览电商网站时也会出现“购买该商品的用户还会购买….”等提示,这其中应用的就是关联规则的算法. 本文重点讲解的是关联规则的R

R语言分析南京房价

**################################################# 本项目分析南京房价数据,数据来源:链家网 autho:owl 前言:本文利用网上爬取的南京二手房信息,利用R进行简单分析,数据做仅学习研究练习用,侵删 首先读取数据,数据为.csv格式 houseprice = read.csv("E:/houseprice.csv",stringsAsFactors = F) View(head(houseprice,30)) str(housep

R语言分析(二)——薛毅R语言第二章后面习题解析

包括2.2—2.6中间的习题,2.2的习题中第三问和第四问,应该有其他的解答方法,但我看他的题目,似乎是在A和B的基础上进行,所以就选择了使用for循环的方法 做着习题,又不断查着书,这样,书籍也熟悉了,习题也做完了,感觉特别爽的还是... 解答:上面题目中第二小问是个错误的,改写成D=A ,才有下面的答案 (1)(2)(3): (4): (5): 2.3题答案: 2.4题答案: 2.5题的答案: 完成的答案如下图所示: 1,生成纯文本和csv,并读取 2,使用excel打开生成的csv

R语言重要数据集分析研究——需要整理分析阐明理念

1.R语言重要数据集分析研究需要整理分析阐明理念? 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候如何下手分析,数据分析的第一步,探索性数据分析. 统计量,即统计学里面关注的数据集的几个指标,常用的如下:最小值,最大值,四分位数,均值,中位数,众数,方差,标准差,极差,偏度,峰度 先来解释一下各个量得含义,浅显就不说了,这里主要说一下不常见的 众数:出现次数最多的 方差:每个样本值与均值的差得平方和的平均数 标准差:又称均方差,是方差的二次方根,用来衡量一个数据集的集中性 极差:最大值

大数据时代的精准数据挖掘——使用R语言

老师简介: Gino老师,即将步入不惑之年,早年获得名校数学与应用数学专业学士和统计学专业硕士,有海外学习和工作的经历,近二十年来一直进行着数据分析的理论和实践,数学.统计和计算机功底强悍. 曾在某一世界500强公司核心部门担任高级主管负责数据建模和分析工作,在实践中攻克统计建模和数据分析难题无数,数据处理与分析科学精准,在实际应用中取得良好的效果. Gino老师担任数据分析培训师多年,探索出一套以实例讲解带动统计原理理解和软件操作熟悉的方法,授课的学生能迅速理解统计原理并使用统计软件独立开展数