> 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.72GG converged in 1 iterations.i,lam= 2 101.8GG converged in 20 iterations.i,lam= 3 79.89GG converged in 26 iterations.i,lam= 4 62.69GG converged in 26 iterations.i,lam= 5 49.2GG converged in 26 iterations.i,lam= 6 38.61GG converged in 48 iterations.i,lam= 7 30.3GG converged in 57 iterations.i,lam= 8 23.78GG converged in 62 iterations.i,lam= 9 18.66GG converged in 55 iterations.i,lam= 10 14.64GG converged in 63 iterations.i,lam= 11 11.49GG converged in 60 iterations.i,lam= 12 9.02GG converged in 119 iterations.i,lam= 13 7.08GG converged in 122 iterations.i,lam= 14 5.55GG converged in 139 iterations.i,lam= 15 4.36GG converged in 147 iterations.i,lam= 16 3.42GG converged in 200 iterations.i,lam= 17 2.68GG converged in 374 iterations.i,lam= 18 2.11GG converged in 291 iterations.i,lam= 19 1.65GG converged in 602 iterations.i,lam= 20 1.3GG 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模型的变量重要性指标或图表?是否有更好的包可以生成同样容易在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('变量')+ylab('重要性')+theme_light() +coord_flip()