glmmLasso 错误 "requires numeric/complex matrix/vector arguments"
glmmLasso error "requires numeric/complex matrix/vector arguments"
我正在尝试使用具有固定效果的逻辑 link 函数来学习用于套索估计的 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)
错误来自最后一条命令:"Error in n %*% s : requires numeric/complex matrix/vector arguments"。我理解错误本身,但在这种情况下我不理解它,因为 data.frame 本身都是数字,而 glmmLasso 包需要分解分组变量以获得固定效果。该错误似乎也发生在方程式中的所有变量子集(甚至删除因子变量)以及删除或更改其他选项时。
看来,默认情况下,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!
错误发生,因为包假设随机效应是正态分布。因子变量不符合此类规范,因为它们不是数字。
我正在尝试使用具有固定效果的逻辑 link 函数来学习用于套索估计的 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)
错误来自最后一条命令:"Error in n %*% s : requires numeric/complex matrix/vector arguments"。我理解错误本身,但在这种情况下我不理解它,因为 data.frame 本身都是数字,而 glmmLasso 包需要分解分组变量以获得固定效果。该错误似乎也发生在方程式中的所有变量子集(甚至删除因子变量)以及删除或更改其他选项时。
看来,默认情况下,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!
错误发生,因为包假设随机效应是正态分布。因子变量不符合此类规范,因为它们不是数字。