2018cba如何安排赛程?
昨天早上起床看到了这个题目,中午就和同事讨论了一下,大概的方案是想出了个七八成,晚上回去就做了出来。 由于数据量太大,我用的软件是SPSS做预处理和建模,用R语言做预测(因为有一些指标需要回归),用STATA做最终结果的输出。 首先把CBA所有球队放到一起排阵列,然后从第一个赛季到本赛季的常规赛和季后赛都导入数据。
由于每个赛季比赛场次不尽相同,为了排除年份的影响,先对每支球队每一场比赛的各数值进行自然对数转换,再把转换后的值进行主成分分析,提取出特征值大于1的公因子,最后得到各个赛季组合值,作为模型的输入。(在SPSS操作过程中发现某些值存在异常,需要对个别值进行Winsorize处理,这里未显示) 在主成分分析之前,为了观察各变量是否存在多重共线性,我对变量进行了相关性检验,发现有些变量之间的相关系数甚至达到了0.9以上,因此删除了一部分变量(都是一些低阶统计量,如场均篮板、助攻等)。
在主成分分析之后,对变量进行回归时出现了“过度识别”问题。为了解决该问题,我在原始数据基础上添加了一步算法——对于每支球队的每一场比赛,假设一个虚拟球队,把其所在联盟其余球队的比赛胜负关系设置为该支球队的胜场,胜率设置成50%,然后把该支球队和虚拟球队的各方面数据相加,得到一个新的数字,把新数字代入到模型中即可。这样既解决了过度识别问题,又保证了模型的稳定性。 最终模型输出的结果是我截屏的几行,代表的是前四个特征值较大的公因子的得分,越高表示该项能力越强,反之则越弱。