2

我正在尝试使用具有固定效果的逻辑链接函数来学习用于套索估计的 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 包需要将分组变量分解为固定效果。该错误似乎也发生在方程中的所有变量子集(甚至删除因子变量)以及删除或更改其他选项时。

4

1 回答 1

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!

错误发生,因为包假定随机效应是正态分布的。因子变量不适合这种规范,因为它们不是数字的。

于 2019-08-08T11:33:10.897 回答