书接上文 kaggle 上非常有意思的案例 利用python探索NBA球员统计数据与RPM(Real Plus Minus)之间的关系,可以完整重复出原文的代码,接下来简单记录自己用R语言重复出的部分结果。原文提出的问题是NBA球员的防守表现是否比进攻表现更适合预测球员的RPM(Real Plus Minus)
首先读入数据,原文数据格式为csv,直接用read.csv()函数读入,读入后用dim()和head()函数简单查看一下数据
接下来用散点图和拟合曲线初步探索一下球员上场时间和RPM之间的关系
代码
基于拟合曲线可以看出上场时间越长,RPM值越高,然后用线性回归评估一下这种关系的强弱。
Adjusted R-squared: 0.4687,可以看出上场时间和RPM值之间的相关性较弱,所以上场时间不是预测球员RPM值得最好指标,下一步绘制基于球员场上位置分组的球员出场时间和RMP值得散点图,看一下是否可以提供额外的信息
通过图片可以看到数据分成了六组,篮球的球员只有5个位置呀,原来是有的大前锋可能会偶尔客串一下中锋(也可能是中锋偶尔可能会客串一下大前锋),不管那么多统一将PF-C改成PF,这里用到了gsub()函数,然后在修改一下绘图细节,结果如下
代码
通过这张散点图可以看出一个非常有意思的现象:RPM值比较高的第一梯队中几乎没有得分后卫,组织后卫和小前锋居多,这应该是现在NBA小球潮流的一个特征,也可以说现在的NBA是一个得分后卫凋零的时代,虽然哈登MVP的呼声一直很高,也会经常砍下爆炸的数据(比如前些天的60+三双),但毕竟一花开放不是春(个人还是非常喜欢汤神的,但是这个赛季汤神为了球队应该是牺牲了不少个人的数据),真的是非常怀念 西科东艾 北卡南麦 四大得分后卫的时代。我们看一下RMP值较高的第一梯队都有谁吧
出场时间大于25分钟而且RPM值大于10的总共有19位,全都是大名鼎鼎的球星呀,灰熊队的康利同样位列其中,所以康利是绝对配得上他的大合同的,球风低调朴实却非常实用。
接下来将我们的关注重点放到一些特定的指标上,其中包括防守指标:防守篮板、抢断、盖帽;进攻指标:真实命中率、罚球命中率、进攻篮板、助攻等。获取子数据集的代码:
这其中发现了一个问题:读入的数据中的列名中如果含有百分号读入后都变成了点号
下面用cor()函数和cov()函数看一下防守指标之间的相关性协方差,然后用corrplot包来可视化防守指标之间的相关关系
试了三种相关性分析的方法,结果与python的有些许差异(前面回归分析的R方同样有差异)协方差也不太一样
下面用防守篮板,抢断和盖帽三个变量来拟合曲线
可以看到Adjusted R-squared: 0.6087,拟合的效果相比较单一的上场时间好了很多。原文接下来有添加了一些进攻指标进来进行拟合,拟合效果就更好了,最后得出的结论就是进攻和防守综合起来更适合用来预测球员的RPM。饶了一大圈最后的出的结论好像没说,当然球员攻防俱佳是最好的啦!不过还是感谢原作者为我们提供了这么有意思的学习素材。kaggle地址
Reference
ggplot2添加拟合曲线参考 https://zhidao.baidu.com/question/1578125039730493420.html
ggplot2更改图例参数参考 http://blog.sina.com.cn/s/blog_670445240102v250.html
OLS 回归参考 https://zhuanlan.zhihu.com/p/24803761