运行glinternet时出错:Stanford'的一个使用交互项自动选择模型的统计函数;黑斯蒂教授

运行glinternet时出错:Stanford'的一个使用交互项自动选择模型的统计函数;黑斯蒂教授,r,classification,logistic-regression,glmnet,R,Classification,Logistic Regression,Glmnet,glinternet是一个R包和一个函数,它实现了由著名的斯坦福统计学习教授特雷弗·黑斯蒂(Trevor Hastie)和他的前博士生开发的算法glinternet()自动检测交互项,因此,在具有许多变量的情况下,在可能的组合非常庞大的情况下,它在构建模型时非常有用 当我运行glinternet时,我得到一条错误消息,我在这里使用mtcarsbase R数据集重现该消息: data(mtcars) setDT(mtcars) glimpse(mtcars) x = as.matrix(mtcar

glinternet是一个R包和一个函数,它实现了由著名的斯坦福统计学习教授特雷弗·黑斯蒂(Trevor Hastie)和他的前博士生开发的算法
glinternet()
自动检测交互项,因此,在具有许多变量的情况下,在可能的组合非常庞大的情况下,它在构建模型时非常有用

当我运行
glinternet
时,我得到一条错误消息,我在这里使用
mtcars
base R数据集重现该消息:

data(mtcars)
setDT(mtcars)
glimpse(mtcars)
x = as.matrix(mtcars[, -c("am"), with = FALSE])
class(x)
y <- mtcars$am
class(y)

glinter_fit <- glinternet(x , y, numLevels = 2)
Error: pCat + pCont == ncol(X) is not TRUE
数据(mtcars)
setDT(mtcars)
一瞥(mtcars)
x=as.矩阵(mtcars[,-c(“am”),带=FALSE])
类别(x)

y这不是很清楚,但是您需要提供一个向量,该向量与预测列的数量一样长,每个元素表示每个列的类别数

在您的示例中,在
x
中,它都是连续的,因此我们:

glinternet(x,y,numLevels=rep(1,ncol(x)))

Call: glinternet(X = x, Y = y, numLevels = rep(1, ncol(x)))
     lambda objValue cat cont catcat contcont catcont
1  0.068900   0.1210   0    0      0        0       0
2  0.062800   0.1200   0    1      0        0       0
3  0.057100   0.1180   0    1      0        0       0
4  0.052000   0.1160   0    1      0        0       0
5  0.047300   0.1130   0    2      0        0       0
6  0.043100   0.1100   0    2      0        0       0
7  0.039200   0.1060   0    3      0        0       0
8  0.035700   0.1020   0    3      0        0       0
9  0.032500   0.0983   0    3      0        0       0
10 0.029600   0.0944   0    3      0        0       0
11 0.026900   0.0904   0    3      0        0       0
12 0.024500   0.0866   0    3      0        0       0
13 0.022300   0.0829   0    3      0        0       0
14 0.020300   0.0794   0    3      0        0       0
15 0.018500   0.0760   0    3      0        0       0
16 0.016800   0.0728   0    3      0        1       0
17 0.015300   0.0698   0    4      0        1       0
18 0.014000   0.0668   0    4      0        1       0
19 0.012700   0.0638   0    4      0        2       0
20 0.011600   0.0608   0    4      0        2       0
21 0.010500   0.0579   0    3      0        2       0
22 0.009580   0.0551   0    3      0        2       0
23 0.008720   0.0523   0    3      0        2       0
24 0.007940   0.0497   0    3      0        2       0
25 0.007230   0.0472   0    3      0        3       0
26 0.006580   0.0448   0    5      0        3       0
27 0.005990   0.0425   0    5      0        3       0
28 0.005450   0.0403   0    5      0        3       0
29 0.004960   0.0382   0    5      0        3       0
30 0.004520   0.0361   0    4      0        3       0
31 0.004110   0.0342   0    4      0        3       0
32 0.003740   0.0324   0    4      0        4       0
33 0.003410   0.0307   0    4      0        5       0
34 0.003100   0.0291   0    4      0        6       0
35 0.002820   0.0275   0    3      0        6       0
36 0.002570   0.0261   0    3      0        6       0
37 0.002340   0.0247   0    3      0        8       0
38 0.002130   0.0234   0    3      0        7       0
39 0.001940   0.0221   0    3      0        7       0
40 0.001760   0.0210   0    3      0        7       0
41 0.001610   0.0199   0    3      0        8       0
42 0.001460   0.0188   0    3      0        8       0
43 0.001330   0.0178   0    4      0       10       0
44 0.001210   0.0168   0    4      0       10       0
45 0.001100   0.0159   0    4      0       12       0
46 0.001000   0.0149   0    4      0       12       0
47 0.000914   0.0140   0    4      0       12       0
48 0.000832   0.0132   0    4      0       12       0
49 0.000757   0.0123   0    3      0       13       0
50 0.000689   0.0115   0    2      0       13       0

glinternet
的帮助说明
numLevels
是“每个变量的级别数,长度nVAR。对于连续变量设置为1”。因此,它应该是一个包含10个整数的向量,给出了
x
@eipi10中10列中每列的级别数,这在文档和阅读代码中都不是很清楚,尽管仔细阅读并牢记您的解释,
glinternet
现在正在快速发展。代码开始看起来像模糊检查,然后转到连续或分类赋值,向量用于进行拆分,因此所有内容都有意义。谢谢