请选择 进入手机版 | 继续访问电脑版
楼主: Mirror..
5189 7

[其他] 用R语言分析《我是歌手》出场顺序与名次的关系 [推广有奖]

院士

21%

还不是VIP/贵宾

-

威望
1
论坛币
67318 个
通用积分
10.1197
学术水平
502 点
热心指数
518 点
信用等级
460 点
经验
42826 点
帖子
2409
精华
2
在线时间
716 小时
注册时间
2014-11-10
最后登录
2019-4-21

初级学术勋章 初级热心勋章 中级学术勋章

Mirror.. 在职认证  发表于 2015-4-7 14:36:26 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
上周《我是歌手》吵吵闹闹地落幕了,这一季是我最关注的一季,很认真的从头看到尾。网上各种讨论,特别反感那些说看到谁谁谁就不想看了的说法,其实单纯地 去听他们的歌声,会觉得即使是之前不看好的那些歌手都能给你很多惊喜和感动。以前对清华哥哥的印象是歌都很好听,但是自己唱不红,翻唱都会变红啊,现在喜 欢上他的声音了啊!不管这个节目有没有什么内部操作黑幕,单纯听他们的歌还是挺好的。当然,这篇文章的主旨不在此,我们要看的如题《我是歌手》节目中,出 场顺序和名词的关系。关系肯定是有的,节目里自己都说到了,出场顺序很重要,这里我想用R来尝试分析这其中的细节关系。
    数据是三季我是歌手除去突围赛半决赛总决赛的其余场次歌手们的出场顺序和名次,以及得票率(部分场次没有具体的得票率记为NA),一共31场,31*7=217行数据。基本数据结构如下:
R1.png

数据可以查看到基本内容如下:
[plain] view plaincopy

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

1. 出场顺序与名次的数量关系
    先把所有三季数据按出场顺序及排名做一个简单的统计:
[plain] view plaincopy

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

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

  • 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")
R4.png

这个图好像也没有太多的很直观的信息,但是大概能看出来数据比较集中在从点(1,7)到点(7,1)这条线的周边。
    2.  每一出场顺序下的平均名次
    这里把算出每个出场次序的平均名次算出后,用折线图展示出来。
[plain] view plaincopy

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

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

  • 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)
R6.png

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

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

[plain] view plaincopy

  • 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)
R7.png

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

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

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

[plain] view plaincopy

  • 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)
R8.png

R9.png

得到的回归方程式: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

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

RR0.png

有任何问题和建议欢迎指出,转载请注明出处,谢谢!
    原文链接:http://blog.csdn.net/cl114301596 ... ?utm_source=tuicool









二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:我是歌手 R语言 Singer plain RData 文章 哥哥 歌声 清华 网上

只想做一个勤勤恳恳的搬运工
esprenaza 发表于 2015-4-8 21:32:39 |显示全部楼层 |坛友微信交流群
。。。。。太nB了

使用道具

王折腾 发表于 2015-4-12 11:51:38 |显示全部楼层 |坛友微信交流群
楼主厉害

使用道具

syfzxy 发表于 2015-4-12 14:07:00 来自手机 |显示全部楼层 |坛友微信交流群
我去,厉害啊

使用道具

Mirror.. 在职认证  发表于 2015-4-13 08:02:58 |显示全部楼层 |坛友微信交流群
syfzxy 发表于 2015-4-12 14:07
我去,厉害啊

使用道具

厉害!!

使用道具

Mirror.. 在职认证  发表于 2015-4-14 10:32:50 |显示全部楼层 |坛友微信交流群
ゞ倒转de沙漏 发表于 2015-4-13 16:35
厉害!!

使用道具

是月中不是肿 发表于 2018-12-11 13:55:32 来自手机 |显示全部楼层 |坛友微信交流群
厉害厉害

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-17 04:53