确定每个玩家在 python 中的方差贡献

Determine variance contribution of each player in python

看了很多方法和帖子后,我还不清楚如何解决这个看似简单的问题。 我有以下数据集,其中包含 5 个玩家的分数。它的样本方差是2.98108.

PLAYER  |   SCORE
-------------------
Bernard |   22.66
Bernard |   27.365
Bernard |   22.814
Anton   |   25.012
Anton   |   23.676
Anton   |   23.954
Carine  |   24.722
Carine  |   24.026
Carine  |   24.335
Carine  |   24.05
Bernard |   23.925
Bernard |   24.355
Bernard |   26.699
Carine  |   27.999
David   |   28.701
David   |   22.57
David   |   22.365
David   |   25.49
David   |   26.757
David   |   23.878
David   |   24.609
David   |   22.803
Anton   |   25.227
Anton   |   25.348
Carine  |   27.523
Carine  |   28.38
Carine  |   28.628
Bernard |   26.651
Bernard |   25.377
Anton   |   27.767
Anton   |   24.81
Anton   |   24.835
Eloy    |   26.672
Eloy    |   25.683
Eloy    |   26.657
Eloy    |   24.463
Eloy    |   25.808
Eloy    |   25.414
Eloy    |   26.044
Eloy    |   25.619

我想确定每个玩家对整体方差的贡献程度。

Anton   |   Bernard |   Carine  |   David   |   Eloy
------------------------------------------------------                              
25.227  |   26.651  |   24.722  |   28.701  |   26.672
25.348  |   25.377  |   24.026  |   22.57   |   25.683
27.767  |   22.66   |   24.335  |   22.365  |   26.657
24.81   |   27.365  |   24.05   |   25.49   |   24.463
24.835  |   22.814  |   27.523  |   26.757  |   25.808
25.012  |   23.925  |   28.38   |   23.878  |   25.414
23.676  |   24.355  |   28.628  |   24.609  |   26.044
23.954  |   26.699  |   27.999  |   22.803  |   25.619

请注意,我没有任何目标变量:我没有将球员得分拟合到因变量。这使得(对我而言)难以使用诸如 shapley 值、sklearn.feature_selection.chi2 或 feature_importances_ 之类的方法,其中 fit 和 fit_transform 需要目标变量。

Scikit 的 PCA 给出了以下矩阵:

组件_:

-0.21261656 |   0.56000412  |   -0.19875582 |   0.77420244  |   -0.04791964
-0.31918083 |   -0.29286871 |   0.83464075  |   0.33964441  |   0.01918345
0.50226936  |   -0.55051268 |   -0.21507693 |   0.50440938  |   0.37943954
0.08884174  |   -0.33440461 |   -0.13381735 |   0.17548621  |   -0.9119091
0.76990287  |   0.4309671   |   0.44688451  |   0.00529465  |   -0.14759107

explained_variance_ratio_:

0.43725481  |   0.38896865  |   0.14361466  |   0.01989021  |   0.01027166

我想要 table 这样的结果:

Anton       |   Bernard     |   Carine     |    David       |   Eloy
-------------------------------------------------------------------------                           
0.20195141  |   0.18162131  |   0.30601668  |   0.15273025  |   0.15768035

告诉我 Carine 是最大的贡献者,占总方差的 30%,其余玩家依此类推。

我可以使用这些矩阵(分量和 explained_variance_ratio)来推断每个玩家对总方差的总贡献吗?如果可以,我该怎么做?

谢谢

由于每个玩家恰好有 8 个数据样本,将所有样本的(总体)均值的平方误差相加,然后首先由玩家对这些误差求和(每个 8 个样本,获得 5 个数字)并对这 5 个数字求和总和。将 5 个数字中的每一个除以这个总数,都会得到您想要的值。