В настоящее время я использую пакет R glmnet
для выполнения взвешенной гребневой регрессии на хоккейных данных. У меня есть разреженная матрица с фиктивными переменными, обозначающими, находится ли игрок на льду в нападении или защите в течение данной смены, в дополнение к нескольким другим предикторам, таким как преимущество домашнего льда. У меня есть вектор весов, который является длиной каждого сдвига. Моя целевая переменная — это вектор скоростей выстрелов за данную смену.
Вызов glmnet
выглядит следующим образом:
glmnet(y = shot_rates, x = dummy_matrix, weights = shift_length, lambda = previously_obtained_lambda)
(Лямбда получается путем перекрестной проверки того же набора данных, что также выполняется с использованием glmnet
.)
На данный момент распределение полностью гауссово, и каждая предикторная переменная смещена к среднему значению, равному нулю. Я хочу включить предварительную информацию (предварительные средства) для каждой фиктивной переменной и, возможно, установить отдельные значения лямбда для каждой из них, но я не уверен, как мне это сделать. Я считаю, что могу использовать Penal.factors для настройки лямбда-выражений для каждой переменной, чтобы мы могли пока отложить это в сторону и сосредоточиться на предыдущих средствах.
Я изучил использование пакета bayesglm
и реализацию prior.means, но мои проблемы с ним двоякие: он медленный и не принимает разреженные матрицы, что значительно замедляет работу. Для справки: моя матрица фиктивных переменных содержит примерно 600 000 строк и примерно 2 000 столбцов.
Как я могу эффективно включить предыдущие средства в свой анализ? Спасибо заранее за любые предложения.