Ошибка glmmLasso "требуются числовые / сложные матричные / векторные аргументы"
Я пытаюсь изучить механику пакета glmmLasso для оценки лассо с помощью функции логистической связи с фиксированными эффектами, но я не могу заставить фиктивный пример работать без ошибок.
library(glmmLasso)
y=rbinom(n = 21,size = 1,prob = .5)
x=rnorm(21)
year=rep(1:3, times=7)
ID=rep(1:7, each=3)
df=as.data.frame(cbind(y,x,ID,year))
library(glmmLasso)
lasso_fe=glmmLasso(y~x+as.factor(ID)+as.factor(year), family=binomial(link = logit), lambda=10, data = df)
Ошибка из последней команды: "Ошибка в n %*% s: требуются числовые / сложные матричные / векторные аргументы". Я понимаю саму ошибку, но не понимаю ее в этом контексте, так как сам data.frame является числовым, а пакет glmmLasso требует факторизации переменных группировки для фиксированных эффектов. Ошибка также, по-видимому, возникает для всех подмножеств переменных в уравнении (даже при удалении факторных переменных) и при удалении или изменении других параметров.
1 ответ
Получается, что по умолчанию glmmLasso
функция определяет случайные эффекты с той же формулой из фиксированных эффектов (т.е. glmmLasso(fix=formula, rnd=formula, ...)
.
Чтобы запустить его без оценки случайного эффекта, используйте rnd=NULL
:
> lasso_fe <- glmmLasso(
y~x+as.factor(ID)+as.factor(year),
rnd = NULL, # <- no r.e.
family=binomial(link = logit), lambda=10, data = df)
> lasso_fe
Call:
glmmLasso(fix = y ~ x + as.factor(ID) + as.factor(year), rnd = NULL,
data = df, lambda = 10, family = binomial(link = logit))
Fixed Effects:
Coefficients:
(Intercept) x as.factor(ID)2 as.factor(ID)3
-0.09531017 0.00000000 0.00000000 0.00000000
as.factor(ID)4 as.factor(ID)5 as.factor(ID)6 as.factor(ID)7
0.00000000 0.00000000 0.00000000 0.00000000
as.factor(year)2 as.factor(year)3
0.00000000 0.00000000
No random effects included!
Ошибка возникает, потому что пакет предполагает, что случайные эффекты распространяются нормально. Факторные переменные не подходят для такой спецификации, поскольку они не являются числовыми.