使用分层套索 (hierNet) 的变量重要性

Variable importance using hierarchical lasso (hierNet)

> set.seed(12)
> x=matrix(rnorm(100*10),ncol=10)
> x=scale(x,TRUE,TRUE)
> y=x[,1]+2*x[,2]+ x[,1]*x[,2]+3*rnorm(100)
> newx=matrix(rnorm(100*10),ncol=10)
> fit=hierNet(x,y,lam=50)
GG converged in 31 iterations.
> yhat=predict(fit,newx)
> 
> fit=hierNet.path(x,y)
i,lam= 1 129.72
GG converged in 1 iterations.
i,lam= 2 101.8
GG converged in 20 iterations.
i,lam= 3 79.89
GG converged in 26 iterations.
i,lam= 4 62.69
GG converged in 26 iterations.
i,lam= 5 49.2
GG converged in 26 iterations.
i,lam= 6 38.61
GG converged in 48 iterations.
i,lam= 7 30.3
GG converged in 57 iterations.
i,lam= 8 23.78
GG converged in 62 iterations.
i,lam= 9 18.66
GG converged in 55 iterations.
i,lam= 10 14.64
GG converged in 63 iterations.
i,lam= 11 11.49
GG converged in 60 iterations.
i,lam= 12 9.02
GG converged in 119 iterations.
i,lam= 13 7.08
GG converged in 122 iterations.
i,lam= 14 5.55
GG converged in 139 iterations.
i,lam= 15 4.36
GG converged in 147 iterations.
i,lam= 16 3.42
GG converged in 200 iterations.
i,lam= 17 2.68
GG converged in 374 iterations.
i,lam= 18 2.11
GG converged in 291 iterations.
i,lam= 19 1.65
GG converged in 602 iterations.
i,lam= 20 1.3
GG converged in 657 iterations.
> yhat=predict(fit,newx)
> hierNet.varimp(fit,x,y)
1Error in fit$th[-j, -j] : incorrect number of dimensions

使用 hierNet::hierNet.varimp 中的示例代码,我无法获得变量重要性的度量。我的语法有问题吗,或者是否有另一种可行的解决方案来获取 hierNet 模型的变量重要性指标或图?有没有更好的包可以生成层次模型,可以像 hierNet 一样轻松地在 igraph 界面中使用?如果是这样,我愿意接受建议。

您必须将有效的 hierNet 拟合(不是路径)传递给函数,如下所示

fit=hierNet(x,y,lam=50)
imp = hierNet.varimp(fit, x, y)

你也可以画出来

ggplot2::ggplot(as.data.frame(imp), aes(x=Predictor, y=Importance)) +
scale_x_continuous(limits = c(1, 10), breaks = seq(0, 10, by = 1)) +
geom_point( color="red", size=4, alpha=0.6)+
xlab('Variable')+
ylab(' Importance')+
theme_light() +
coord_flip()