观点 数学

神烦游戏:给你一张散点图,猜猜相关是多少

统计 相关系数 guess the correlation

Ed Yong 发表于  2016-04-03 10:38

(Amelia/编译)在开始玩“猜相关”之前,我从没想过自己会把复活节假期的一小时花在沉迷一个8比特游戏上,更不用说它还是个关于许多科学家的日常工作的游戏了。同样,我也从未想过自己会沦陷于一张张黑点组成的图形中,力图准确地估计出这些黑点背后隐藏的规律,从而获得分数、荣登游戏排行榜。而且我也绝对没有指望过这件事会很好玩。

“猜相关”是奥马尔•瓦基(Omar Wagih)的智力结晶,他是欧洲生物信息研究所的一位研究生,并且是我的(曾经是闲暇)时间的邪恶吞噬者。这个游戏文字描述起来极端无聊,然而一旦开玩就根本停不下来。不信试试看。

游戏中,玩家会看到许多散点图——一种用于展示两事物间关系的常见图表,它反应的可能是气温和冰淇淋销量的关系,或者是体重和心脏病患病风险的关系,也可能是你花在这个邪恶游戏上的时间和你朋友数量的关系。你需要做的就是盯着这些散点图看,并估计出一个被称作R值的值,R体现了两事物间的相关性。在这个游戏中,R的取值范围是0(完全没有相关性)到1(完美的正相关)。

先来复习一下不同R(相关系数)对应的散点图。图片来源:Omar Wagih

通过观察散点图来判断事物之间的相关性是科学家们一直在做的事。在游戏过程中,我发现这件事出乎意料地困难。强相关(比如当R大于0.8时)十分明显,因为点都排成了一条干净的斜线。类似地,弱相关(当R小于0.2时)的图形看起来就像盲人射手练习射击后的靶子。然而,在这两者之间还存在着巨大的中间地带,我的判断力通常在这里戏剧般地下线——这也正是瓦基设计这个游戏的初衷。

去年十二月,瓦基参加了一场研讨会,会上,一位发言人展示了一张散点图,并断言这其中存在相关性。“它看起来,你知道,并不是怎么相关,”瓦基说。“我就想,我应该把他的话当真么?之后,他给我看了R值,R值显示这其中确实存在相关性,而我低估了散点图中的信息。我意识到会这样做的人可能不只我一个。”

他找到了几个可以随机生成散点图猜R值的网站,但“这些网站都很无聊,”他说,“完全没有动力驱使你继续下去。就这样,我产生了做个游戏的想法。”

游戏机制非常简单,由极简主义的设计和怀旧音乐实现。猜一连串散点图的R值,差太多会丢一条命,猜很准可以奖励一条命。比较好的估计可以为你赢得金币,这会计入你的最终得分。你甚至可以和朋友比赛。这就是这个游戏的全部。

为了展示游戏界面开了游戏,一上手就丢命_(:з」∠)_图片来源:guessthecorrelation.com

瓦基于去年12月上线了这个游戏,并将每个玩家的估计数据收集成了一个数据库。他打算分析这些数据,来看看蒙蔽人们的散点图中是否存在着某些视觉因素,让人们高估或者低估相关性。“这种事以前就有人做过,但现在的重点在于我有庞大的数据,”他说。其他的研究一般仅涉及几十个志愿者和几千个估计值。但到今年三月中旬,瓦基已拥有17万名注册玩家和一个有着超过400万估计值的数据库。

“我想设计一个更复杂的游戏,更让人上瘾的,”瓦基说(上帝啊饶了我吧)。他打算增加难度等级,改变散点的数量或大小(求放过!)。“我想做出一个你无聊时会在手机上玩的主流游戏,这样你就不会意识到自己是在猜相关性,并且在给这个研究课题做出贡献。”(快住手!!)

 “我自己玩这个游戏的时间已经比我应该投入得多了,”他补充道。“我会坐在朋友身边,看他们输入答案,然后说‘不对,不对,是0.72’。他们不相信我,但我的答案往往更加接近。”

