用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 条评论
登录 后参与评论

相关文章

来自专栏量化投资与机器学习

【机器学习】缠论中的线性回归(附Python源码)

? 来自聚宽:韭菜Hulk的精彩之作 博客连接:https://www.joinquant.com/post/427 缠论是寻找股价走势中的拐点,然后去根据拐...

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

使用R语言构造投资组合

原作者: 邓一硕 来自: 格物堂 构造投资组合是金融投资分析中历久弥新的问题。多年以来,学界、业界提出诸多对投资组合进行优化的方法。比如,最经典的基于收益率均...

3726
来自专栏数说工作室

面板数据与Eviews操作指南(上)

假想,你现在需要分析2000-2014年,全国34个省级行政区基础建设投资对GDP的影响分析,或者说构建回归模型: GDP = a × 基础建设投资额 + e ...

3164
来自专栏AI科技大本营的专栏

数据科学家线性规划入门指南

前言 生活之道在于优化。每个人拥有的资源和时间都是有限的,我们都想充分利用它们。从有效地利用个人时间到解决公司的供应链问题——处处都有用到优化。 优化还是一个有...

3697
来自专栏深度学习之tensorflow实战篇

python 实现数据降维推荐系统(附Python源码)

主成分分析原理:请点击PCA查看 #!usr/bin/env python #_*_ coding:utf-8 _*_ import pandas as pd ...

3514
来自专栏数据科学与人工智能

【数据挖掘】数据挖掘 特异群组挖掘的框架与应用

特异群组挖掘在证券金融、医疗保险、智能交通、社会网络和生命科学研究等领域具有重要应用价值。特异群组挖掘与聚类、异常挖掘都属于根据数据对象的相似性来划分数据集的数...

23410
来自专栏携程技术中心

个性化推荐沙龙 | 饿了么推荐系统的从0到1(含视频)

本文来自陈一村在携程个性化推荐与人工智能Meetup上的分享。 陈一村 ,饿了么数据运营部资深算法工程师。2016年加入饿了么,现从事大数据挖掘和算法相关工作,...

3618
来自专栏人工智能头条

饿了么推荐系统:从0到1

1345
来自专栏灯塔大数据

手把手带你进入TOP20的商超销售预测

介绍 如果说学习数据科学的最佳途径是什么——就是解决实际问题或亲自参与数据科学项目。因为只有当自己动手解决问题时,你才真正开始学习数据科学。 “商超销售预测”...

2534
来自专栏听雨堂

地图知识-坐标网

地理坐标网(经纬网)   为了制作和使用地图的方便,高斯-克吕格投影的地图上绘有两种坐标网:地理坐标网和直角坐标网。   在我国1:1万-1:10万地形图上...

1808

扫描关注云+社区