我目前正在使用 R 的glmnet
包对曲棍球数据进行加权岭回归。我有一个带有虚拟变量的稀疏矩阵,除了一些其他预测变量(例如主场冰优势)之外,该矩阵表示球员在给定轮换中是在冰上进攻还是防守。我有一个权重向量,它是每个班次的长度。我的目标变量是在给定班次中发生的射速向量。
glmnet
调用如下:
glmnet(y = shot_rates, x = dummy_matrix, weights = shift_length, lambda = previously_obtained_lambda)
(Lambda 是通过对同一数据集的交叉验证获得的,该数据集也使用glmnet
.)
截至目前,分布完全是高斯分布,每个预测变量都偏向于均值为零。我希望为每个虚拟变量合并先验信息(先验均值),并可能为每个虚拟变量设置单独的 lambda 值,但我不确定如何去做。我相信我可以使用penalty.factors 来调整每个变量的lambdas,这样我们就可以暂时把它放在一边,专注于之前的方法。
我已经研究过使用该bayesglm
包并实现prior.means,但我对它的问题有两个:它很慢,它不接受稀疏矩阵,这使得事情变得非常慢。作为参考,我的虚拟变量矩阵包含大约 600,000 行和大约 2,000 列。
我如何才能有效地将先前的手段纳入我的分析?在此先感谢您的任何建议。