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

《我是歌手》吵吵闹闹地落幕了,总决赛这一季是我最关注的一季,很认真的从头看到尾。当然,这篇文章的主旨不在此,我们要看的如题《我是歌手》节目中,出场顺序和名词的关系。关系肯定是有的,节目里自己都说到了,出场顺序很重要,这里我想用R来尝试分析这其中的细节关系。

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

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

[plain] view plaincopy

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

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

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

[plain] view plaincopy

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

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

[plain] view plaincopy

  1. 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)))
  2. for(i in 1:7){
  3. for (j in 1:7) {
  4. order.rank$c[(i-1)*7+j] <-table(data.frame(order=singerData$order,rank=singerData$rank))[i,j]
  5. }
  6. }
  7. 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. 每一出场顺序下的平均名次

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

[plain] view plaincopy

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

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

[plain] view plaincopy

  1. season.order.avgRank<- data.frame(s1=numeric(0),s2=numeric(0),s3=numeric(0))
  2. for(i in1:3){
  3. for(j in 1:7){
  4. season.order.avgRank[j,i]<-mean(singerData$rank[singerData$season==i&singerData$order==j],na.rm=TRUE)
  5. }
  6. }
  7. season.order.avgRank
  8. matplot(season.order.avgRank,type="o",col=1:3,lty=1:3)
  9. legend(5.5,5.5,c("第一季","第二季","第三季"),col=1:3,lty=1:3)

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

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

[plain] view plaincopy

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

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

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

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

[plain] view plaincopy

  1. symbols(order.rank$a,order.rank$b,order.rank$c,inches=0.40,bg="lavender",xlab="Singers'Order",ylab="Singers' Rank")
  2. model=lm(rank~order,data=singerData)
  3. abline(model,lty=1,col=2)
  4. 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. 歌手的平均得票率

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

[plain] view plaincopy

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

原文发布于微信公众号 - 大数据挖掘DT数据分析(datadw)

原文发表时间:2016-01-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大数据文摘

英国科学期刊选出了世界上最美丽的10个公式

1493
来自专栏CSDN技术头条

MIT牛人梳理脉络详解宏伟现代数据体系

在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。 【为什么要深入数学的世界】 作为计算机的学生,我没有任...

19310
来自专栏大数据文摘

用递归神经网络,撰写一份特朗普式发言稿!

特朗普充满个人特色的语言风格让作者产生了兴趣,如果把他的推文和演讲稿都用于训练数据,再运用递归神经网络能否生成一份有特式风格的发言稿呢?结论是,如果数据和算力足...

832
来自专栏大数据文摘

学界 | Ian Goodfellow推特小课堂又开课啦:数学求导的小技巧

1784
来自专栏大数据挖掘DT机器学习

R语言-中国各城市PM2.5数据间的相关分析

中国各城市PM2.5数据间的相关分析 相关分析(correlation analysis)是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相关...

6684
来自专栏华章科技

MIT牛人解说数学体系

导读:本文为深度学习和计算机科学大牛林达华教授在MIT攻读博士学位时梳理总结的数学体系介绍。

831
来自专栏PPV课数据科学社区

“数学之美”系列七:信息论在信息处理中的应用

我们已经介绍了信息熵,它是信息论的基础,我们这次谈谈信息论在自然语言处理中的应用。 先看看信息熵和语言模型的关系。我们在系列一中谈到语言模型时,没有讲如何定量地...

3699
来自专栏专知

2018年世界计算机学者论文单天引用次数最新排行榜!深度学习三巨头领衔

【导读】在Yoshua Bengio的主页下面公布了2018年世界计算机学者论文单天引用次数最新排行榜!深度学习三巨头领衔,其中Yoshua Bengio排20...

1711
来自专栏大数据文摘

概率的意义:随机世界与大数法则

2034
来自专栏AI研习社

Mercari Price 比赛分享 —— 语言不仅是算法和公式而已

最近半年一直在忙于各种NLP比赛,除夕因为kaggle的price写到凌晨3点,最后靠rp爬回季军,也算圆了一个solo gold的梦想。这应该是我2017下半...

43212

扫码关注云+社区