除了看别人猜相关之外,他的经历证明这个游戏作为训练工具,有着提高研究者判断相关性能力的潜力。“这是首要的目的,”瓦基说。“我几乎每天都会接触到这样的散点图,可能是我自己的,也可能是我读到的论文里的。如果它能训练你下意识辨认出散点图中对相关性有贡献的结构或特征,这会非常有用。”

可视化能帮助我们理解大量数据,但它们仍然有着自身的缺陷,可能会让人们误入歧途。信息是美丽的,但美丽本身也有欺骗性。“作为一个研究者,你要阅读大量文献,在很多情况下,你只会看图,而不会看文字。”他说。“你看见了一张图——甚至可能是你自己的图——然后据此做出了某种判断。与一般人所想的相反,人们并不怎么擅长这件事。而我已经有了数据来证明这一点。”(编辑:Stellasun)

编者注:想提高一下游戏表现吗?试试@Lyroat 的攻略《一个神烦的游戏……》吧!(回复有福利)

编译来源

The 8-Bit Game That Makes Statistics Addictive

热门评论

  • 2016-04-03 13:45 Ancel_

    表示上初二根本不知道啥叫什么相关只看一次这么一篇文章就玩到181、、

    [4] 评论

显示所有评论

全部评论(27)
  • 1楼
    2016-04-03 10:42 Nightenstar

    停不下来了,真的。

    [1] 评论
  • 2楼
    2016-04-03 11:54 大瞌睡虫TC

    一开始觉得不算太烦,后面上一次两百分不想停了。

    [0] 评论
  • 3楼
    2016-04-03 13:04 天降龙虾

    这是要把人脑训练成计算机的节奏么??????

    [2] 评论
  • 4楼
    2016-04-03 13:37 Ancel_

    上来就蒙这么准

    [1] 评论
  • 5楼
    2016-04-03 13:45 Ancel_

    表示上初二根本不知道啥叫什么相关只看一次这么一篇文章就玩到181、、

    [4] 评论
  • 6楼
    2016-04-03 13:52 年迈的青春痘

    31分。。

    来自果壳Microhard客户端
    [0] 评论
  • 7楼
    2016-04-03 14:35 执着的爱情
    引用@一马当先361 的话:表示上初二根本不知道啥叫什么相关只看一次这么一篇文章就玩到181、、

    你神了,这是高一数学的内容,你已经超纲了。。。。。。

    [1] 评论
  • 8楼
    2016-04-03 14:40 Nightenstar
    引用@执着的爱情 的话:你神了,这是高一数学的内容,你已经超纲了。。。。。。

    表示上6年级已经学到大学知识了。。。orz

    [2] 评论
  • 9楼
    2016-04-03 17:27 we_cry 空间信息与数字技术专业

    35

    来自 果壳的壳
    [0] 评论
  • 10楼
    2016-04-03 18:39 the.angel.of.death

    似乎也沒那麼難 隨便玩兩把就有100分嘍

    [0] 评论
  • 11楼
    2016-04-03 20:15 苗方方

    那还要计量来干嘛,大家毛估估算了....

    [0] 评论
  • 12楼
    2016-04-04 08:18 舞水端

    用计算机拟合不就好了

    [1] 评论
  • 13楼
    2016-04-04 08:38 峨眉月

    欸,怎么,开挂的帖子,删了?

    this.xydata[0].r

    [0] 评论
  • 14楼
    2016-04-04 09:03 __泡面蟹__
    引用@峨眉月 的话:欸,怎么,开挂的帖子,删了?this.xydata[0].r


    不是一个帖子

    另外这个方法并不优雅~

    还是看这个~

    function g()
    {
      var svgpoints = document.getElementsByClassName('nv-point');
      var lenArr = svgpoints.length;
      var xArr = Array(lenArr),
      yArr = Array(lenArr),
      sigXY,
      sigXVar,
      sigYVar,
      xavg,
      yavg,
      stdX,
      stdY,
      rXY,
      rXY2;
      var sumx = 0,
      sumy = 0;
      for (var i = 0; i < lenArr; i++)
      {
        var tf = svgpoints[i].getAttribute('transform');
        var sparr = tf.split(',');
        xArr[i] = Number(sparr[0].replace('translate(', ''));
        yArr[i] = Number(sparr[1].replace(')', ''));
        sumx = sumx + xArr[i];
        sumy = sumy + yArr[i];
      }
      xavg = sumx / lenArr;
      yavg = sumy / lenArr;
      sigXY = 0;
      sigXVar = 0;
      sigYVar = 0;
      stdX = 0;
      stdY = 0;
      for (var j = 0; j < lenArr; j++)
      {
        sigXY = sigXY + ((xArr[j] - xavg) * (yArr[j] - yavg));
        sigXVar = sigXVar + ((xArr[j] - xavg) * (xArr[j] - xavg));
        sigYVar = sigYVar + ((yArr[j] - yavg) * (yArr[j] - yavg));
      }
      stdX = Math.sqrt(sigXVar);
      stdY = Math.sqrt(sigYVar);
      rXY = sigXY / (stdX * stdY);
      rXY2 = Math.abs(Math.round(rXY * 100) / 100);
      document.getElementById('guess-input').value = rXY2.toString();
    }
    setInterval(g, 50);
    
    [0] 评论
  • 15楼
    2016-04-04 09:13 __泡面蟹__

    带采样的版本请将j++替换为j=j+Math.round(Math.random()*2) LOL

    [0] 评论
  • 16楼
    2016-04-04 09:36 馍夹饼子

    求windows phone版下载地址。

    [0] 评论
  • 17楼
    2016-04-04 11:13 繁乱
    引用@Nightenstar 的话:表示上6年级已经学到大学知识了。。。orz
    六年级。。。。高一是大学??高中好伐


    [0] 评论
  • 18楼
    2016-04-04 13:01 点赞狂魔荆哲
    引用@苗方方 的话:那还要计量来干嘛,大家毛估估算了....

    是为了锻炼人们对于“相关系数”这么一个抽象的量的直觉。理解一个概念,计算固然不能缺,但是有直觉会好理解很多。

    [1] 评论
  • 19楼
    2016-04-04 14:11 昂拉克
    引用@馍夹饼子 的话:求windows phone版下载地址。

    网页,直接打开就好了

    来自 果壳的壳
    [0] 评论
  • 20楼
    2016-04-04 18:44 Meng美汐

    上一百了!!

    [0] 评论
  • 21楼
    2016-04-04 20:04 Nightenstar
    引用@繁乱 的话:

    F(1,8)x^3DX

    比如这种。。。

    [0] 评论
  • 22楼
    2016-04-04 20:27 Blueing

    为什么电脑上看链接没了。。。

    [0] 评论
  • 23楼
    2016-04-05 14:07 笑问苍天

    关键就是

    瞎JB猜


    [0] 评论
  • 24楼
    2016-04-05 19:27 Cedary

    加个这种就可以刷分了 233

    [0] 评论
  • 25楼
    2016-04-07 19:03 Lastkeyword

    次数多了就渐渐能找到点规律,然而还是只有这点分数

    [0] 评论
  • 26楼
    2016-04-08 14:48 子隐于斯

    [0] 评论
  • 27楼
    2016-04-28 00:40 赵明毅

    唔,当初玩的时候还好,倒是没想到这背后居然有___________

    23333333333333333

    [0] 评论

显示所有评论

你的评论

登录 发表评论

Ed Yong
Ed Yong Ed Yong是科学作家,著名科普博客Not Exactly Rocket Science的博主。

更多科研事,扫码早知道

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2015] 0609-239号    新出发京零字东150005号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区