R 基于Cox回归的弹性网络

R 基于Cox回归的弹性网络,r,bioinformatics,linear-regression,glm,glmnet,R,Bioinformatics,Linear Regression,Glm,Glmnet,我正在尝试对120个具有~100k特征的样本执行弹性网络和cox回归 我用glmnet包尝试了R,但R不支持大矩阵(似乎R不是为64位设计的)。此外,glmnet软件包确实支持稀疏矩阵,但出于任何原因,它们没有实现稀疏矩阵+cox回归 我不是在推动R,但这是迄今为止我发现的唯一工具。有人知道我可以用什么程序来计算大型模型上的弹性网络+cox回归吗?我确实读过,我可以使用支持向量机,但我需要先计算模型,由于上述限制,我不能在R中这样做 编辑: 有点澄清。我没有报告R中的错误,因为显然R受其矩阵可以

我正在尝试对120个具有~100k特征的样本执行弹性网络和cox回归

我用glmnet包尝试了R,但R不支持大矩阵(似乎R不是为64位设计的)。此外,glmnet软件包确实支持稀疏矩阵,但出于任何原因,它们没有实现稀疏矩阵+cox回归

我不是在推动R,但这是迄今为止我发现的唯一工具。有人知道我可以用什么程序来计算大型模型上的弹性网络+cox回归吗?我确实读过,我可以使用支持向量机,但我需要先计算模型,由于上述限制,我不能在R中这样做

编辑: 有点澄清。我没有报告R中的错误,因为显然R受其矩阵可以容纳多少元素的限制是正常的(至于glmnet不支持稀疏矩阵+cox,我不知道)。我不是在推动一个工具,但如果有另一个包或一个独立的程序,可以执行我所寻找的,它会更容易

如果有人有想法或以前做过,请分享你的方法(R、Matlab等)

编辑2:

以下是我用来测试的内容: 我制作了一个100x100000的矩阵。添加了标签并尝试使用model.matrix创建模型

data <- matrix(rnorm(100*100000), 100, 100000)
formula <- as.formula(class ~ .)
x = c(rep('A', 40), rep('B', 30), rep('C', 30))
y = sample(x=1:100, size=100)
class = x[y]
data <- cbind(data, class)
X <- model.matrix(formula, data)
先谢谢你!:)

编辑3: 多亏了@marbel,我才能够构建一个有效且不会变得太大的测试模型。我的问题似乎来自于在测试中使用cbind。

几点提示:

a) 这是一个相当小的数据集,R应该足够大。你所需要的只是一台现代化的计算机,也就是说有相当数量的RAM。我想4GB对于这样一个小的数据集应该足够了

这个包有Julia和Python版本,但我不确定这个模型是否可用

还有cox模型和GLMNET包的例子。还有一个名为
survival
的包

您的代码至少有两个问题:


  • 这不是您希望在R:
    数据中执行的操作这与其说是一个问题,不如说是一个PSA,因为您遇到了一个错误。除非你提供答案或指定一个问题,否则我会投票结束它。。。另外请注意,要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题与堆栈溢出无关。您在说什么?什么错误?我想问的是,是否有人知道一种工具可以执行不在R中的弹性net+cox回归(或者如何使R使用更大的矩阵)。至于你对工具的评论:我不认为这有什么关系。我正在努力使用大模型进行“弹性净值+考克斯回归”。如果你能描述一下你遇到的具体问题,也许会更容易帮助你。只需添加您使用的代码和从控制台获得的错误。
    base::matrix
    matrix
    包之间存在差异。我建议您查看
    矩阵
    包的文档数据集只有73MB。这只是一个编程问题。感谢您的快速响应。根据它的说法,稀疏矩阵还没有得到Cox的支持。我的内存是12GB。我会在1分钟内发布一个代码示例。真的,好的。在任何情况下,您的数据都很小。你应该没事的。
    Error: cannot allocate vector of size 37.3 Gb
    In addition: Warning messages:
    1: In terms.formula(object, data = data) :
      Reached total allocation of 12211Mb: see help(memory.size)
    2: In terms.formula(object, data = data) :
      Reached total allocation of 12211Mb: see help(memory.size)
    3: In terms.formula(object, data = data) :
      Reached total allocation of 12211Mb: see help(memory.size)
    4: In terms.formula(object, data = data) :
      Reached total allocation of 12211Mb: see help(memory.size)