[英]Speed up glm in apply function in R
我的問題基於以下情況:
我有一個包含20行和> 100,000列的矩陣。 我想應用glm函數並提取每個列的似然比統計信息。 到目前為止,我已經嘗試以這種方式實施。 例如:
X <- gl(5, 4, length = 20); Y <- gl(4, 1, length = 20)
X <- factor(X); Y <- factor(Y)
matrix <- matrix(sample.int(15, size = 20*100000, replace = TRUE), nrow = 20, ncol = 100000)
apply(matrix, 2, function(x) glm(x ~ X+Y, poisson)$deviance)
有什么辦法可以加快計算時間嗎? 我發現由於glm中使用的每個向量根本都不大(長度為20的向量),因此speedglm在這里沒有幫助。
如果有人可以給我建議,我將很高興。 提前非常感謝您!
我進行了1000列的測試。 只花了2.4秒。
system.time(apply(matrix[,1:1000], 2, function(x) glm(x ~ X+Y, poisson)$deviance))
user system elapsed
2.40 0.00 2.46
我還嘗試了50,000,它似乎呈線性增長。
因此,您只需要等待4分鍾即可計算100,000個cols。 所以我看不到問題。 但是,瓶頸是調用gbm()函數100,000次的開銷。 盡量避免多次運行高級功能。
為了更快地運行,在工作量方面列為升序:
所有解決方案都不會花費您不到4分鍾的時間
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.